图同构启发式解

时间:2015-04-19 05:38:15

标签: algorithm graph heuristics isomorphism

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

对于诸如学位常规图之类的情况,这显然会产生误报。我希望找到另一种廉价可实现的(时间和空间受限的)启发式算法,它可以切割WL算法的角落情况。基本上我正在寻找一对易于实现的启发式方法,它们之间会产生边缘误报。

我应该看看除WL算法之外的哪种启发式算法?

谢谢!

4 个答案:

答案 0 :(得分:0)

可能会考虑本文中讨论的最小色彩最短路径不变量:http://www.academia.edu/5111652/A_new_refinement_procedure_for_graph_isomorphism_algorithms

答案 1 :(得分:0)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我发现该算法属于k维Weisfeiler-Lehman算法的类别,并且它失败了常规图。更多信息:

http://dabacon.org/pontiff/?p=4148

原帖如下:

我已经解决了这个问题,在图表数据库中找到了同构图(含有化学成分)。

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

算法的工作方式是:

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

  • 对节点的邻居的哈希值进行排序
  • 哈希连续排序的哈希
  • 用新计算的哈希
  • 替换节点的哈希值

第一步,节点的哈希受其直接邻居的影响。在第二步,节点的哈希受到距离它的2跳的邻域的影响。在第N步,节点的散列将受到其周围的邻域N跳的影响。所以你只需要继续运行Powerhash for N = graph_radius步骤。最后,图中心节点的哈希将受到整个图的影响。

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

这里有更多背景资料:

https://plus.google.com/114866592715069940152/posts/fmBFhjhQcZF

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

https://github.com/madgik/madis/blob/master/src/functions/aggregate/graph.py