【发布时间】:2012-08-20 18:18:35
【问题描述】:
我正在寻找执行以下任务的算法的 Python 实现:
给定两个可能包含循环及其根的有向图, 为两张图的相似度打分。
(Python的difflib可以对两个序列执行的方式)
希望这样的实现存在。否则,我会尝试自己实现一个算法。在这种情况下,最好的算法是什么(就简单性而言)。
算法的工作方式对我来说并不重要,尽管它的复杂性很重要。 此外,使用不同数据结构的算法也是可以接受的,只要我描述的图可以用这个 DS 表示。
我会强调,实现会更好。
编辑:
似乎同构算法不相关。有人建议图形编辑距离更重要,这将我的搜索范围缩小到执行图形编辑距离或将图形减少为树然后执行树编辑距离的解决方案。
节点本身由几行汇编代码组成。
【问题讨论】:
-
“相似性”对我来说似乎有点模糊。我不知道的有向图的相似性是否具有普遍意义?
-
您查看过各种Python graph libraries 是否已经实现了某些功能?
-
@gnibbler 感谢您的回复。通过相似性,我的意思是:如果两个图的节点之间存在双射(同构),则图是相等的。如果它们的编辑距离很短,则图是相似的。如果图都具有最大公共子图,则图有点相似,依此类推。link
-
@YaronK 每两个非空图都有一个最大公共子图,当然除非它们被标记
-
@MartijnPieters 我已经考虑过 NetworkX 和 igraph。它们都允许检查同构,无论是否存在,尽管它们都不允许量化相似性。