Dijkstra算法可用于求最短路径。他本质上会求出起点到其他所有点的最短路径
假设A为起点
Dijkstra算法的思想是建立2个集合S和U,S用于存放已经求出最短路径的点的集合,U用于存放尚未求出最短路径的集合。计算过程如下
1 从U中选择距离A最近的点A',放入S中
2 以A'为中间点,更新A到其余点的路径
3 重复上面的步骤,直到U中的点都被包含在S中
步骤 | S | U | 路径 | 操作 |
1 | A | B、C、D、E、F | A-B 6 | 选择C点放入S 并更新路径表 |
2 | AC | BDEF | A-C-B 5 A-C 3 A-C-D 6 A-C-E 7 A-F ∞ | 选择B点放入S 并更新路径表 |
3 | ACB | DEF | A-C-B 5 A-C 3 A-C-D 6 A-C-E 7 A-F ∞ | 选择D点放入S 并更新路径表 |
4 | ACBD | EF | A-C-B 5 A-C 3 A-C-D 6 A-C-E 7 A-C-D-F 9 | 选择E点放入S 并更新路径表 |
5 | ACBDE | F | A-C-B 5 A-C 3 A-C-D 6 A-C-E 7 A-C-D-F 9 | 选择F点放入S 并更新路径表 |
6 | ACBDEF | A-C-B 5 A-C 3 A-C-D 6 A-C-E 7 A-C-D-F 9 | 结束 |