004-迪杰斯特拉算法求解最短路径的一点思想

来源:互联网 发布:sd卡数据恢复安卓版 编辑:程序博客网 时间:2024/04/28 13:38

复习了迪杰斯特拉算法,在这里写一个小例子,供大家参考,例子主要是知道起点的情况下,求一个图中到各个点的最短路径。


这是一开始给的图,假设我们从A出发,寻找从A分别到B,C,D,E,F的最短路径,过程如下:

1,对于A,A->A=0,这就是最短路径;


2,对于A,我们继续向下索引,有A->B=6,A->C=3,A->other=∞,所以我们选择A->C作为第二个路径;


3,对于A->C,我们可以继续向下索引,这个时候会有A->C->B=5,A->C->D=6,A->C->E=7,A->C->F=∞,所以我们选择A->C->B=5作为第三个路径;


4,对于A->C->B,我们继续向下索引,可以得到A->C->B->D=11,A->C->B->F=∞,这个时候到了关键的地方,因为对于A->D,我们之前已经得到过从A走到D的路径相比于现在有更加优秀的A->C->D=6,所以舍弃这一步的A->C->B->D=11,而是选择A->C->D为第四个路径;


5,对于A->C->D,我们可以得到A->C->D->E=8,A->C->D->F=9,同上,这个时候我们有A->C->E=7,所以舍弃A->C->D->E=8,将A->C->E作为第五个路径;


6,对于A->C->E,我们可以求出A->C->E->F=12,这个时候又是同上,有A->C->D->F=9,所以舍弃这一步求出来的值,得到A->C->D->F=9,至此,求最短路径已经全部完毕。


7,结论是:

A->A = 0;

A->B = A->C->B = 5;

A->C = 3;

A->D = A->C->D=6;

A->E = A->C->E=7;

A->F = A->C->D->F=9.


0 0
原创粉丝点击