什么是节点不变量,如何在我的程序中使用它们“修剪搜索树”来检查图同构?

时间:2015-07-03 12:45:38

标签: graph graph-theory networkx invariants isomorphism

对于一个项目,我正在编写一个与networkx一起工作的python程序,以创建一个NAUTY样式的同构检查程序。我的程序基于对Nauty的介绍here,其工作原理如下:

取两个图G和H,并根据程度为节点着色。 运行颜色细化算法,根据颜色类中每个节点的邻居细化图形的颜色。这对(G',H')成为我的搜索树的“根”,我将使用DFS算法。接下来,我个性化G'中属于最小颜色类的节点,其中包含多个元素,并使用分支方法生成新的树对(G'',H''),(G'' ,H''',...(G'',H ^(k))(k取决于颜色类的大小,例如,如果用g表示颜色类红色:[1,2,3]是G中的红色节点,[5,6,7]是H中的红色节点,那么我必须为1:5,1:6,1:7的对搜索树做一个分支,然后打开以后在我的搜索树中访问的新分支)。还有就是擦!我的树变得太大,太快 - 这是因为我没有使用上述链接的'node invariants and pruning'部分中描述的节点不变量。

有人可以解释一些我可以使用的节点不变量的例子吗?在StackExchange上,我在这里找不到多少帮助。我假设并使用我的节点颜色是节点不变量的事实,但对于强大的常规图形,这并不总是给我带来太多。有什么想法吗?

0 个答案:

没有答案