2010-12-14 17 views

回答

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

由数组字典你意味着列表字典? – 2010-12-14 20:32:53

+0

@Bunny兔子erm ..是的。对不起,我误用了<>的名字 – 2010-12-14 20:33:29

4

Python Graph API是一个很好的开始。

例如,NetworkX有一个克鲁斯卡尔算法的实现来寻找最小生成树。

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

+3

是的,我试图重新发明轮子,至少第一次。 – 2010-12-14 20:24:08

相关问题