我有一个由许多自循环组成的大图。我正在尝试删除所有内部循环,以便只剩下一个大(外部)循环。有没有办法找到给定循环中的所有边?我试过使用graph.nodes_with_selfloops()
,graph.selfloop_edges
但都没有让我走得很远。
问问题
1399 次
1 回答
2
我找到了一种使用 networkx.algorithms 库来解决这个问题的方法:
import networkx as netx
import networkx.algorithms as al
# build graph
g = netx.DiGraph()
edges = [(1,2),(2,3),(3,4),(4,1),(1,2),(2,5),(5,3),(3,4),(4,1)]
g.add_edges_from(edges)
# find cycles
cycles = al.simple_cycles(g)
# assuming that the exterior cycle will contain the most nodes
for cycle in cycles:
print len(cycle)
结果应该是:
>>> 5
>>> 6
于 2012-06-20T19:08:03.630 回答