Abi*_*ree 3 python graph-theory
我有一个像一些输入:[('A', 'B'),('C', 'D'),('D', 'C'),('C', 'D')]。我想在这个 edgeList 表示的有向图中寻找循环是否存在。
我读了一个讨论:https : //www.geeksforgeeks.org/detect-cycle-in-a-graph/,但是当情况是这样时它有一些错误:
g = Graph(3)
g.addEdge('A', 'B')
g.addEdge('B', 'C')
g.addEdge('C', 'A')
Run Code Online (Sandbox Code Playgroud)
它的结果是“图没有循环”。这显然是错误的。你能帮我解决这个问题吗?
使用networkx库,我们可以使用该simple_cycles函数查找有向图的所有简单循环。
示例代码:
import networkx as nx
edges = [('A', 'B'),('C', 'D'),('D', 'C'),('C', 'D')]
G = nx.DiGraph(edges)
for cycle in nx.simple_cycles(G):
print(cycle)
G = nx.DiGraph()
G.add_edge('A', 'B')
G.add_edge('B', 'C')
G.add_edge('C', 'A')
for cycle in nx.simple_cycles(G):
print(cycle)
Run Code Online (Sandbox Code Playgroud)
输出:
['D', 'C']
['B', 'C', 'A']
Run Code Online (Sandbox Code Playgroud)