簡體   English   中英

Dijsktra的最短路徑算法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM