View
231
Download
0
Tags:
Embed Size (px)
Citation preview
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.
Graph eigenvalues and eigenvectors
1
4
3
2
5
0 1 1 0 11 0 1 0 01 1 0 1 00 0 1 0 11 0 0 1 0
1 0 -1 -1 1
1 0 -1 -1 1
-2 =
0
-1
1 -1
1
node = sum of nbrs-2(-1)=(1+1)
Graph eigenvalues and eigenvectors
1
4
3
2
5
0 1 1 0 11 0 1 0 01 1 0 1 00 0 1 0 11 0 0 1 0
1 0 -1 -1 1
1 0 -1 -1 1
-2 =
0
-1
1 -1
1
Are up to n eigenvalues, invariant under relabeling of vertices
node = sum of nbrs
Graph eigenvalues and eigenvectors
5
3
1
4
2
0 0 1 1 10 0 1 0 11 1 0 0 01 0 0 0 11 1 0 1 0
-1 -1 1 0 1
-1 -1 1 0 1
-2 =
0
-1
1 -1
1
Are up to n eigenvalues, invariant under relabeling of vertices
node = sum of nbrs
eigenvalues different -> graphs different
Graph eigenvalues and eigenvectors
5
3
1
4
2
0 0 1 1 10 0 1 0 11 1 0 0 01 0 0 0 11 1 0 1 0
-1 -1 1 0 1
-1 -1 1 0 1
-2 =
0
-1
1 -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
-0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04-0.03
-0.02
-0.01
0
0.01
0.02
0.03
v2(i)
v3(i)
If use v2(i), v3(i) as label of vertex i determined up to flips in sign of eigvecs
-0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04-0.03
-0.02
-0.01
0
0.01
0.02
0.03
-0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03-0.03
-0.02
-0.01
0
0.01
0.02
0.03
-0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03-0.03
-0.02
-0.01
0
0.01
0.02
0.03
-0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04-0.03
-0.02
-0.01
0
0.01
0.02
0.03
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:
.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
-.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:
label of node 2
1 = -2.00002 = -1.17013 = 0.00004 = 0.68895 = 2.4812
Distinguish verts when labels allow.Make signs cannonical when possible.
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
-.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:
Can only map to each other
Distinguish verts when labels allow.Make signs canonical when possible.
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
-.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:
Can only map to each otherFix signs so that labels are same
Distinguish verts when labels allow.Make signs canonical when possible.
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
-.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:
Can only map to each otherFix signs so that labels are same
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 -1v3 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)