Skip to content

最短路问题

最短路问题(Shortest Path Problem, SPP)是一类非常经典的问题。最短路问题可以描述为:给定一个有向图(或无向图) 是图中点的集合, 是图中边的集合。图中的每条边 都对应一个权重 。给定一个起点 )和一个终点 ),最短路问题就是要找一条从 出发、到达 的、总距离或总成本最小的路径。最基本的最短路问题并不是 NP-hard 问题,可以用 Dijkstra 等算法在多项式时间内求得最优解(Dijkstra et al., 1959),Dijkstra 算法的复杂度为 ,并且在不同数据结构下,复杂度会略有不同。

:图算法视角的实现与变体可参见本站 Dijkstra;本页仅写数学模型与 LP 松弛形式。

一、0–1 决策变量

最短路问题可建模为(线性)整数规划。先引入 0–1 决策变量 表示有向边 是否被选入 最短路。若将每条有向边记为 ,则下式中的 一一对应。

在以下以边集 为下标求和的写法中,记 为边 上距离或成本, 表示该边是否选用。

二、整数规划模型

目标为选取一条从 路,使所经过边的 之和最小:

流量守恒(源汇型)为:对每个节点 ,流出减流入在 处为 1、在 处为 -1、对其余节点为 0。

:上式中 表示自节点 出发的边 的全体, 表示进入 的边 的全体(与常见网络流记法中「出弧 / 入弧」的约定一致)。无向边在「最短路 as 0–1 子图」的写法里,常把无向边 用两条有向弧 表示,并令 与权重一致;在「边变量 只表示是否选边」的 ILP/关联矩阵写法里,则对每条无向 用单个 节点–边入射关系写平衡。两种都可在有向/无向同一实例上得到同一最短路,依实现择一写全即可(下文第二节起按有向弧 写完整 LP)。

三、约束的等价写法

(2) 也可写为带统一右端 的净供给形式(便于与网络流、LP 标准形对照):

其中

  • 时,
  • 时,
  • 为其余节点时,

四、整数最优解特性与 LP 松弛

该模型具有整数最优解特性(与「松弛后仍存在整数最优解」的叙述一致;理论细节可参见 最优整数解特性与幺模矩阵 及 Cappanera and Scaparra, 2011)。具体而言,即便将 0–1 变量 松弛为在 上取值的连续变量(即

),在适当条件下仍存在整数最优解,因而整数规划与盒约束下线性规划在最优解意义上可讨论等价性。理论背景见 最优整数解特性与幺模矩阵

五、等价的线性规划形式

由上述性质,在「考虑 LP 解仍为整数最优点」的语境下,可将模型写为下述线性规划(目标与 (1) 相同、约束为 (4) 与 ):

其中 与 (4) 中相同:、其余为 0。

:上列 (1)–(7) 是「最短路 as 0–1 路径流 / LP 松弛」的常见写法。实现时需注意有向边方向与 的唯一定义,以保证可复现性。

个人笔记