数据结构 最短路径之—迪杰斯特拉算法
来源:互联网 发布:c 五子棋源码 编辑:程序博客网 时间:2024/05/18 12:05
#define MAXVEX 9#define INFINITY 65535typedef int PathMatrix[MAXVEX]//用于存储最短路径下标的数组typedef int ShortPathTable[MAXVEX]//用于存储到各点最短路径的权值和 比如V0到V2的权值是4 void ShortestPath_DIJ(MGraph G, int V0, PathMatrix &P, ShortPathTable &D) //V0表示传递进来的原点。{int final[MAXVEX]; //final[v] = 1 表示已经求得顶点V0到Vw的最短路径。为1的话表明已经取得,为0的话表明还没有取得。//初始化数据for(v=0; v<G.numVertexes; v++){final[v] = 0;//全部顶点初始化为未找到的最短路径(*D)[V] = G.arc[v0][v];//将与v0点有联系的顶点加上权值。 在邻接矩阵中,从V0到V8的最大顶点数开始遍历。(*p)[V] = 0; //初始化路径数组P为0;}(*D)[V0] = 0; //v0到v0的路径为0final[V0] = 1; //V0到V0不需要求路径。//开始主循环,每次求得V0到某个V顶点的最短路径 这个循环分为两部分,根prim算法一样,先求出第一部分,然后进行纠正更新。for(v=1; v< G.numVertexes; v++) //从1开始的,从第一个顶点开始探讨{min = INFINITY;//从D数组中找到最小的值。for(w=0; w<G.numVertexes; w++){if(!final[w] && (*D)[w]<min) //final的值1 !fina[w] 就为0 就不用后面判断了。不执行下面的语句。{k = w;min = (*D)[w];}}final[k] = 1;//修正当前最短路径以及距离for (w=0; w<G.numVertexes; w++){if(!final[w] && min+G.arc[k][w] < [*D][w]){(*D)[w] = min + G.arc[k][w] //修正当前路径长度; 前驱顶点和其他顶点的长度。且和前面的长度累积比大小。(*p)[w] = k; //存放前驱顶点。 前驱结点和这个结点相连接的权值之和为<(*D)[k].}}}}
详情过程可以参考这个!
http://wenku.baidu.com/view/6dc5c62486c24028915f804d2b160b4e767f810f
0 0
- 数据结构 最短路径之—迪杰斯特拉算法
- 数据结构与算法之最短路径--迪杰斯特拉算法
- 数据结构之最短路径Dijkdtra算法
- 【数据结构】最短路径算法
- 数据结构之 最短路径
- 数据结构之无向网邻接矩阵最短路径FLOYD算法—摘抄自《大话数据结构》
- 【数据结构与算法】图之最短路径
- 数据结构基础 之 最短路径 贪心算法
- 最短路径之迪杰斯特拉(Dijkstra)算法
- 最短路径之迪杰斯特拉算法
- 最短路径之迪杰斯特拉算法
- 数据结构与算法专题之图——最短路径算法
- 数据结构-最短路径—Dijkstra算法和Floyd算法
- 数据结构之---C语言实现最短路径之Dijkstra(迪杰斯特拉)算法
- 数据结构-图-最短路径(1)迪杰斯特拉算法构造
- 数据结构 — 图 之 MPT(最短路径 — dijkstra算法 )
- 【数据结构】最短路径——Dijkstra算法
- 数据结构-Astar算法-最短路径
- code hunt JAVA01
- 用phpcms如何将静态页面制作成企业网站(中)
- 操作系统——进程和线程管理一节总结(1)
- R语言中package ‘xxxx’ is not available (for R version 3.2.5)解决
- 工作三年后对自己的告诫-
- 数据结构 最短路径之—迪杰斯特拉算法
- Ubuntu-unable to resolve host
- 002_第一个SpringBoot项目
- Linux信号(Signal)
- 蚂蚁的难题(八)
- Dataguard一主多备配置报错处理
- 3.揭秘angular2学习 ------- 模版
- 1052. 卖个萌 (20)
- 信号处理中的滤波器的阶数和谐波的理解