【问题标题】:NetworkX: Approximate/Inexact Subgraph Isomorphism For Undirected Weighted GraphsNetworkX:无向加权图的近似/不精确子图同构
【发布时间】:2016-08-11 23:30:44
【问题描述】:

给定两个图(A 和 B),我试图根据边权重的差异确定是否存在与给定某个阈值的 A 匹配的 B 的子图。也就是说,如果我取每对相关边之间的差值之和,它将低于指定的阈值。 A 和 B 之间的顶点标签不一致,所以我只是依靠边缘权重。

A 会有点小(例如,最多 10 个),而 B 会更大(例如,最多 200 个)。

【问题讨论】:

  • 请提供您尝试过的一些代码,并说明此代码中的哪些问题,以便我们帮助您修复它。

标签: python networkx subgraph isomorphism


【解决方案1】:

我相信这两个软件包之一可能会有所帮助:

MATLAB 中的图匹配工具箱“使用仿射约束 (SMAC) 实现谱图匹配,可选择使用克罗内克双随机归一化”。它在网页上声明它“处理不同大小的图(子图匹配)” http://www.timotheecour.com/software/graph_matching/graph_matching.html

MATLAB 图形匹配工具箱中使用的算法基于 Timothee Cour、Praveen Srinivasan 和 Jianbo Shi 题为“平衡图匹配”的论文中描述的算法。该论文发表于 NIPS 2006。

此外,还有一个名为 Graph Matching Toolkit (GMT) 的工具包,它似乎支持容错子图匹配,因为它确实支持容错图匹配。它不是使用光谱法,而是有多种计算编辑距离的方法,然后我的印象是它通过给出最小编辑距离的argmax来找到最佳匹配。如果它不明确支持子图匹配并且您不关心效率,您可能只是搜索 B 的所有子图并使用 GMT 尝试在 A 中查找这些子图的匹配项。或者您可以只搜索B 的子图。 http://www.fhnw.ch/wirtschaft/iwi/gmt

不幸的是,这些似乎都不在 Python 中,而且它们似乎也不支持 networkx 的图形格式。但我相信您可能能够找到一个转换器,它将 networkx 图的表示更改为这些工具包可用的东西。然后你可以运行工具包并输出你想要的子图匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2022-08-03
    相关资源
    最近更新 更多