Dijkstra求单源最短路径(图,数据结构)
来源:互联网 发布:hr工资计算软件 编辑:程序博客网 时间:2024/06/05 04:27
什么是单源最短路?
给定图中,给定的某个点到其余各点的最短路径为单源最短路径。Dijkstra算法思路:
1)设置一个集合S,放已找到最短路径的点。
2)将源点并与S,初始化源点s到V-S中其余各点的“当前最短距离”。
3)重复一下操作n-1次:从V-S中找当前最短路径对应的点,并入S,更新源点到其余点的最短距离。Dijkstra代码实现:
//final数组记录当前点是否已并入源点的集合S中//D数组是源点到当前点的“最短路径”int final[n],D[n];final[v0] = true;//给定源点并入集合S中(判断某点是否在集合中,即看对应的final数组是什么)for(int i = 0;i < G.vexnum; ++i){ //初始化final数组 if(i != v0) final[i] = false; //初始化源点到其余各点的距离 D[i] = G.arcs[v0][i]; //如果需要记录路径 if(D[i] < INFINITY) Path[i] = "v0->i";}//控制重复n-1次for(int i = 0;i <G.vexnum; ++i){ int v; //从V-S中选取当前路径最短的点 minn = INFINITY; for(int w = 0;w < G.vexnum; ++w) { if(!final[w] && minn > D[w]) { minn = D[w]; v = w; } } //v就是当前最短路径对应的点,minn就是最短路径的大小 final[v] = true;//并入集合S中 for(int w = 0; w < G.vexnum; ++w) { if(!final[w] && D[w] > minn + G.arcs[v][w]) { D[w] = minn + G.arcs[v][w]; Path[w] = strcat(Path[v],"->w");//更新当前源点到w的最短路(v是刚加入源点集合的点) } }}
- 特定源点到特定终点的最短路的时间复杂度同Dijkstra相同,没有更好的算法。
- Dijkstra算法是贪心算法的一种,每次都找最优的,最后的结果也是最优的。
阅读全文
0 0
- Dijkstra求单源最短路径(图,数据结构)
- [数据结构]Dijkstra算法求单源最短路径
- 数据结构-图(三)-最短路径之Dijkstra
- 数据结构--最短路径(Dijkstra算法)
- 数据结构之最短路径(DijKstra)
- C语言基本数据结构之三(图的广度及深度遍历,求单源最短路径的Dijkstra算法)
- 数据结构 学习笔记(八):图(中):最短路径问题(单源最短路径 Dijkstra,多源最短路径 Floyd)
- Dijkstra算法(求单源最短路径)
- 数据结构----dijkstra算法,单源最短路径
- 数据结构:单源最短路径--Dijkstra算法
- 数据结构:单源最短路径--Dijkstra算法
- 数据结构——带权有向图(最短路径算法Dijkstra算法)
- PAT 数据结构 06-图5. 旅游规划(25)Dijkstra最短路径算法
- 数据结构 — 图 之 MPT(最短路径 — dijkstra算法 )
- 数据结构——Dijkstra算法(寻找图的最短路径)
- 【数据结构】Dijkstra求最短路径的图的邻接矩阵的实现
- Dijkstra算法最短路径演示动画(数据结构)
- 数据结构(C#)--Dijkstra 算法的最小路径的实现
- JSP入门(一)
- 一分钟教你如何实现唯美的文字描边
- 以太币价格分析:扩容解决方案的影响
- 数串
- 面向对象程序设计上机练习四(变量引用)
- Dijkstra求单源最短路径(图,数据结构)
- 博客搬迁说明
- 法国将允许场外证券区块链交易,力求成为主要金融中心
- Java-----SSM(SpringMVC+Spring+mybaties)框架整合
- 特朗普签署国防法案进行区块链研究
- JAVA多线程总结
- 水仙花数问题
- 2018:又一个区块链大年
- 智库Reform敦促英国政府对区块链技术进行身份服务应用研究