# Isomorphism¶

 `is_isomorphic`(G1, G2[, node_match, edge_match]) Returns True if the graphs G1 and G2 are isomorphic and False otherwise. `could_be_isomorphic`(G1, G2) Returns False if graphs are definitely not isomorphic. Returns False if graphs are definitely not isomorphic. Returns False if graphs are definitely not isomorphic.

## Tree Isomorphism¶

An algorithm for finding if two undirected trees are isomorphic, and if so returns an isomorphism between the two sets of nodes.

This algorithm uses a routine to tell if two rooted trees (trees with a specified root node) are isomorphic, which may be independently useful.

This implements an algorithm from: The Design and Analysis of Computer Algorithms by Aho, Hopcroft, and Ullman Addison-Wesley Publishing 1974 Example 3.2 pp. 84-86.

A more understandable version of this algorithm is described in: Homework Assignment 5 McGill University SOCS 308-250B, Winter 2002 by Matthew Suderman http://crypto.cs.mcgill.ca/~crepeau/CS250/2004/HW5+.pdf

 `rooted_tree_isomorphism`(t1, root1, t2, root2) Given two rooted trees `t1` and `t2`, with roots `root1` and `root2` respectivly this routine will determine if they are isomorphic. `tree_isomorphism`(t1, t2) Given two undirected (or free) trees `t1` and `t2`, this routine will determine if they are isomorphic.