我想在python中实现kruskal的算法如何才能表示树/图表以及我应该采用什么方法来检测周期?
答案 0 :(得分: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()
只是虚拟对象来表示算法的外观。
答案 1 :(得分:4)