如何在python中表示图形/树以及如何检测周期?

时间:2010-12-14 20:16:12

标签: python algorithm

我想在python中实现kruskal的算法如何才能表示树/图表以及我应该采用什么方法来检测周期?

2 个答案:

答案 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)

Python Graph API是个好地方。

例如,NetworkX有一个Kruskal算法实现来查找最小生成树。

如果你想重新发明轮子并自己动手,那也是可能的。