用networkx计算有向图的传递闭包

时间:2014-10-23 03:15:03

标签: python networkx directed-graph

我努力找到如何使用networkx计算有向图的传递闭包已经出乎意料地空洞。这似乎不太可能不在networkx中,所以...它在哪里? (我知道Sage包含此功能。)

1 个答案:

答案 0 :(得分:1)

NetworkX中没有传递闭包功能。但我认为你可以在一行中做到这一点:-)。 (另)

In [1]: import networkx as nx

In [2]: G = nx.DiGraph([(1, 2), (2, 3), (3, 2), (3, 4)])

In [3]: H = nx.DiGraph([(u,v,{'d':l}) for u,adj in nx.floyd_warshall(G).items() for v,l in adj.items() if l > 0 and l < float('inf')])

In [4]: H.adj
Out[4]: 
{1: {2: {'d': 1.0}, 3: {'d': 2.0}, 4: {'d': 3.0}},
 2: {3: {'d': 1.0}, 4: {'d': 2.0}},
 3: {2: {'d': 1.0}, 4: {'d': 1.0}},
 4: {}}