1
私はPythonコードでDijkstraのアルゴリズムを実装しようとしていますが、実際にはアルゴリズムを正しく取得できません。私が使っているアルゴリズムは、このユーチューブのリンクからです:https://www.youtube.com/watch?v=pVfj6mxhdMwDijkstraのアルゴリズム(Pythonで)
だから基本的に私のクラスでは、これら3つの変数があります。ここでは
self.nodes = [] #a,b,c
self.neighbours = {} # a:[b,c], b:[c], c:[a]
self.weights = {} #[a,b] = 2, [a,c] = 5
は、私は部分的にビデオで提供するアルゴリズムを使用して、私の最短経路の機能を実装する方法です。
def dijkstra(self, start, end):
nodes = {}
for n in self.nodes:
if n == start:
nodes[n] = 0
else:
nodes[n] = float('inf')
unvisited = self.neighbours
visited = []
current_node = start
current_distance = 0
while unvisited:
for n in unvisited[current_node]:
print(n)
#calc_weight = nodes[n] + self.weights[n, current_node]
#if (unvisited[n] is None or calc_weight > nodes[n]):
#nodes[n] = calc_weight
visited.append(current_node)
del unvisited[current_node]
if not unvisited: break
私はどこかで何かを逃していることを知っているので、私は本当に完了しません。誰かがこれで私を助けてくださいできますか?ありがとう
ウィキペディア:[ダイクストラのアルゴリズム](https://en.wikipedia.org/wiki/Dijkstra's_algorithm)。疑似コードもあります。 – furas
問題は解決しましたか? – Shasha99
@ Shasha99 Nope。私はそのアルゴリズムを正しく得ることができません。 前のコメントは助けにならなかった、私は別のアルゴリズムに私を導いたが、それは実際には答えではなかったが、2番目のプログラムは私をハローワールドプログラムに導いた。 –