gpt4 book ai didi

Python 网络 x : find all edges for a given path in a multiDiGraph

转载 作者:行者123 更新时间:2023-11-28 19:07:59 24 4
gpt4 key购买 nike

在我的多向图中,我想找到 2 个节点之间所有可能的(简单)路径。我设法获得了所有路径,但无法区分源节点到达目标节点所采用的边(假定它是多有向图)。

例如,我有 A->B->C,其中 (A,B) 和 (B,C) 之间有多个平行边。如果我说 A->B 有 5 个平行边,B->C 有 2 个平行边,all_simple_path(graph, source='A', target='C') 将返回总共 7 条路径,所有路径都是路线A->B->C

当使用 get_edge_data() 时,它返回每个节点之间的所有平行边。但我想要的是能够列出路径中指定节点采用的所有组合边。

谢谢!

最佳答案

使用“all_simple_edge_paths”。它将给出边的索引。

import networkx as nx

G = nx.MultiDiGraph()
G.add_edge(1, 2, **{'prop1': 'A', 'prop2': 'B'})
G.add_edge(1, 3, **{'prop1': 'A', 'prop2': 'C'})
G.add_edge(2, 3, **{'prop1': 'B', 'prop2': 'C'})
G.add_edge(2, 3, **{'prop1': 'B1', 'prop2': 'C1'})

# Our source and destination nodes
source = 1
destination = 3



paths = nx.all_simple_edge_paths(G, source, destination)

for path in paths:
print(" Path :: ")
for edge in path:
src = edge[0]
dst = edge[1]
print(str(src)+ " - "+str(dst)+ " :: "+str(G.get_edge_data(edge[0], edge[1])[edge[2]]))

关于Python 网络 x : find all edges for a given path in a multiDiGraph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648790/

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