Я пытаюсь создать алгоритм Беллмана-Форда в 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)