这条线在matlab中意味着什么?简单实现Dijkstra算法

时间:2012-10-30 23:25:31

标签: algorithm matlab dijkstra

这是Dijkstra算法的实现。如果Distance = Inf*ones(N,1)Distance(CurrentNode)的值是多少?有人也可以给出src和ConMat的示例值吗?谢谢!

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

2 个答案:

答案 0 :(得分:1)

distance是长度为n的数组,其中n是节点数。距离(i)是从src到节点i的最佳找到距离。所有距离都从无穷远处开始,但距离(src)从0开始。然后我们更新距离

答案 1 :(得分: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是矩阵表示中的图形。