首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python的Bellman-Ford实现中使用范围和字典

在Python的Bellman-Ford实现中使用范围和字典
EN

Stack Overflow用户
提问于 2011-12-02 03:08:08
回答 2查看 1.5K关注 0票数 2

贝尔曼-福特算法如下所示

代码语言:javascript
复制
initialize-single-source(G,s)
for i = 1 to |G.V| - 1
   for each edge (u,v) in G.E
      call Relax(u,v,w)

and so on

这个伪代码索引从1开始,而不是0。

这就是我所说的边缘。我使用字典来表示边和顶点。

代码语言:javascript
复制
    for i in range((len(self.V.keys()))-1):
        for vertex in self.V.keys():
            for edge in self.V[vertex]:

Q1:我们应该从索引0开始,对吗?

Q2:我们还应该从G.V的长度中减去1吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-02 03:19:37

你已经试过this super website了吗?有时答案可以在那里找到……

票数 3
EN

Stack Overflow用户

发布于 2011-12-02 03:24:56

Q1:我们应该从索引0开始,对吧?

不一定;您也可以遍历xrange(1, len(self.V))。不过,从零开始是惯用的做法。

Q2:我们还应该从G.V的长度中减去1吗?

如果你从零开始计数,是的。-1是算法规范的一部分。

额外建议:将您的代码段重写为

代码语言:javascript
复制
for i in xrange(len(self.V) - 1):
    for vertex in self.V.iterkeys():
        for edge in self.V[vertex]:

要防止构建密钥列表(两次),请执行以下操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8346880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档