2012-10-30 130 views
0

這是Dijkstra算法的實現。如果Distance = Inf*ones(N,1)Distance(CurrentNode)的值是多少?有人也可以舉一個src和ConMat的例子值嗎?謝謝!這條線在matlab中意味着什麼? Dijkstra算法的簡單實現

while (nVisited <N) 
    Visited(CurrentNode) = 1; 
    for i=1:N 
     if (ConMat(CurrentNode,i)>0) 
      temp = ConMat(CurrentNode,i) + **Distance(CurrentNode)**; 
      if (temp< Distance(i)) 
       Distance(i) = temp; 
       PrevNode(i) = CurrentNode; 
      end 
     end 
    end 

回答

1

Distance = Inf * ones(N,1)返回

 
Inf 
Inf 
Inf 

... 
Inf 

與大小NX1陣列。


CurrentNode包含您的算法計算路徑的頂點索引。假設你有一個簡單的圖形,如下面的(從Wikipedia被盜):

enter image description here

您最初的src是你開始搜索節點 - 在這種情況下,指數1。對於您的初始節點,Distance0。因此,Distance(1) = 0,而其他人有Distance等於InfDistance(src+1:end) = Inf)。


ConMat是一個矩陣表示您的圖表。

1

distance是一個長度爲n的數組,其中n是節點數。距離(i)是從src到節點i的最佳找到距離。所有距離開始在無窮遠而距離(SRC)從0開始。然後我們更新的距離