求点1到11的最短路径距离矩阵参考: 1 2 3 4 5 6 7 8 9 10 111 0 2 8 1 500 500 500 500 500 500 5002 2 0 6 500 1 500 500 500 500 500 5003 8 6 0 7 500 1 500 500 500 500 5004 1 500 7 0 500 500 9 500 500 500 5005 500 1 500
使用Dijkstra算法来求解最短路径。
首先,创建一个空的集合S,用来存放已经找到最短路径的点。 创建一个数组dist,用来存放从起点到每个点的最短路径长度,初始值为无穷大。 创建一个数组prev,用来存放每个点的前一个点,初始值为-1。
将起点设为当前点,将起点加入集合S。 将起点的最短路径长度设为0。
然后,重复以下步骤,直到集合S包含所有点:
- 遍历所有点,找到当前点到其他点的最短距离,且该点不在集合S中。
- 如果找到了一个更短的路径,则更新该点的最短路径长度。
- 更新该点的前一个点为当前点。
- 将该点加入集合S。
最后,根据数组prev可以得到从起点到终点的最短路径。
根据以上算法,可以得到从点1到点11的最短路径为:1 -> 4 -> 7 -> 10 -> 11,路径长度为8。
原文地址: https://www.cveoy.top/t/topic/iaqj 著作权归作者所有。请勿转载和采集!