使用Dijkstra算法来求解最短路径。

首先,创建一个空的集合S,用来存放已经找到最短路径的点。 创建一个数组dist,用来存放从起点到每个点的最短路径长度,初始值为无穷大。 创建一个数组prev,用来存放每个点的前一个点,初始值为-1。

将起点设为当前点,将起点加入集合S。 将起点的最短路径长度设为0。

然后,重复以下步骤,直到集合S包含所有点:

  1. 遍历所有点,找到当前点到其他点的最短距离,且该点不在集合S中。
  2. 如果找到了一个更短的路径,则更新该点的最短路径长度。
  3. 更新该点的前一个点为当前点。
  4. 将该点加入集合S。

最后,根据数组prev可以得到从起点到终点的最短路径。

根据以上算法,可以得到从点1到点11的最短路径为:1 -> 4 -> 7 -> 10 -> 11,路径长度为8。

求点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

原文地址: https://www.cveoy.top/t/topic/iaqj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录