gpt4 book ai didi

python - 如何使用 Python 检测有向图中的循环?

转载 作者:行者123 更新时间:2023-12-01 13:11:12 25 4
gpt4 key购买 nike

我有一些输入,如:[('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')

它的结果是“图没有循环”。这显然是错误的。
你能帮我解决这个问题吗?

最佳答案

使用 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)

输出:
['D', 'C']
['B', 'C', 'A']

关于python - 如何使用 Python 检测有向图中的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59820748/

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