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.