Индекс списка вне диапазона для алгоритма Беллмана Форда Python - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь создать алгоритм Беллмана-Форда в Python3 и получаю ошибку «индекс списка вне диапазона».

Для массива с 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]

Я проверил, что:

  • graph [0] тянет назад первая (нулевая) строка массива графа

  • graph [max количество ссылок -1) возвращает последнюю строку массива

  • диапазон (узлы-1) правильный

  • диапазон (ссылки-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)
...