【发布时间】:2012-02-21 18:00:30
【问题描述】:
假设我有以下图表:
A -> B
B -> C
C -> D
C -> A
找到 A -> B -> C -> A 是循环关系的最简单方法是什么? NetworkX 或其他易于使用的 Python 库中是否已经内置了这样的功能?
【问题讨论】:
标签: python algorithm graph-theory networkx
假设我有以下图表:
A -> B
B -> C
C -> D
C -> A
找到 A -> B -> C -> A 是循环关系的最简单方法是什么? NetworkX 或其他易于使用的 Python 库中是否已经内置了这样的功能?
【问题讨论】:
标签: python algorithm graph-theory networkx
networkx.simple_cycles 为你做这件事。
>>> import networkx as nx
>>> G = nx.DiGraph()
>>> G.add_edge('A', 'B')
>>> G.add_edge('B', 'C')
>>> G.add_edge('C', 'D')
>>> G.add_edge('C', 'A')
>>> nx.simple_cycles(G)
[['A', 'B', 'C', 'A']]
【讨论】:
使用Depth-First Search 检测图中的循环。
【讨论】: