采用 Dijkstra 算法计算最短路径表:

首先初始化起点到各个点的最短距离,将起点标记为已访问,然后遍历所有未访问的点,找到当前距离起点最近的点,并标记为已访问。然后更新该点到其他未访问点的距离,并记录路径。

以下是计算过程:

起点为 0

| 访问的点 | 最短距离 | 路径 | | -------- | -------- | ---- | | 0 | 0 | - | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | | | | ∞ | |

第一次遍历,距离起点最近的是节点 8,将其标记为已访问

| 访问的点 | 最短距离 | 路径 | | -------- | -------- | ---- | | 0 | 0 | - | | 8 | 1.4 | 0-8 | | | 2.9 | | | | 3.0 | | | | 4.0 | | | | 4.0 | | | | 3.0 | | | | 2.9 | | | | ∞ | | | | 5.1 | | | | 5.3 | | | | 4.5 | | | | 3.3 | | | | 3.5 | | | | 5.7 | | | | 5.8 | | | | 3.0 | | | | 5.0 | | | | 3.8 | | | | 3.4 | | | | 4.7 | |

第二次遍历,距离起点最近的是节点 9,将其标记为已访问

| 访问的点 | 最短距离 | 路径 | | -------- | -------- | ---- | | 0 | 0 | - | | 8 | 1.4 | 0-8 | | 9 | 5.1 | 0-8-9| | | 3.0 | | | | 4.0 | | | | 4.0 | | | | 3.0 | | | | 2.9 | | | | 6.9 | | | | 4.7 | | | | 5.3 | | | | 4.5 | | | | 3.3 | | | | 3.5 | | | | 5.7 | | | | 5.8 | | | | 3.0 | | | | 5.0 | | | | 3.8 | | | | 3.4 | | | | 4.7 | |

依此类推,直到所有点都被访问过。

最终得到的最短路径表如下:

| 订单号 | 目的地 | 最短距离 | 最短路径 | | ------ | ------ | -------- | ------------------------ | | 0 | o | 0 | - | | 1 | a | 5.8 | 0-8-1 | | 2 | b | 3.1 | 0-2 | | 3 | c | 2.8 | 0-3 | | 4 | d | 4.0 | 0-4 | | 5 | e | 4.0 | 0-5 | | 6 | f | 3.0 | 0-6 | | 7 | g | 2.9 | 0-7 | | 8 | h | 1.4 | 0-8 | | 9 | i | 5.1 | 0-8-9 | | 10 | j | 5.3 | 0-10 | | 11 | k | 4.5 | 0-11 | | 12 | l | 3.3 | 0-12 | | 13 | m | 3.5 | 0-13 | | 14 | n | 5.7 | 0-14 | | 15 | p | 5.8 | 0-15 | | 16 | q | 3.0 | 0-16 | | 17 | r | 5.0 | 0-17 | | 18 | s | 3.8 | 0-18 | | 19 | t | 3.4 | 0-19 | | 20 | u | 4.7 | 0-8-20 | | 21 | v | 5.1 | 0-11-21 |

其中,订单号为 0 的目的地为配送中心,距离为 0,路径为空;其他订单的目的地、最短距离和最短路径均已计算出。

Dijkstra 算法计算最短路径表 - 物流配送路线优化

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

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