gpt4 book ai didi

python - 子图同构

转载 作者:太空狗 更新时间:2023-10-30 01:02:16 25 4
gpt4 key购买 nike

在 igraph 或 networkx 中,在稀疏有向图中找到所有长度为 4 的简单路径的最快方法是什么?一种方法是制作长度为 4 的简单路径的图,并使用子图同构 vf2 函数。这是最好/最快的方法吗?

我没有源节点,我想要整个图中存在的所有长度为 4 的简单路径。

在我的数据中,这样的路径可能很少,我希望能够有效地迭代它们。

最佳答案

使用这样的函数:

def simple_paths(start, length, visited=[]):
if length==0:
yield(visited + [start])
else:
for child in children(start):
if child not in visited:
for path in simple_paths(child, length-1, visited + [start]):
yield(path)

您可以通过调用列出所有长度为 4 的简单路径

for start in nodes():
for path in simple_paths(start, 4):
print path

以上假定 nodes() 返回图中所有节点的可迭代对象,并且 children(x) 返回节点 的子节点的可迭代对象>x.

enter image description here

simple_paths() 函数正确应用于上图会产生:

['5', '9', '3', '1', '0']
['6', '5', '9', '3', '1']
['6', '5', '3', '1', '0']
['9', '5', '3', '1', '0']

这表明函数:

  • 尊重有向边(例如,它不选择 ['6', '5', '1', '3', '9'])
  • 只选择简单的路径(例如它不选择['6', '5', '3', '1', '5'])

关于python - 子图同构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com