480 likes | 1.5k Views
Graph Isomorphism. Network Algorithms 2005. Graph Isomorphism. Two graphs G=(V,E) and H=(W,F) are isomorphic if there is a bijective function f: V ® W such that for all v , w in V: { v,w } Î E Û {f( v ),f( w )} Î F . Variant for labeled graphs.
E N D
Graph Isomorphism Network Algorithms 2005 Netwerk Algorithms: Graph Isomorphism
Graph Isomorphism • Two graphs G=(V,E) and H=(W,F) are isomorphic if there is a bijective function f: V ® W such that for all v, w in V: • {v,w} Î E Û {f(v),f(w)} Î F Netwerk Algorithms: Graph Isomorphism
Variant for labeled graphs • Let G = (V,E), H=(W,F) be graphs with vertex labelings l: V ® L, l’® L. • G and H are isomorphic labeled graphs, if there is a bijective function f: V ® W such that • For all v, w in V: {v,w} Î E Û {f(v),f(w)} Î F • For all v in V: l(v) = l’(f(v)). • Application: organic chemistry: • determining if two molecules are identical. Netwerk Algorithms: Graph Isomorphism
Complexity of graph isomorphism • Problem is in NP, but • No NP-completeness proof is known • No polynomial time algorithm is known If P ¹ NP ? NP-complete Graph isomorphism P NP Netwerk Algorithms: Graph Isomorphism
Isomorphism-complete • Problems are isomorphism-complete, if they are `equally hard’ as graph isomorphism • Isomorphism of bipartite graphs • Isomorphism of labeled graphs • Automorphism of graphs • Given a graph G=(V,E), is there a bijective function f: V ® V, not the identity, with for all v, w in V: • {v,w} in E, if and only if {f(v),f(w)} in E. Netwerk Algorithms: Graph Isomorphism
More isomorphism complete problems • Finding a graph isomorphism f • Isomorphism of semi-groups • Isomorphism of finite automata • Isomorphism of finite algebra’s • Isomorphism of • Connected graphs • Directed graphs • Regular graphs • Perfect graphs • Chordal graphs • Graphs that are isomorphic with their complement Netwerk Algorithms: Graph Isomorphism
Special cases are easier • Polynomial time algorithms for • Graphs of bounded degree • Planar graphs • Trees • Expected polynomial time for random graphs This course Netwerk Algorithms: Graph Isomorphism
Iterative vertex partition heuristicthe idea • Partition the vertices of G and H in classes • Each class for G has a corresponding class for H. • Property: vertices in class must be mapped to vertices in corresponding class • Refine classes as long as possible • When no refinement possible, check all possible ways that `remain’. Netwerk Algorithms: Graph Isomorphism
Iterative vertex partition heuristic • If |V| ¹ |W|, or |E| ¹ |F|, output: no. Done. • Otherwise, we partition the vertices of G and H into classes, such that • Each class for G has a corresponding class for H • If f is an isomorphism from G to H, then f(v) belongs to the class, corresponding to the class of v. • First try: vertices belong to the same class, when they have the same degree. • If f is an isomorphism, then the degree of f(v) equals the degree of v for each vertex v. Netwerk Algorithms: Graph Isomorphism
Scheme • Start with sequence SG = (A1) of subsets of G with A1=V, and sequence SH = (B1) of subsets of H with B1=W. • Repeat until … • Replace Aiin SG by Ai1,…,Air and replace Bi in SH by Bi1,…,Bir. • Ai1,…,Airis partition of Ai • Bi1,…,Biris partition of Bi • For each isormorphism f: v in Aij if and only if f(v) in Bij Netwerk Algorithms: Graph Isomorphism
Possible refinement • Count for each vertex in Ai and Bi how many neighbors they have in Aj and Bj for some i, j. • Set Ais= {v in Ai | v has s neighbors in Aj}. • Set Bis= {v in Bi | v has s neighbors in Bj}. • Invariant: for all v in the ith set in SG, f(v) in the ith set in SH. • If some |Ai| ¹ |Bi|, then stop: no isomorphism. Netwerk Algorithms: Graph Isomorphism
Other refinements • Partition upon other characteristics of vertices • Label • Number of vertices at distance d (in a set Ai). • … Netwerk Algorithms: Graph Isomorphism
After refining • If each Ai contains one vertex: check the only possible isomorphism. • Otherwise, cleverly enumerate all functions that are still possible, and check these. • Works well in practice! Netwerk Algorithms: Graph Isomorphism
Isomorphism on trees • Linear time algorithm to test if two (labeled) trees are isomorphic. • Algorithm to test if two rootedtrees are isomorphic. • Used as a subroutine for unrooted trees. Netwerk Algorithms: Graph Isomorphism
Rooted tree isomorphism • For a vertex v in T, let T(v) be the subtree of T with v as root. • Level of vertex: distance to root. • If T1 and T2 have different number of levels: not isomorphic, and we stop. Otherwise, we continue: Netwerk Algorithms: Graph Isomorphism
Structure of algorithm • Tree is processed level by level, from bottom to root • Processing a level: • A long labelLL(v) for each vertex is computed • This is transformed to a short label L(v) • Vertices in the same layer whose subtrees are isomorphic get the same labels: • If v and w on the same level, then • L(v)=L(w), if and only if T(v) and T(w) are isomorphic with an isomorphism that maps v to w. Netwerk Algorithms: Graph Isomorphism
Labeling procedure • For each vertex, get the set of labels assigned to its children. • Sort these sets. • Bucketsort the pairs (v, L(w)) for T1, w child of v • Bucketsort the pairs (v, L(w)) for T2, w child of v • For each v, we now have a long label LL(v) which is the sorted set of labels of the children. • Use bucketsort to sort the vertices in T1 and T2 such that vertices with same long label are consecutive in ordering. Netwerk Algorithms: Graph Isomorphism
On sorting w.r.t. the long lists (1) • Sort the nodes in the layer on the number of children they have. • Linear time. (Counting sort / Radix sort.) Netwerk Algorithms: Graph Isomorphism
On sorting w.r.t. the long lists (2) • Let q be the maximum length of a long list • Repeat • Distribute among buckets the nodes with at least q children, with respect to the qth label in their long list • Nodes distributed in buckets in earlier round are taken here in the order as they appear in these buckets. • The sorted list of pairs (j,i) is used to skip empty buckets in this step. • q --; • Until q=0. Netwerk Algorithms: Graph Isomorphism
After vertices are sorted with respect to long label • Give vertices with same long label same short label (start counting at 0), and repeat at next level. • If we see that the set of labels for a level of T1 is not equal to the set for the same level of T2, stop: not isomorphic. Netwerk Algorithms: Graph Isomorphism
Time • One layer with n1 nodes with n2 nodes in next layer costs O(n1 + n2) time. • Total time: O(n). Netwerk Algorithms: Graph Isomorphism
Unrooted trees • Center of a tree • A vertex v with the property that the maximum distance to any other vertex in T is as small as possible. • Each tree has a center of one or two vertices. • Finding the center: • Repeat until we have a vertex or a single edge: • Remove all leaves from T. • O(n) time: each vertex maintains current degree in variable. Variables are updated when vertices are removed, and vertices put in set of leaves when their degree becomes 1. Netwerk Algorithms: Graph Isomorphism
Isomorphism of unrooted trees • Note: the center must be mapped to the center • If T1 and T2 both have a center of size 1: • Use those vertices as root. • If T1 and T2 both have a center of size 2: • Try the two different ways of mapping the centers • Otherwise: not isomorphic. • 1 or 2 calls to isomorphism of rooted trees: O(n). Netwerk Algorithms: Graph Isomorphism
Conclusions • Similar methods work for finding automorphisms • We saw: heuristic for arbitrary graphs, algorithm for trees • There are algorithms for several special graph classes (e.g., planar graphs, graphs of bounded degree,…) Netwerk Algorithms: Graph Isomorphism