写在前边的话:你的支持是我写作的动力,有帮助到你的话麻烦点赞加收藏呦。感激不尽!如有错误也请留言指正。
考研数据结构练习,欢迎订阅我的专辑《考研数据结构题型分类讲解练习》
【东南大学2000四(10分)】试利用Dijkstra算法求下图中从顶点a到其他各顶点间的最短路径,写出执行算法过程中各步的状态。
Round1
在第一轮中,填入b、c、d、e、f、g与a之间的距离,然后选出最短距离,并在下方标注路径
Round1 | Round2 | Round3 | Round4 | Round5 | Round6 | |
b | 15 | |||||
c | 2 a-c | |||||
d | 12 | |||||
e | ∞ | |||||
f | ∞ | |||||
g | ∞ | |||||
集合S | c |
Round2
由于我们在第一轮选择出来了距离a点最近的c点,所以在填第二轮的时候,其余的点如果通过c点可以使得距离变得更短,那么更新该点的值,并更新路径。以d点为例,在round1中,距离为∞,可是通过c点距离就变为了10,我们更新d点距离,并且更新路径。
Round1 | Round2 | Round3 | Round4 | Round5 | Round6 | |
---|---|---|---|---|---|---|
b | 15 | 15 | ||||
c | 2 a-c | |||||
d | 12 | 12 | ||||
e | ∞ | 10 a-c-e | ||||
f | ∞ | 6 a-c-f | ||||
g | ∞ | ∞ | ||||
集合S | c | cf |
Round3-Round6
填写第三轮时,就通过第二轮选出来的f点,同样是距离变短后就更新
其余的每一轮都是通过上一轮选出来的点,距离变短就更新
Round1 | Round2 | Round3 | Round4 | Round5 | Round6 | |
---|---|---|---|---|---|---|
b | 15 | 15 | 15 | 15 | 15 | 15 a-b |
c | 2 a-c | |||||
d | 12 | 12 | 11 a-c-f-d | 11 a-c-f-d | ||
e | ∞ | 10 a-c-e | 10 a-c-e | |||
f | ∞ | 6 a-c-f | ||||
g | ∞ | ∞ | 16 a-c-f-g | 16 a-c-f-g | 13 a-c-f-d-g | |
集合S | c | cf | cfe | cfed | cfedg | cfedgb |
至此,a点到其它点的最短路径及距离(每一行中红色的)全部求解完毕。
写在前边的话:你的支持是我写作的动力,有帮助到你的话麻烦点赞加收藏呦。感激不尽!如有错误也请留言指正。
考研数据结构练习,欢迎订阅我的专辑《考研数据结构题型分类讲解练习》