Gary’s Work on Graph Isomorphism
Gary’s Work on Graph Isomorphism. 1. 1. 4. 8. 6. 5. 2. 5. 2. 7. 8. 3. 7. 4. 3. 6. Gary’s Papers on Graph Isomorphism. On the n log n isomorphism technique: a preliminary report. ACM STOC, 1978. Isomorphism testing for graphs of bounded genus. ACM STOC, 1980
Gary’s Work on Graph Isomorphism
E N D
Presentation Transcript
Gary’s Work on Graph Isomorphism 1 1 4 8 6 5 2 5 2 7 8 3 7 4 3 6
Gary’s Papers on Graph Isomorphism On the n log n isomorphism technique: a preliminary report. ACM STOC, 1978. Isomorphism testing for graphs of bounded genus. ACM STOC, 1980 Isomorphism of graphs which are pairwise k-separable. Information & Control, 1983. Isomorphism of k-contractible graphs: a generalization of bounded valence and bounded genus. Information & Control, 1983.
2 1 3 5 4 Graph eigenvalues and eigenvectors 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0
2 1 0 -1 -1 1 1 0 -1 -1 1 1 3 5 4 Graph eigenvalues and eigenvectors 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 -1 -2 = -1 1 node = sum of nbrs -2(-1)=(1+1)
2 1 0 -1 -1 1 1 0 -1 -1 1 1 3 5 4 Graph eigenvalues and eigenvectors 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 -1 -2 = -1 1 node = sum of nbrs Are up to n eigenvalues, invariant under relabeling of vertices
-1 -1 1 0 1 -1 -1 1 0 1 Graph eigenvalues and eigenvectors 0 4 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 -1 -2 = 5 1 2 3 -1 1 node = sum of nbrs Are up to n eigenvalues, invariant under relabeling of vertices eigenvalues different -> graphs different
-1 -1 1 0 1 -1 -1 1 0 1 Graph eigenvalues and eigenvectors 0 4 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 -1 -2 = 5 1 2 3 -1 1 When are n eigenvalues, each has one-dimensional eigenspace: (cv) = A(cv) Can fix v to have norm 1, but cannot normalize sign
Testing isomorphism when G and H have same eigenvalues Compute eigenvectors of G: v1, v2, …, vn and eigenvectors of H: u1, u2, …, un Goal: Label vertex i by v1(i), v2(i), …, vn(i) But, eigenvectors only determined up to sign.
Embedding of graph using two eigvecs v3(i) v2(i)
If use v2(i), v3(i) as label of vertex i determined up to flips in sign of eigvecs
Testing isomorphism when G and H have same eigenvalues Isomorphic iff are signs s.t. set of labels are same. v1: v2: v3: v4: v5: l1 = -2.0000 l2 = -1.1701 l3 = 0.0000 l4 = 0.6889 l5 = 2.4812 .50 0 -.50 .50 -.50 -.43 .74 -.43 .12 .12 .50 0 -.50 -.50 .50 .18 .52 .18 -.58 -.58 .53 .43 .53 .36 .36 label of node 2 -.50 .50 .50 -.50 0 -.12 -.12 .43 .43 -.74 .50 -.50 .50 -.50 0 -.58 -.58 .18 .18 .52 .36 .36 .53 .53 .43 § u1: § u2: § u3: § u4: § u5:
v1: v2: v3: v4: v5: .50 0 -.50 .50 -.50 -.43 .74 -.43 .12 .12 .50 0 -.50 -.50 .50 .18 .52 .18 -.58 -.58 .53 .43 .53 .36 .36 Distinguish verts when labels allow. Make signs cannonical when possible. Can only map to each other -.50 .50 .50 -.50 0 -.12 -.12 .43 .43 -.74 .50 -.50 .50 -.50 0 -.58 -.58 .18 .18 .52 .36 .36 .53 .53 .43 § u1: § u2: § u3: § u4: § u5:
v1: v2: v3: v4: v5: .50 0 -.50 .50 -.50 -.43 .74 -.43 .12 .12 .50 0 -.50 -.50 .50 .18 .52 .18 -.58 -.58 .53 .43 .53 .36 .36 Distinguish verts when labels allow. Make signs canonical when possible. Can only map to each other Fix signs so that labels are same -.50 .50 .50 -.50 0 -.12 -.12 .43 .43 -.74 .50 -.50 .50 -.50 0 -.58 -.58 .18 .18 .52 .36 .36 .53 .53 .43 § u1: § u2: § u3: § u4: § u5:
v1: v2: v3: v4: v5: .50 0 -.50 .50 -.50 -.43 .74 -.43 .12 .12 .50 0 -.50 -.50 .50 .18 .52 .18 -.58 -.58 .53 .43 .53 .36 .36 Distinguish verts when labels allow. Make signs canonical when possible. Can only map to each other Fix signs so that labels are same -.50 .50 .50 -.50 0 .12 .12 -.43 -.43 .74 .50 -.50 .50 -.50 0 -.58 -.58 .18 .18 .52 .36 .36 .53 .53 .43 § u1: § u2: § u3: § u4: § u5:
More formally, Partition vertices into classes, initially by |vk(i)| If some class has more positive than negative entries in a vk, make sign canonical. (2, -2, 1, 1, 1, -1, -1, -1) Partition vertices into classes by vk(i), for vk with canonical signs.
More formally, Partition vertices into classes, initially by |vk(i)| If some class has more positive than negative entries in a vk, make sign canonical. (2, -2, 1, 1, 1, -1, -1, -1) Partition vertices into classes by vk(i), for vk with canonical signs. Do same for all products vk1(i)*vk2(i)*...*vkr(i)
For all products? Either vk1(i)*vk2(i)*...*vkr(i) splits class: v1: 1 1 1 1 -1 -1 -1 -1 v2: 1 1 -1 -1 -1 -1 1 1 v3: 1 -1 1 -1 1 1 -1 -1 v3 v3: 1 -1 -1 1 -1 -1 -1 -1 or vkr = product of some of vk1*vk2*...*vkr-1 on that class. v1: 1 1 1 1 -1 -1 -1 -1 v2: 1 1 -1 -1 -1 -1 1 1 v4: 1 1 -1 -1 1 1 -1 -1 v4 = v1 v2
When finished All classes have form v1: 1 1 1 1 -1 -1 -1 -1 v2: 1 1 -1 -1 -1 -1 1 1 v4: 1 1 -1 -1 1 1 -1 -1 v4 = v1 v2 Can solve for all automorphisms of G, and all isomorphisms of G and H by linear eqns over GF(2)
What about high eigenvalue multiplicity? Worst case: Strongly regular graphs Are two general families: Latin Square graphs and Steiner Triple Systems On the n log n isomorphism technique: a preliminary report. ACM STOC, 1978.