用一种方法计算以下问题的最短路径表 1 订单信息表订单号 目的地 坐标 货物类型种0配送中心 o 1156 651 a 1189 42 b 82112 53 c 1047 24 d 14527 25 e 15324 26 f 184112 57 g 174117 38 h 16497 49 i 2679 210 j 385 311 k 1431 312 l 18684 313 m 189104 4
采用 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,路径为空;其他订单的目的地、最短距离和最短路径均已计算出
原文地址: http://www.cveoy.top/t/topic/hpGD 著作权归作者所有。请勿转载和采集!