最短路径 之 Dijkstra算法
来源:互联网 发布:淘宝6度女装模特是谁 编辑:程序博客网 时间:2024/05/16 12:58
Dijkstra算法又称为单源最短路径,所谓单源是在一个有向图中,从一个顶点出发,求该顶点至所有可到达顶点的最短路径问题。
基本思想是:
基本步骤:
1、把所有结点分成两组:
2、开始时,第一组只包含起点,第二组包含剩余的点;
3、用贪心的策略,按最短路径长度递增的顺序把第二组的结点加到第一组去,直到v0可达的所有结点都包含于第一组中。在这个过程中,不断更新最短路径,总保持从v0到第一组各结点的最短路径长度dist都不大于从v0到第二组任何结点的路径长度。
4、每个结点对应一个距离值,第一组结点对应的距离就是v0到此结点的最短路径长度,第二组结点对应的距离值就是v0由第一组结点到此结点的最短路径长度。
5、直到所有的顶点都扫描完毕(v0可达的所有结点都包含于第一组中),找到v0到其它各点的所有最短路径。
(1)开始时,s1={v0},s2={v1,v2,v3,v4},v0到各点的最短路径是{0,10,&,30,100};
(2)在还未进入s1的顶点之中,最短路径为v1,因此s1={v0,v1},由于v1到v2有路径,因此v0到各点的最短路径更新为{0,10,60,30,100};
(3)在还未进入s1的顶点之中,最短路径为v3,因此s1={v0,v1,v3},由于v3到v2、v4有路径,因此v0到各点的最短路径更新为{0,10,50,30,90};
(4)在还未进入s1的顶点之中,最短路径为v2,因此s1={v0,v1,v3,v2},由于v2到v4有路径,因此v0到各点的最短路径更新为{0,10,50,30,60};
数据结构:
(1)用一个二维数组a[i..j,i..j]来存储各点之间的距离,10000表示无通路:
(2)用数组dist[i..j]表示最短路径;
(3)用集合s表示找到最短路径的结点。
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra+Floyd算法
- 三、最短路径之Dijkstra算法
- 最短路径 之 Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra+Floyd算法
- 最短路径之Dijkstra算法
- Node:最短路径算法之Dijkstra
- 最短路径之迪杰斯特拉(Dijkstra)算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之迪克斯特拉(Dijkstra)算法
- 【最短路径】之Dijkstra算法
- c语言学习心得.3
- 草根IT男试用期工作总结
- 时间日期的控制
- haskell Standard list functions(列表的标准库函数)
- Erlang和Go的并行化concurrent比较
- 最短路径 之 Dijkstra算法
- lua变量研究
- Hibernate的主键生成机制
- IT人员迅速提升自我效率的十大方法
- 什么是失调电压调整电路 它有什么作用
- Sqlite获取本周数据
- 利用notepad++和正则表达式快速清除源代码行号
- 使用反射(Reflection)API
- 在Hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?