Dijkstra算法 迪杰斯特拉算法 单源最短路径

 写在前边的话:写作不易,有帮助到你的话麻烦点赞收藏呦。感激不尽!如有错误也请留言指正

【东南大学2000四(10分)】试利用Dijkstra算法求下图中从顶点a到其他各顶点间的最短路径,写出执行算法过程中各步的状态。

Dijkstra算法 迪杰斯特拉算法 单源最短路径

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

Dijkstra算法 迪杰斯特拉算法 单源最短路径

由于我们在第一轮选择出来了距离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 cfedga

 至此,a点到其它点的最短路径及距离(每一行中红色的)全部求解完毕。

 写在后边的话:写作不易,有帮助到你的话麻烦点赞收藏呦。感激不尽!如有错误也请留言指正