4. 量子路径规划的问题建模框架
路径规划在经典计算中通常被表述为图上的最短路或旅行商问题,而当我们希望借助量子算法(如量子退火、QAOA、Grover 搜索)求解时,第一步并不是写量子线路,而是把真实场景"翻译"成一个量子算法能够接受的数学模型。这个翻译过程如果做得不严谨,后面的量子资源估算、哈密顿量构造、参数调优都会建立在错误的基础上。本节围绕"抽象步骤"展开:从场景要素中识别决策变量,写出目标函数,再把现实限制转成约束条件,最后整理成量子算法可读的标准形式。
一、抽象的三个层次:场景层、模型层、量子层
建模不是一步到位的,建议明确区分三个层次,避免把业务语言和数学符号混在一起。场景层描述"有什么":路网节点、边权(距离、时间、能耗)、起终点、必须经过的点、禁行区域、容量限制等。模型层把场景层映射为变量、目标、约束,得到一个组合优化问题。量子层再把组合优化问题转成 QUBO(二次无约束二值优化)或 Ising 哈密顿量,供量子退火或 QAOA 使用。三层之间是单向抽象关系,但调试时常常需要回溯:如果量子层求解结果不合理,往往要回到模型层检查约束是否被正确编码。
二、决策变量:把"走哪条路"变成 0/1 变量
路径规划最自然的变量是边选择变量。设图 G=(V,E),对每条边 (i,j)∈E 定义 x_ij∈{0,1},x_ij=1 表示路径经过该边。这个定义简洁,但要注意有向与无向的区别:若道路允许双向通行,可把无向边拆成两条有向边,或直接使用无向变量并在约束中处理对称性。对于带时间窗或容量的问题,还需要引入辅助变量,例如到达节点 i 的时刻 t_i(连续或离散化),或车辆在节点 i 的剩余容量 c_i。
变量规模直接决定量子比特数。一个含 20 个节点、约 60 条边的中等路网,边变量就有 60 个,加上时间变量可能超过 100 个量子比特,这已经超出当前含噪量子设备的可用规模。因此建模时要主动做变量压缩:删除明显不可能出现在最优路径中的边(如远离起终点的支路),或采用节点访问变量 y_i 配合位置变量 z_{i,k}(表示第 k 步访问节点 i)的编码方式。不同编码的比特数与约束复杂度不同,需要在建模阶段权衡。
三、目标函数:把"最优"写成可最小化的表达式
目标函数是场景层"最优"含义的数学化。若只考虑距离,目标为 min Σ_{(i,j)∈E} w_ij·x_ij。若同时考虑时间与能耗,可写成加权和 min Σ (α·d_ij + β·t_ij + γ·e_ij)·x_ij,其中 α、β、γ 是量纲归一化后的权重。这里有一个容易被忽略的细节:不同量纲的物理量直接相加没有意义,必须先归一化,例如把距离除以最大边长、时间除以最大通行时间,使各项落在同一数量级,否则权重调节会失去可控性。
量子算法通常要求最小化,若场景是"最大化通行效率",需取负号转为最小化。此外,目标函数中的常数项不影响最优解,但在构造 QUBO 时应保留,因为它影响能量值的解读和惩罚项系数的相对大小。
四、约束条件:现实限制的数学表达
路径规划常见约束可归为四类。第一类是流守恒:起点净流出为 1,终点净流入为 1,中间节点流入等于流出,即 Σ_j x_ij − Σ_j x_ji = b_i,其中 b_s=1、b_t=−1、其余为 0。第二类是连通性与子回路消除:仅靠流守恒可能出现多个不相连的环,需要用 MTZ 约束或单商品流约束排除。第三类是必经点与禁行:必经点 i 要求 Σ_j x_ij = 1,禁行边直接令 x_ij=0 或从变量集中删除。第四类是资源约束:容量 Σ 需求·x_ij ≤ C,时间窗 t_j ≥ t_i + s_ij − M(1−x_ij)。
在量子建模中,约束不能像经典整数规划那样直接交给求解器,而要转成惩罚项加入目标函数。以流守恒为例,若某节点流入流出不平衡量为 δ_i,则加入 λ·δ_i² 作为惩罚,λ 需足够大以保证违反约束的解不会被误判为最优。λ 的选择是实践中的难点:太小则约束被突破,太大则能量景观被惩罚项主导,最优解附近的精细结构被淹没,退火过程容易陷入惩罚主导的局部极小。
五、从模型到 QUBO:一个可手算的示例
考虑一个 4 节点小例:节点 1 为起点,节点 4 为终点,边为 (1,2) 权 2、(1,3) 权 5、(2,4) 权 3、(3,4) 权 4、(2,3) 权 1。决策变量 x12、x13、x24、x34、x23 共 5 个。目标为 min 2x12+5x13+3x24+4x34+x23。流守恒约束:节点 1 要求 x12+x13=1;节点 4 要求 x24+x34=1;节点 2 要求 x12+x23=x24;节点 3 要求 x13=x34+x23。把这些等式写成"左减右等于 0",平方后乘 λ 加入目标,即得 QUBO 形式。手工枚举 2^5=32 种赋值可以验证:满足全部约束的可行路径只有 1→2→4(代价 5)和 1→3→4(代价 9),最优为前者,与经典 Dijkstra 结果一致。这个手算过程虽然简单,却是检验建模正确性的有效手段——在把问题交给量子设备之前,先用小规模实例确认 QUBO 的基态对应正确路径。
六、建模检查清单
完成抽象后,建议逐项核对:变量是否覆盖了所有可能路径且没有冗余;目标函数各项量纲是否已归一化;每条约束是否都有对应的惩罚项且系数经过量级估计;QUBO 矩阵是否对称化(通常取 (Q+Qᵀ)/2);小规模实例的基态是否与经典最优解一致;量子比特数是否在目标设备能力范围内。这六项中任何一项出问题,后续的量子求解都会给出看似合理却错误的结果,而错误往往难以从最终路径上直接看出,必须在建模阶段拦截。
需要强调的是,建模框架的价值不在于形式上的完整,而在于它把"业务上说得通"和"数学上可解"这两件事分开检验。场景层保证不遗漏现实限制,模型层保证数学表达自洽,量子层保证可执行。三层各自可验证,出问题时才能快速定位是抽象遗漏、约束编码错误,还是量子求解本身的局限。