迪杰斯特拉算法

前言

复习计算机网络, 这里总结一下迪杰斯特拉算法过程, 方便复习.

迪杰斯特拉算法过程

表格中 "step" 代表算法代表第几步, Node代表目前已经求出的最短路径的节点, 每一步都更新一遍所有节点的最短的路径的值(∞代表没走到那个节点), 并确定一个路径最短的节点, 画下划线的是已经求出全局路径最小的节点.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)

第一步, 从0节点开始, 只可以到达节点1和节点7, 最选出最短的节点1.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)

第二步, 从节点1开始, 只可到达节点2和节点7, 通过 0 -> 1 -> 7 路径为7, 比路径8更短, 更新节点7的值, 并选出最短的节点7.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)
3 0, 1, 7 (4, 0) (12, 1) (13, 7) (7, 1) (8, 7)

第三步, 从节点7开始, 只可到达节点6和节点8, 选出最短的节点8.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)
3 0, 1, 7 (4, 0) (12, 1) (13, 7) (7, 1) (8, 7)
4 0, 1, 7, 8 (4, 0) (10, 8) (13, 7) (7, 1) (8, 7)

第四步, 从节点8开始, 只可到达节点2和节点6, 选出最短的节点2.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)
3 0, 1, 7 (4, 0) (12, 1) (13, 7) (7, 1) (8, 7)
4 0, 1, 7, 8 (4, 0) (10, 8) (13, 7) (7, 1) (8, 7)
5 0, 1, 7, 8, 2 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)

第五步, 从节点2开始, 只可到达节点3和节点5, 选出最短的节点6.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)
3 0, 1, 7 (4, 0) (12, 1) (13, 7) (7, 1) (8, 7)
4 0, 1, 7, 8 (4, 0) (10, 8) (13, 7) (7, 1) (8, 7)
5 0, 1, 7, 8, 2 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)
6 0, 1, 7, 8, 2, 6 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)

第六步, 从节点6开始, 可到达节点5, 选出最短的节点5.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)
3 0, 1, 7 (4, 0) (12, 1) (13, 7) (7, 1) (8, 7)
4 0, 1, 7, 8 (4, 0) (10, 8) (13, 7) (7, 1) (8, 7)
5 0, 1, 7, 8, 2 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)
6 0, 1, 7, 8, 2, 6 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)
7 0, 1, 7, 8, 2, 6, 5 (4, 0) (10, 8) (17, 2) (24, 5) (14, 2) (13, 7) (7, 1) (8, 7)

第七步, 从节点5开始, 可到达节点3和节点4, 选出最短的节点3.

step Node D(1),P(1) D(2),P(2) D(3),P(3) D(4),P(4) D(5),P(5) D(6),P(6) D(7),P(7) D(8),P(8)
1 0 (4, 0) (8, 0)
2 0, 1 (4, 0) (12, 1) (7, 1)
3 0, 1, 7 (4, 0) (12, 1) (13, 7) (7, 1) (8, 7)
4 0, 1, 7, 8 (4, 0) (10, 8) (13, 7) (7, 1) (8, 7)
5 0, 1, 7, 8, 2 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)
6 0, 1, 7, 8, 2, 6 (4, 0) (10, 8) (17, 2) (14, 2) (13, 7) (7, 1) (8, 7)
7 0, 1, 7, 8, 2, 6, 5 (4, 0) (10, 8) (17, 2) (24, 5) (14, 2) (13, 7) (7, 1) (8, 7)
8 0, 1, 7, 8, 2, 6, 5, 3 (4, 0) (10, 8) (17, 2) (24, 5) (14, 2) (13, 7) (7, 1) (8, 7)

第八步, 从节点3开始, 可以到达节点4, 选出最后一个节点: 节点4.

posted @ 2023-06-15 00:17  JohnnyGu  阅读(42)  评论(0编辑  收藏  举报