标记图的图同构问题


11

在未标记图的情况下,可以通过许多在实践中表现出色的算法来解决图同构问题。也就是说,尽管最坏情况下的运行时间是指数的,但通常具有多项式运行时间。

我希望在标记图的情况下情况类似。但是,我很难找到任何提出“实用高效”算法的参考。

备注:在这里,我们要求同构保留标签。也就是说,两个有限自动机/过程代数项之间的同构将暗示自动机/项实质上“等于节点重命名”。

我发现的唯一参考是Wikipedia中的参考,该参考指出标注图的同构问题可以在多项式上简化为普通图。然而,基础论文更多地是关于复杂性理论,而不是实用算法。

我错过了一些东西,或者确实是没有有效的“启发式”算法来确定两个标记图是否同构的情况?

任何提示或参考都很好。


3
最好引用维基百科文章和您找到的论文,以免给我们带来麻烦。
2014年

1
“保存标签”的同构是什么意思?在自动机的上下文中,顶点标签是不同的。因此,任何同构都会琐碎地“保留标签”,即源中具有不同标签的两个顶点在图像中也必须具有不同标签。该问题与普通图同构问题相同。如果您要表示同构必须将一个顶点映射到具有相同标签的一个顶点,则当顶点标签始终是不同的时,该算法就显得微不足道了:只需检查标签上的身份映射是否为同构即可。
David Richerby,2014年

如果要考虑几个顶点可能具有相同标签且顶点图像必须具有与原始顶点相同的标签的情况,通常将其称为彩色图之间同构。在这种情况下,可以通过用小工具替换颜色来简单地减少通用地理标志。通过应用精心选择的小工具,然后使用标准GI算法,您可能会得到一个不错的实用算法。
David Richerby,2014年

如果存在一个普通的有向图同构同时保留标签的等价类,您是否真的不愿意将两个带有边缘标记的有向图视为同构?在您的示例中,假设这两个都是FA,则和接受的语言虽然不同(也许),但实际上彼此之间都是同态的图像,分别是。小号'一个Ç b dSSac,bd
Rick Decker 2014年

4
问题很简单,就是GI完整的(只需选择所有边都有相同标签的图形)。为了表明它并不比图同构更难,从标签到整数(构建一个1:1映射然后在每个中间添加用符号标记的边是顶点()上的完整图形,并且在边的箭头侧还有一个额外的节点。当且仅当原始自动机是同构的时,结果图才是同构的。小号小号ķ 小号g:a1,b2,c3,...)sg(s)Kg(s)
2014年

Answers:


5

您可能对本文感兴趣:

艾丹·霍根(Aidan Hogan): 在保留同构性的同时撇开空白节点。 WWW 2015:430-440

它具有用于测试RDF图的同构性的算法(基于Nauty),RDF图实际上是有向图,可能包含固定标签。该算法将标签考虑在内以缩小搜索空间。

如果可以将带有标签的输入图表示为RDF图,则可以尝试使用关联的软件包“ blabel”来测试同构。


4

我发现该算法属于k维Weisfeiler-Lehman算法的类别,对于规则图它会失败。在这里了解更多:

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

原始帖子如下:

几年前,我针对此问题(带有标签的图形同构)创建了一种简单灵活的算法。

我将其命名为“ Powerhash”,并且要创建算法,需要两个方面的知识。第一个是功率迭代图算法,也用于PageRank。第二个功能是可以用我们想要的任何东西替换幂迭代的内部阶跃函数。我将其替换为一个函数,该函数在每个迭代以及每个节点上执行以下操作:

  • 排序节点邻居的哈希值(来自先前的迭代)
  • 哈希连接的排序哈希
  • 用新计算的哈希值替换节点的哈希值

第一步,节点的哈希值受其直接邻居影响。第二步,节点的哈希值受到距离其邻居2跳的影响。在第N步,节点的哈希将受到其周围N跳的影响。因此,您只需要为N = graph_radius步骤继续运行Powerhash。最后,图中心节点的哈希将受到整个图的影响。

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

有关此的更多信息,请在这里查看我的文章:

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

上面的算法是在“ madIS”功能关系数据库中实现的。您可以在此处找到算法的源代码:

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


只是警告您的算法是多项式,因此,如果它是完整的,那么您刚刚解决了CS中一个长期存在的关于GI在P中的开放问题。 。)
badroit

该算法是近似的并且肯定不完整(我也在博客文章中这样说)。它起作用的原因是它产生的散列非常大,因此在具有数百万个图的数据库中,错误的正哈希冲突的可能性将是很小的。如果您设法找到任何假阳性哈希冲突的情况,我将非常有兴趣了解它。原因(使用加密散列时)是,您将设法“破坏”了加密散列函数。
estama '17

详细说明哈希冲突的可能性有多小。我认为256位的加密散列足以确保世界上所有不同的文件都不会散列为相同的值(例如,git使用160位的SHA-1来保证这一点)。来自Powerhash的哈希将是128位* graph_node_count(使用MD5哈希)。因此,实际上,您将永远无法创建足够的图形(在此Universe中)以找到它们之间的哈希冲突。
estama '17

1
我的意思是,即使假设没有哈希冲突,您的算法也会给出误报。文献中已经提出了许多多项式时间算法来实现图形同构,并且所有算法都给出了错误的肯定。此处的相关问题:cs.stackexchange.com/questions/50939/…
badroit

1
感谢您的讨论。通过更多的研究,我发现上面的算法属于k维Weisfeiler-Lehman算法,而对于正则图则失败。有关更多信息,请访问:dabacon.org/pontiff/?p=4148
estama
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.