网络最短路依赖连通拓扑与成本定义
从节点、边、方向和权重理解路径求解,并处理转向、禁行、时间成本与拓扑错误。
网络最短路依赖连通拓扑与成本定义
道路、管线和河网可以表示为节点与边组成的图。最短路算法寻找累计成本最小的路径,但最短由成本定义:距离、时间、费用或风险会得到不同路线。几何最近不一定是业务最优。
图必须先正确连通
相交线只有建立共同节点后才能转向。立交桥平面相交却不应连通,道路端点有缝隙则可能看似相接但无法通行。捕捉容差过小留下断路,过大会把平行道路错误连接。
方向由源节点、目标节点和规则决定。双向边可有正反成本,单行边需要禁止反向。节点与边标识要稳定,支持增量更新和结果审计。
成本表达真实目标
按长度只需几何距离,按时间还需速度、转向、拥堵和时段。缺失速度不能默认为零或无限快。常见最短路要求非负成本,禁行应使用明确不可通行语义。
多目标加权隐含分钟、费用和风险可补偿,权重必须由业务验证。动态交通让成本随进入时间变化,普通静态图不能正确处理所有情况。
Dijkstra 与 A* 的保证有条件
Dijkstra 在非负成本图上得到最短路径。A* 使用到目标的启发式;启发式不高估剩余成本时仍保证最优。按时间路由时,欧氏距离要用合理最大速度转换。
先裁剪空间范围可加速,但范围太小会排除绕行的最优路线。算法速度不能以删除合法候选为代价。
转向属于边之间的约束
左转禁行、掉头和路口延迟取决于从哪条边进入、向哪条边离开,不能只存单边属性。需要转向表或扩展状态图。
忽略转向会产生车辆无法执行的路线,统一罚时又会扭曲直行。规则还可能随车型和时间变化,必须版本化。
起终点匹配影响结果
用户坐标通常不在网络节点上,需要匹配到可通行边。单纯找几何最近道路可能匹配到高架、封闭路或河对岸。应考虑等级、方向、垂直层级和最大距离。
超出容差时应返回无法匹配,而不是强行连接。路径总成本还应包含原位置到网络的接入段。
服务区不是普通缓冲区
服务区寻找成本阈值内可到达的网络。将结果转为多边形只是视觉近似,不能穿过不可通行屏障后仍解释为真实可达。
多车辆、容量、顺序和时间窗问题比单对最短路复杂,重复求多条最短路不能保证全局最优。
网络更新需要同步派生结构
道路新增、封闭和成本变化后,拓扑、预计算与缓存要一起更新。旧图可能返回已不存在的路径。更新过程应有版本标识,避免一次请求混用两版边。
跨行政区或数据供应商边界时,端点、方向和等级经常不一致。接边质量应单独验证。
验证覆盖拓扑与业务
自动检查可找孤立节点、悬挂边、异常度数、反向成本和连通分量。地图抽查要覆盖立交、隧道、边界和单行路。
用已知路线比较距离、时间与转向,测试无路、封路和跨区域。算法返回路径不等于路径合法,必须逐边验证当时约束。
运行中应记录图版本、成本模型、时间和边序列。网络变化后同一请求结果不同,才能解释来自数据还是算法。
预计算加速需要明确失效范围
收缩层次、地标和分区索引能显著减少查询范围,但预计算结果依赖图结构和边成本。道路封闭、转向变化或车型规则更新后,受影响的快捷边必须重建或绕开。只刷新原始边而继续使用旧加速结构,可能快速返回错误路线。
路径缓存的键应包含图版本、出行方式、时间条件和约束集合。起终点相同不代表请求等价,忽略车型或出发时间会把一条合法路线用于不适用场景。缓存失效应与网络发布原子关联,并允许按事件紧急清除。
动态成本需要满足时间一致性
拥堵、班次和施工使边成本随进入时间变化。若越晚出发反而可能更早到达,普通时间依赖 Dijkstra 的先进先出条件可能不成立,需要等待动作或更一般算法。用查询开始时的一张静态速度快照,无法表示路径途中交通继续变化。
公交与步行组合还涉及班次、换乘、站内通道和最低换乘时间。把公交线段当作普通道路边会产生不存在的连接。多模式路线应保存每段模式、时刻和换乘证据,并对错过班次与服务中断给出可解释结果。
地图匹配应与路由联合验证
GPS 轨迹存在漂移和低采样,逐点吸附最近道路容易在平行路之间跳跃。利用候选边、观测误差和网络可达性的序列匹配更稳健,但在隧道、复杂立交和新道路附近仍可能失败。低置信匹配不应作为速度和转向规则的确定证据。
历史轨迹用于估计成本时,要排除停车、绕行和定位异常,并按道路等级与时段评估覆盖。没有轨迹的边不能自动继承全网平均速度,应给出分层先验和不确定性。成本数据与拓扑来自不同日期时,也要检查道路标识是否仍能可靠连接。
评价要衡量整条行程而非单一距离
离线评价可比较到达时间误差、绕行率、非法转向、起终点接入和路线稳定性。两条路线时间接近时,频繁改变推荐会降低可用性,因此还要观察小数据变化是否导致大幅跳线。
线上异常应能定位到匹配、图、成本、算法或服务层。只记录总耗时无法复现问题。保留规范化请求、候选匹配和逐边成本,才能在数据更新后重放同一行程并判断修复是否有效。
网络最短路把空间几何转为图上的成本优化。只有连通、方向和成本都准确,最小数字才对应现实可执行路线。
资料依据
- pgRouting Project:pgRouting Manual,https://docs.pgrouting.org/latest/en/index.html
- PostGIS Project:PostGIS Official Manual,https://www.postgis.net/documentation/manual/