- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单向最短路径问题
课程名称 数据结构 17
授课题目
单向最短路径问题
授课日期
2003 年 12 月 17 日
授课班级
生物医学工程
授课时数
4
授课方式
理论课
授
课
重
点
、
难
点
1. 掌握Dijkstra算法思想
2. 掌握Floyd算法思想
3. 掌握Dijkstra、Floyd程序技巧
4. 了解Prim Kruskal算法
授课内容
、
教具与时间分配
授课内容
、
教具与时间分配
一、以课本p139图5.9加权有向图为例,解释Dijkstra算法思想。
1. 选择源点 ① ;
2. 将 ① 放入集合 S ;
3. 建立数组 dis[v]=cost[1][v] ,是源点① → 到各顶点(v)的距离;
4. 在数集 V-S 中,选择 dis[v] 值最小的顶点 (W),现为②,放入S,S={1,2} ;
5. 借道(W) ,调正①→(v)各顶点的距离 dis[v]:
原有: ① ----?(v) 距离
比较 二者中取较小值
借道(W): ①?(W)?(v) 距离
邻接矩阵
即: dis[v]=min{原dis[v],dis[w]+dis[w][v]}
6. 在V-S中,取dis[v]最小的顶点(w),现为④,放入S,S={1,2,4}
7. 再回到5.,循环操作,直至每个顶点进入S 。在dis[v]中即表示了原点到各顶点的最短带权路径。
课本 P139图5.9一共有n个顶点,操作n-1次(实际上第1点,最后一点,不作运算)。
Dijkstra 算法是最短路径长(弧的条数)不减原则,即弧条数只增加,不减少;
或称为权长不增原则,即权只减少,不增加。
二、解释课本p140程序 dijkstra.c
1. 调用函数adjmatrix(cost),生成邻接矩阵cost[][],返回顶点个数n ;
2. 调用函数prmatrix(cost,n),打印邻接矩阵cost[][];
3. 调用单源最短带权路径函数dijkstra(cost,n),求得源点①→(v)各顶点的最短路径;
4. 定义函数diskstra(cost,n)
(1) 定义数组okset[](S集合),当okset[i]=0,顶点(i)留在V-S集合;okset[i]=1,顶点(i)入选S集合;
(2)定义数组dis[],存放①→(v),从源点到其它顶点(v)的当前最短带权距离;
(3)赋初值 for(i=1;i=n;i++) { dis[i] 赋初值; okset[i] 赋初值0 ;}
(4)调用函数trace(okset,dis,n) ,打印初态的S集合和dis[];
(5)调整源点→各顶点的距离
for(i=1;i=n-1,i++)
{ 调用minicost(dis,okset,n) , 从V-S集合中选出dis[]值为最小的顶点(W);
okset[w]=1; /* 顶点(w)入选S数组 */
for(V=2;V=n;V++) /* 调整从源点①到其它顶点的距离 */
{ if(okset[v]==0)
{ sum=dis[w]+cost[w][v];/* 求①→(W)+(W)→(v)借道(W)的带权距离sum */
dis[v]=(dis[v]sum)? dis[v]:sum;/* 比较①→(v)与sum,取最小值并更新dis[v] */
}
调用trace(okset,dis,n) ;/* 打印一行当前入选S的顶点和当前①→(v)的最短路径 */
(6)调用函数putdist(dis,n) ;/*打印①→(v)的最后结果,从源点到各顶点(v)的最短带权路径*/
5.定义函数minicost(dis,okset,n)
在V-S中求取顶点(W),使在okset[]=0的顶点中dis[w]的值为最小,返回W ;
6.定义函数 putdist(dis,n) ;
打印最后结果,①→(v), 源点到各顶点的最短带权路径;
7.定义函数 trace(okset,dis,n)
打印一行当前值,是当前S集合中的顶点以及源点①到各顶点的当前最短带权路径。
例:第一行 1 0 0
文档评论(0)