考虑下面网络,对于表明的链路开销,用dijkstra的最短路径
时间: 2023-09-30 20:12:15 浏览: 62
算法求解从节点A到其他节点的最短路径。
![image.png](attachment:image.png)
首先,初始化起点A到各个节点的距离为无穷大,起点A到自己的距离为0。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | ∞ | ∞ | ∞ | ∞ | ∞ | ∞ |
然后将起点A加入已访问节点集合S,更新与A相邻的节点的距离。
- 更新节点B的距离:A到B的距离为5,比原来的无穷大小,更新节点B的距离为5。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | ∞ | ∞ | ∞ | ∞ | ∞ |
- 更新节点C的距离:A到C的距离为1,比原来的无穷大小,更新节点C的距离为1。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | 1 | ∞ | ∞ | ∞ | ∞ |
- 更新节点D的距离:A到D的距离为2,比原来的无穷大小,更新节点D的距离为2。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | 1 | 2 | ∞ | ∞ | ∞ |
现在已经更新了所有与A相邻的节点的距离,我们需要从未访问节点中选择一个距离最小的节点,将其加入已访问节点集合S,并更新与该节点相邻的节点的距离。
此时,节点C的距离最小,将其加入已访问节点集合S,并更新与C相邻的节点的距离。
- 更新节点E的距离:C到E的距离为3,比原来的无穷大小,更新节点E的距离为4。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | 1 | 2 | 4 | ∞ | ∞ |
此时,节点D的距离最小,将其加入已访问节点集合S,并更新与D相邻的节点的距离。
- 更新节点F的距离:D到F的距离为1,比原来的无穷大小,更新节点F的距离为3。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | 1 | 2 | 4 | 3 | ∞ |
此时,节点B的距离最小,将其加入已访问节点集合S,并更新与B相邻的节点的距离。
- 更新节点G的距离:B到G的距离为4,比原来的无穷大小,更新节点G的距离为9。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | 1 | 2 | 4 | 3 | 9 |
此时,节点F的距离最小,将其加入已访问节点集合S,并更新与F相邻的节点的距离。
- 更新节点G的距离:F到G的距离为2,比原来的9小,更新节点G的距离为5。
| 节点 | A | B | C | D | E | F | G |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 距离 | 0 | 5 | 1 | 2 | 4 | 3 | 5 |
现在已经找到了从节点A到其他节点的最短路径。