数据结构:求最短路径,狄杰斯彻拉算法的原理是什么?最好画个图详解,谢谢!

这是在网上找的图,看不懂。顺便讲解下!

以上图为例进行说明,图示是寻找从V1到V5的最短路径的过程。
首先,将除起点V1以外所有顶点的路径长度设为无穷大,其自身路径长度为0;
1.将起点V1加入已求解的顶点集;
2.检查新增的顶点的所有边,若另一顶点不在已求解顶点集内,则将其路径长度进行更新。新的路径长度为其原长与新增顶点自身路径长度加上边长中的较小者;
3.从所有不在已求解顶点集的顶点中,选择一个路径长度最短的顶点,加入已求解顶点集,如果这个顶点是目标顶点,则求解结束,否则跳到第2步继续求解。

图中的例子,先加了V1,然后更新V2,V3,V6的长度分别为7,9,14;
然后加最近的V2,再更新V3,V4的长度,V3经V2到达比直接从V1出发要长,所以其值没有变化,V4的长度更新为22,以后的步骤类似,不再详述。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-20

    首先1(1,0);2(1,7);3(1,9);6(1,14)这些是1这个顶点能到的点和距离,最短的是2距离为7,2(1,7);然后通过2能到达的点3(2,10);4(2,15);计算出到1的最短路径也就是3(1,9);4(1,22)接着通过3能到达的点6(3,2);4(3,11);可以得出4(1,20);6(1,11);然后6可以到5,4也可以到5,则5(6,9);5(4,6);可以得出5(1,20)。不知道这样写你看不看得懂,

相似回答