Dijkstra的算法概念

用户3952416

我正在学习Dijkstra算法,对此有些困惑

If min(A,B) = x;
   min(A,C) = y;
   min(B,C) = must be x-y;

请说明这一点,否则我错了?

亚历克·蒂尔(Alec Teal)

好的,这就是您要说的:

在所有这些中,我将引用有向非负权重图。

最短路径问题:

对于图G和V中的节点r和实际成本向量(E中的c_e:e)(我希望我们在这里有LaTeX)

我们希望找到:

对于V中的每个v,从r到v的最小成本(假设存在)

这是您想要的要点:

假设我们知道V中每个v都有从r到v的成本y_v的路径,并且我们找到E中满足y_v + c_vw <y_w的边vw

由于将vw附加到v的dipath(以获取w的路径),因此给出的路径长度为y_v + c_vw

最小成本偏差满足:

y_v + c_vw> = y_w对于E中的所有vw

我们称这样的矢量为“可行潜力”

命题:y_v是最小的

设y为可行势,设P为从r到v的双径,则其遵循c(P)> = y_v

证明:

c(P)=总和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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章