列表索引超出Bellman Ford算法Python的范围
我正试图在Python3中创建一个Bellman-Ford算法,并且不断出现错误“列表索引超出范围” 对于具有3个输入的阵列,例如:列表索引超出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]
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)!非常感谢。