### 2.4. `igraph_isomorphic_bliss` — Graph isomorphism via BLISS

```int igraph_isomorphic_bliss(const igraph_t *graph1, const igraph_t *graph2,
igraph_bool_t *iso, igraph_vector_t *map12,
igraph_vector_t *map21,
igraph_bliss_sh_t sh1, igraph_bliss_sh_t sh2,
igraph_bliss_info_t *info1, igraph_bliss_info_t *info2);
```

This function uses the BLISS graph isomorphism algorithm, a successor of the famous NAUTY algorithm and implementation. BLISS is open source and licensed according to the GNU GPL. See http://www.tcs.hut.fi/Software/bliss/index.html for details. Currently the 0.35 version of BLISS is included in igraph.

Arguments:

 `graph1`: The first input graph, it is assumed to be undirected, directed graphs are treated as undirected too. The algorithm eliminates multiple edges from the graph first. `graph2`: The second input graph, it is assumed to be undirected, directed graphs are treated as undirected too. The algorithm eliminates multiple edges from the graph first. `iso`: Pointer to a boolean, the result is stored here. `map12`: A vector or `NULL` pointer. If not `NULL` then an isomorphic mapping from `graph1` to `graph2` is stored here. If the input graphs are not isomorphic then this vector is cleared, i.e. it will have length zero. `map21`: Similar to `map12`, but for the mapping from `graph2` to `graph1`. `sh1`: Splitting heuristics to be used for the first graph. See `igraph_bliss_sh_t`. `sh2`: Splitting heuristics to be used for the second graph. See `igraph_bliss_sh_t`. `info1`: If not `NULL`, information about the canonization of the first input graph is stored here. See `igraph_bliss_info_t` for details. `info2`: Same as `info1`, but for the second graph.

Returns:

 Error code.

Time complexity: exponential, but in practice it is quite fast.