Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 图同构启发式解_Algorithm_Graph_Heuristics_Isomorphism - Fatal编程技术网

Algorithm 图同构启发式解

Algorithm 图同构启发式解,algorithm,graph,heuristics,isomorphism,Algorithm,Graph,Heuristics,Isomorphism,我试图实现一个启发式解决方案,从给定的一组图中识别同构图的类。目前,我正在用相邻节点的多重度集(WL算法)标记每个节点 对于度正则图这样的情况,这显然会产生误报。我希望找到另一种便宜的可实现(时间和空间受限)的启发式方法,它可以突破WL算法的局限性。本质上,我正在寻找一对易于实现的启发式算法,它们之间会产生边际误报 除了WL算法,我应该看哪种启发式算法 谢谢 > P>可以考虑本文中讨论的最小有色最短路径不变量:< P>检验VF2算法: 有一个C++库,它实现了VF2: VF2与其他几种算法的比

我试图实现一个启发式解决方案,从给定的一组图中识别同构图的类。目前,我正在用相邻节点的多重度集(WL算法)标记每个节点

对于度正则图这样的情况,这显然会产生误报。我希望找到另一种便宜的可实现(时间和空间受限)的启发式方法,它可以突破WL算法的局限性。本质上,我正在寻找一对易于实现的启发式算法,它们之间会产生边际误报

除了WL算法,我应该看哪种启发式算法


谢谢

> P>可以考虑本文中讨论的最小有色最短路径不变量:

< P>检验VF2算法:

有一个C++库,它实现了VF2:

VF2与其他几种算法的比较:

另一个相对便宜的不变量是顶点所属的循环列表。当然,这需要在图中找到循环,但有许多算法可以做到这一点。

我发现该算法属于k维Weisfeiler-Lehman算法的范畴,而在常规图中它失败了。欲了解更多信息,请点击此处:

原职如下:

我一直致力于在图形数据库(包含化学成分)中查找同构图的问题

简言之,该算法使用幂迭代方法创建图的散列。可能存在误报的哈希冲突,但发生这种冲突的概率非常小(我没有与成千上万的图发生过任何此类冲突)

该算法的工作方式如下:

进行N次迭代(其中N是图的半径)。在每次迭代和每个节点上:

  • 对节点邻居的哈希进行排序
  • 散列连接的排序散列
  • 用新计算的哈希替换节点的哈希
在第一步中,节点的哈希值受其直接邻居的影响。在第二步中,节点的哈希值受距离它2跳的邻域的影响。在第N步,节点的散列将受其周围的邻域N跳的影响。因此,您只需要继续为N=graph\u radius步骤运行Powerhash。最终,图中心节点的哈希将受到整个图的影响

要生成最终散列,请对最后一步的节点散列进行排序并将它们连接在一起。之后,您可以比较最后的散列以确定两个图是否同构。如果有标签,则将其添加到为每个节点(以及在每个步骤)计算的内部哈希中

这里有更多的背景:

您可以在此处找到它的源代码:


您的图是否仅限于特定的域?它们只是简单的图。就是这样。这个算法可能就是你想要的答案。这个算法可能就是你想要的答案。我不允许使用图书馆(课堂作业)。我将尝试自己实施一些事情。VF2是我一直在关注的东西。powerhash算法的第2版可以处理常规图形和设计用来愚弄启发式算法的图形,如Fuer gadgets: