如何在Python中表示图/树并检测循环?
我想在Python中实现克鲁斯克尔算法,我该如何表示树或图呢?我应该采用什么方法来检测循环呢?
2 个回答
4
11
我认为最简单的表示方法是用一个字典来存放 数组 列表:
graph = {}
graph[node_id] = [other_node_id for other_node_id in neighbors(node_id)]
寻找循环的一个简单方法是使用广度优先搜索(BF)或深度优先搜索(DF):
def df(node):
if visited(node):
pass # found a cycle here, do something with it
visit(node)
[df(node_id) for node_id in graph[node]]
注意:这其实只是一个草图;neighbors()
、visited()
和 visit()
只是用来表示算法应该是什么样子的。