最短路径——迪杰斯特拉算法 学习笔记
来源:互联网 发布:java 成绩统计 编辑:程序博客网 时间:2024/05/22 08:14
迪杰斯特拉算法用于求解一个有向图(也可以是无向图,无向图是有向图的一种特例)的一个点(称之为原点)到其余各点(称之为周边点)的最短路径问题。算法 构思很是巧妙(我这么认为),简直达到了“无心插柳柳成荫”的境界。算法本身并不是按照我们的思维习惯——求解从原点到第一个点的最短路径,再到第二个点 的最短路径,直至最后求解完成到第n个点的最短路径,而是求解从原点出发的各有向路径的从小到大的排列(如果这个有向图中有环1-2-3-1算法岂不是永 无终结之日了??!!),但是算法最终确实得到了从原点到图中其余各点的最短路径,可以说这是个副产品,对于算法的终结条件也应该以求得了原点到图中其余 各点的最短路径为宜。清楚了算法的这种巧妙构思后,理解算法本身就不是难题了。
算法把一个图(G)中的点划分成了若干部分:
1):原点(v);
2):所有周边点(C);
另外有一个辅助集合S,从v到S中的点的最短路径已经求得。S的最初状态是空集。
这样就可以进一步划分图(G):
1):原点(v);
2):已求出v至其最短路径的周边点(S);
3):尚未求出v至其最短路径的周边点(Other=C-S);
算法的主体思想:
A、找到v——Other所有路径中的的最短路径vd=v——d(Other的一个元素);
B、找到v——S——Other所有路径中的的最短路径vi=v——i(Other的一个元素);
C、比较vd和vi如果vd<=vi则将d加入S且从Other中删除,否则将i加入S且从Other中删除。
重复以上步骤直至Other为空集。
我们求得的最短路径是升序排列的,那为什么下一条最短路径就存在于v——Other或v——S——Other之中呢,难道不能存在于v——Other ——Other之中吗??当然不能,因为假设是存在于v——Other——Other之中,那么肯定有一条比这条路径更短的路径v——Other我们没找 到呢!
document.getElementById("ubbcontent").style.display="none";
算法把一个图(G)中的点划分成了若干部分:
1):原点(v);
2):所有周边点(C);
另外有一个辅助集合S,从v到S中的点的最短路径已经求得。S的最初状态是空集。
这样就可以进一步划分图(G):
1):原点(v);
2):已求出v至其最短路径的周边点(S);
3):尚未求出v至其最短路径的周边点(Other=C-S);
算法的主体思想:
A、找到v——Other所有路径中的的最短路径vd=v——d(Other的一个元素);
B、找到v——S——Other所有路径中的的最短路径vi=v——i(Other的一个元素);
C、比较vd和vi如果vd<=vi则将d加入S且从Other中删除,否则将i加入S且从Other中删除。
重复以上步骤直至Other为空集。
我们求得的最短路径是升序排列的,那为什么下一条最短路径就存在于v——Other或v——S——Other之中呢,难道不能存在于v——Other ——Other之中吗??当然不能,因为假设是存在于v——Other——Other之中,那么肯定有一条比这条路径更短的路径v——Other我们没找 到呢!
document.getElementById("ubbcontent").style.display="none";
- 最短路径——迪杰斯特拉算法 学习笔记
- 最短路径——迪杰斯特拉算法 学习笔记
- 最短路径——迪杰斯特拉算法 学习笔记
- 最短路径——迪杰斯特拉算法
- 最短路径——迪杰斯特拉算法
- 最短路径—迪杰斯特拉算法
- 最短路径算法—Dijkstra(迪杰斯特拉)
- 最短路径算法—Dijkstra(迪杰斯特拉)
- 最短路径算法学习
- 最短路径算法————迪杰斯特拉算法
- 最短路径算法—Dijkstra(迪杰斯特拉)算法
- 最短路径算法(1)—Dijkstra(迪杰斯特拉)算法
- 学习笔记---街区最短路径问题算法及优化
- 算法导论学习笔记(19)——每对顶点间的最短路径(基于Floyd_Warshall算法)
- 所有结点对最短路径问题(Floyd-Warshall算法)——算法导论学习笔记(1)
- 最短路径——Bellman_Ford算法
- 最短路径——SPFA算法
- 最短路径算法——Dijkstra
- MyEclipse布署Tomcat 6时的常见错误与解决方法
- 热烈庆祝我的博客栏目开业
- 图论基础
- 删除表的记录以后,如何使新记录的编号仍然从1开始
- 第K最短路程序
- 最短路径——迪杰斯特拉算法 学习笔记
- base64编码/解码 javascript
- base64编码/解码 javascript
- 如何去检测网络的连接状态(C#)
- [转] 图解eclipse+myelcipse开发EJB
- 在这里安个家
- 读《图算法,Robert Sedgewick》笔记 —— 最短路径
- 全国delphi程序员平均工资水平
- 用installshield打包时在注册表里注册项和键值的动态设定方法