0

这是 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
4

2 回答 2

1

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

于 2012-10-30T23:42:21.137 回答
1

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

信息
信息
信息

...
信息

一个大小为Nx1的数组。


CurrentNode包含您的算法正在计算路径的顶点的索引。假设您有一个简单的图表,如下图(从Wikipedia窃取):

在此处输入图像描述

您的初始src节点是您开始搜索的节点 - 在本例中为 index 1。对于您的初始节点,Distance0. 所以, Distance( 1 ) = 0, 而其他的Distance等于Inf( Distance(src+1:end) = Inf)。


ConMat是您的矩阵表示形式的图表。

于 2012-10-30T23:45:37.293 回答