列表索引超出Bellman Ford算法Python的范围

列表索引超出Bellman Ford算法Python的范围,python,python-3.x,bellman-ford,Python,Python 3.x,Bellman Ford,我正试图在Python3中创建一个Bellman-Ford算法,并且不断出现错误“列表索引超出范围” 对于具有3个输入的阵列,例如: graph = [[1, 2, 1.5], [1, 3, 1.0], [2, 1, 1.5], [2, 6, 1.25]] 我正在尝试迭代节点和链接的数量: for i in range(nodes-1): for j in range(links-1): if dist[graph[j][0]] + graph[j][2]

我正试图在Python3中创建一个Bellman-Ford算法,并且不断出现错误“列表索引超出范围”

对于具有3个输入的阵列,例如:

graph = 
[[1, 2, 1.5],
 [1, 3, 1.0],
 [2, 1, 1.5],
 [2, 6, 1.25]]
我正在尝试迭代节点和链接的数量:

for i in range(nodes-1): 
    for j in range(links-1): 
        if dist[graph[j][0]] + graph[j][2] < dist[graph[j][1]]: 
            dist[graph[j][1]] = dist[graph[j][0]] + graph[j][2]
范围内i的
(节点-1):
对于范围内的j(链接-1):
如果dist[graph[j][0]+graph[j][2]
我已核实:

  • graph[0]向后拉图形数组的第一(第零)行

  • 图[max#of links included-1]返回数组的最后一行

  • 范围(节点-1)正确

  • 范围(links-1)正确

这可能是什么原因造成的

graph = [[1, 2, 1.5], [1, 3, 1.0], [2, 1, 1.5], [2, 6, 1.25]] 
nodes = 6 
links = 4 
source = 0 
def BellmanFord(graph, nodes, links, source): 
    dist = [9_000_000] * nodes dist[source] = 0 
    for i in range(nodes-1): 
        for j in range(links): 
            if dist[graph[j][0]] + graph[j][2] < dist[graph[j][1]]: 
                dist[graph[j][1]] = dist[graph[j][0]] + graph[j][2] 
BellmanFord(graph,nodes,links,source)
graph=[[1,2,1.5]、[1,3,1.0]、[2,1,1.5]、[2,6,1.25]]
节点数=6
链接=4
来源=0
def BellmanFord(图形、节点、链接、源):
dist=[9\u 000\u 000]*节点dist[source]=0
对于范围内的i(节点-1):
对于范围内的j(链接):
如果dist[graph[j][0]+graph[j][2]
您能解释一下您的输入吗?节点、边和权重是什么?请提供一个。在本例中,节点=图中的6个总节点,边/链接=图中的4个总边。在图[]中,输入为图[startNode、endNode、weight]。注释中给出的代码与发布的问题中给出的代码不同,注释代码包含范围内j的
(链接)
,而不是
范围(链接-1)
。当我运行问题中给出的代码时,我没有得到
索引器
谢谢@N.Moudgil!我只需要将节点从n=6更改为n=7(因为节点范围是0到n-1)!非常感谢。