1

我有两个字典对象,连接和网络。这可以可视化为一个图,其中每个节点都是一台计算机,连接描绘了计算机和节点之间的一条边。网络是唯一网络的字典对象,计算机可以成为其中的一部分,例如

1,2  
2,3  
4,5  
5,1 

是节点 1 到 1 的四个连接信息,
因此连接将是 {1->1,2->1,3->1,4->2,5->1}
和网络 {1->0,2-> 1}
这意味着
计算机 1,2,3,5 是 n/w 1
的一部分计算机 4 是 n/w 2 的一部分
再次 n/w 2 互连到 n/w 1
我必须读取一个包含数千个这样的文件这样做时的连接信息
,对于读取的每个连接信息,我必须执行一个非顺序循环,如下所示

while network.has_key(connections[node1]):
    connections[node1]=network[connections[node1]] 

有没有更好的方法来优化上述循环?如果需要,我可以为此目的共享我的整个代码

4

2 回答 2

2

我并没有真正理解你的问题,但我觉得与图表相关的问题的答案在这里适用:

使用NetworkX而不是试图提出自己的数据表示和算法。它可能更难学习,但从长远来看,它会为您节省时间和头痛。

于 2011-10-03T16:52:29.637 回答
1
while network.has_key(connections[node1]):
    connections[node1]=network[connections[node1]] 

该代码进行network[connections[node1]]两次查找一次 forhas_key和一次 for []

它还反复访问connections[node1]

相反,您可以这样做:

current = connections[node1]
while True:
    try:
         current = network[current]
    except KeyError:
         break
connections[node1] = current

但是有可能更好的改进是重新编写其余的代码。但为此,您可能会发现http://codereview.stackexchange.com是一个更好的站点。

于 2011-10-03T16:51:30.697 回答