我只是在学习Dijkstra算法而且在这个
中有点混乱If min(A,B) = x;
min(A,C) = y;
min(B,C) = must be x-y;
请说明理由或我错了吗?
答案 0 :(得分:2)
好的,这就是你的意思:
我将在所有这些中引用有向的非负权重图。
最短路径问题:
对于V中的有向图G和节点r以及实际成本向量(E中的c_e:e)(我希望我们在这里使用LaTeX)
我们希望找到:
对于V中的每个v,从最小成本的r到v的dipath(假设它存在)
以下是您想要的要点:
假设我们知道对于V中的每个v,存在从r到v的成本y_v的路径,并且我们发现E中的边缘vw满足y_v + c_vw< y_w
由于将vw附加到dipath到v(获得w的路径)给出了一条长度为y_v + c_vw的路径
成本最低的dipath满足:
对于E 中的所有大众,y_v + c_vw> = y_w
我们称这样的y向量为“可行的潜力”
命题:y_v是最小的
设y是一个可行的势,让P为从r到v的dipath,然后它跟随c(P)> = y_v
证明:
c(P)= sum c_ei(路径成本中的第i个边缘)
回想一下可行的潜力是否合理y_v + c_vw> = y_w
所以c_vw> = y_w - y_v 这就是你拥有的
因此
c(P)> = sum(y_vi-y_v {i-1})(第i项的成本取前一项的成本)
如果你把它写成总和(-y_v {i-1} + y_vi)然后展开总和:(显然y_v0 = 0)
-y_v0 + y_v1 -y_v1 + y_v2 - .... -y_v {k-2} + y_v {k-1} -y_v {k-1} + y_vk
你看到所有条款都取消了,给出了:
c(P)> = y_vk - y_v0 = y_vk
因此,我们已经显示c(P)> = y_vk
答案 1 :(得分:1)
这是错误的,想想任何等边三角形,两边的差异是0而第三尺寸的长度不是。