[英]Dijsktra's Shortest Path Algorithm
運行此命令時,最終輸出是帶有列的表:
Vertex - DisVal - PrevVal - Known.
連接到我的起始節點的兩個節點顯示正確的值,但其他節點最后都沒有更新。 如果有人想看的話,我可以提供完整的程序代碼,但是我知道問題在這里是孤立的。 我認為這可能與不正確地更改索引有關。 這是簡單的dijsktra的btw,而不是heap / Q版本。
這是其余的代碼: http : //ideone.com/UUOUn8
adjList看起來像這樣:[1:2,4,2:6,6,3,...]其中顯示了連接到頂點的每個節點。 DV =距離值(重量),PV =先前值(節點),已知=蜜蜂是否來過
def dijkstras(graph, adjList):
pv = [None] * len(graph.nodes)
dv = [999]*len(graph.nodes)
known = [False] * len(graph.nodes)
smallestV = 9999
index = 0
dv[0] = 0
known[0] = True
for i in xrange(len(dv)):
if dv[i] < smallestV and known[i]:
smallestV = dv[i]
index = i
known[index] = True
print smallestV
print index
for edge in adjList[index]:
if (dv[index]+graph.weights[(index, edge)] < dv[edge]):
dv[edge] = dv[index] + graph.weights[(index, edge)]
pv[edge] = index
printTable(dv, pv, known)
第一次迭代將無條件地將minimateV和index設置為0,並且此后它們再也不會更改(假定非負權重)。
很難說出您要在這里做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.