首页 > 编程知识 正文

隐性数对删减法(汤家凤数列极限)

时间:2023-05-03 16:45:53 阅读:72596 作者:1528

判断两幅图是否同构是一个经典问题。

nauty算法作为目前流行的主流算法,具有效率高、剪枝力强等优点。 当然,在特定情况下将不起作用。

该算法的概念提出于20世纪80年代,但发展至今仍是一种不可忽视的方法。

我查了中文网络,但是找不到详细的介绍。 在堆栈溢出中进行问答; 找到了a。 按照帖子的回复,我找到了算法原作者自制的网站。 例如,得到了至宝。

结合离散数学,得出了该算法的大致流程。 总结如下。

nauty算法:判断两幅图是否同构。

想法:

设置给两幅图编号的编号系统。 如果与两幅图对应的正则编号相同,则两幅图为同形。

设置号码系统:

1 )按照任意节点的不同颜色的相邻节点的数量相同的方式分割图表。

2 )对于包含节点数大于1的部分集合的再分割,将所有部分集合的要素数转化为1。

3 )上溯,得到第二个划分。 比较两种划分方式,得到置换群信息,利用该信息进行剪枝。

4 )上溯,得到第三个划分,再得到一些置换群的信息,再进行剪枝。

5 )最终剩下的划分结果是该图可行的命名方式。 选择其中最大的词典之一作为正则编号,与其他图进行对照。

剪枝过程中还利用了【节点不变量】的信息。 具体来说,用一个函数评价某个节点的【节点不变量】。

如果深度相同且一个节点的函数值高于另一个节点,则常规编号将显示在该节点的子树中。

在相同深度,如果一个节点的函数值不等于另一个节点,则两个子树不同。

如果有两个节点的组相同,则两个节点的子树具有对应的等价项。

虽然部分理解有偏差,但对该算法感兴趣的人可以通过作者自制的网站了解详细内容。 里面有漂亮的PPT,排版也很好。

另外,nauty算法剪枝的核心是求解自同构群,这个过程在网站搜索树一栏中也有详细的描述,与基础群论知识相结合比较容易理解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。