码迷,mamicode.com
首页 > 编程语言 > 详细

课上Dijkstra算法练习

时间:2017-11-17 23:30:58      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:技术   技术分享   注意   ...   9.png   最短路   自己的   com   学习   

课上Dijkstra算法练习

Dijkstra算法,求解附图顶点A的单源最短路径,在纸上画出求解过程,上传截图。(注意图上要有自己的学号和姓名)

技术分享图片

  • 老师在上课时的ppt中讲解过程如下图:
    技术分享图片

  • 参考理解最短路径——迪杰斯特拉(dijkstra)算法,得出完整的算法原理。
    • ①首先,引入一个辅助向量D,它的每个分量D[i]表示当前所找到的 Dijkstra算法运行动画过程 Dijkstra算法运行动画过程 从起始点 (即源点 )到其它每个顶点 的长度。例如,D[3] = 2表示从起始点到顶点3的路径相对最小长度为2。这里强调相对就是说在算法执行过程中D的值是在不断逼近最终结果但在过程中不一定就等于长度。

    • ②D的初始状态为:若从v 到v[i]有弧(即从v到v[i]存在连接边),则D[i]为弧上的权值(即为从v到v[i]的边的权值);否则置D[i]为∞。显然,长度为 D[j]= Min{ D |v[i]∈V } 的路径就是从v出发到顶点v[j]的长度最短的一条路径,此路径为(v,v[j])。

    • ③那么,下一条长度次短的是哪一条呢?也就是找到从源点v到下一个顶点的最短路径长度所对应的顶点,且这条最短路径长度仅次于从源点v到顶点v[j]的最短路径长度。 假设该次短路径的终点是v[k],则可想而知,这条路径要么是(v,v[k]),或者是(v,v[j],v[k])。它的长度或者是从v到v[k]的弧上的权值,或者是D[j]加上从v[j]到v[k]的弧上的权值。

    • ④一般情况下,假设S为已求得的从源点v出发的最短路径长度的顶点的集合,则可证明:下一条次最短路径(设其终点为x)要么是弧(v,x),或者是从源点v出发的中间只经过S中的顶点而最后到达顶点 的路径。 因此,下一条长度次短的的最短路径长度必是D[j]= Min{ D[i] |v[i]∈V-S },其中D 要么是弧( v,v[i])上的权值,或者是Di和弧(v[k] ,v[i] )上的权值之和。

技术分享图片

  • 那么看回这道题目,我起初的答案是下图,错在了...题目抄错了,很无语吧。
    技术分享图片

  • 那么通过课下的学习,如何修改过程以及结果呢?
    技术分享图片

感想:

  • 课堂上认真听讲努力消化,课下再花功夫搞清楚。但是题目抄错还是只有一次就够了(捂脸)。

课上Dijkstra算法练习

标签:技术   技术分享   注意   ...   9.png   最短路   自己的   com   学习   

原文地址:http://www.cnblogs.com/zsy20162301/p/7854076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!