如何在两个图之间过滤相同的子网[networkx]

chy5wohz  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(412)

我正在尝试创建两个图,删除它们之间相同的网络。
图1:

图2:

要演示我想做什么,请执行以下操作:
在红色中,我在两个图中突出显示了具有多个相似节点的网络(例如b arg 511、b asp 513…)。然而,图2连接了更多的节点和连接它们的不同边。
在绿色中,我突出显示相同的网络。
基本上,我希望保留不同的网络,排除相同的网络。
我尝试使用networkx.algorithms.operators.binary.difference(),但由于它们没有相同的节点集,所以无法使用。
一个潜在的解决方案可能是为每个图创建一组节点网络,并取其差异。然后试着用图表来代替?
感谢您的帮助。

tyu7yeag

tyu7yeag1#

看起来您正在查找属于两个父图的所有最大子图的列表。假设你没有关于你正在寻找的子图类型的先验信息,我认为没有更好的方法来解决它,除了。。尝试所有可能的子图。它在理论上运行良好,但由于组合爆炸,在实践中是绝对不可能的。如果你想寻找同构子图,问题会变得更加困难——那些具有相同结构但可能由不同的顶点集和/或边组成的子图。
否则,你必须用你所知道的关于你要寻找的子图的其他信息来扩展你的问题,这可能会或不会有助于找到更好的方法来解决这个问题。

相关问题