这是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
答案 0 :(得分:1)
distance是长度为n的数组,其中n是节点数。距离(i)是从src到节点i的最佳找到距离。所有距离都从无穷远处开始,但距离(src)从0开始。然后我们更新距离
答案 1 :(得分:1)
Distance = Inf * ones(N,1)
返回
Inf Inf Inf ... Inf
大小为 Nx1 的数组。
CurrentNode
包含算法计算路径的顶点索引。假设您有一个简单的图形,例如以下(从Wikipedia被盗):
您的初始src
是您开始搜索的节点 - 在本例中为索引1
。对于您的初始节点,Distance
为0
。因此,Distance( 1 ) = 0
,而其他人Distance
等于Inf
(Distance(src+1:end) = Inf
)。
ConMat
是矩阵表示中的图形。