Я был настроен на кодирование обоих алгоритмов djkstras O (n3) и O (n2) в Python, и мне дали пустой скрипт для подражания.Я пытался закодировать оба, однако, был очень неудачным, когда запускал проблемы через него.Мне также предоставили псевдокод для обоих, но мне трудно следовать.Может ли кто-нибудь указать мне правильное направление, как это исправить?Буду очень признателен.Ниже приведен код, который я пытался
import numpy
def dijkstra1(successors, s):
S = []
S.append(s)
n = len(successors)
L = dict()
L[s] = 0
P = dict()
P[s] = '-'
for i in S:
minlength_j = numpy.inf
for j, length_ij in successors[i].items():
if j in S:
continue
if L[i] + length_ij < minlength_j:
minlength_j = L[i] + length_ij
L[j] = minlength_j
P[j] = i
if(j not in S and j < n):
S.append(j)
return L,P
def dijkstra2(successors, s):
S = []
S.append(s)
n = len(successors)
L = dict()
L[s] = 0
P = dict()
P[s] = '-'
for i in S:
minlength_j = numpy.inf
for j, length_ij in successors[i].items():
if j in S:
continue
if L[i] + length_ij < minlength_j:
minlength_j = L[i] + length_ij
L[j] = minlength_j
P[j] = i
if(j not in S and j < n):
S.append(j)
for j in S:
if w in S:
continue
for w, length_wj in successors[w].items():
if L[w] + length_wj < L[j]:
L[j] = L[w] + length_wj
P[j] = w
return L,P