免责声明:我对图论完全是个新手,也不确定这个问题应该发在SO、Math SE等哪里。
给定两个邻接矩阵A和B,如何判断A和B是否同构。
例如,A和B不同构,而C和D同构。
A = [ 0 1 0 0 1 1 B = [ 0 1 1 0 0 0
1 0 1 0 0 1 1 0 1 1 0 0
0 1 0 1 0 0 1 1 0 1 1 0
0 0 1 0 1 0 0 1 1 0 0 1
1 0 0 1 0 1 0 0 1 0 0 1
1 1 0 0 1 0 ] 0 0 0 1 1 0 ]
C = [ 0 1 0 1 0 1 D = [ 0 1 0 1 1 0
1 0 1 0 0 1 1 0 1 0 1 0
0 1 0 1 1 0 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0 0 1
0 0 1 1 0 1 1 1 0 0 0 1
1 1 0 0 1 0 ] 0 0 1 1 1 0 ]
(sorry for this ugly notation, I'm not quite sure how to draw matrices on SO)
这是我开始设计算法的方式(请原谅我缺乏数学严谨性),请帮助我完善/纠正!
- 如果 A 的大小(边数,在这种情况下为 1 的数量)不等于 B 的大小 => 图形不同构
- 对于 A 的每个顶点,计算其度数并查找与其具有相同度数的未匹配的 B 中的顶点。如果没有匹配 => 图形不同构。
- 既然我们不能快速证明 A 和 B 不同构,下一步是什么?尝试对 A 中的每条线路进行排列直到 A 与 B 匹配是否正确?这个我真的不确定...