旅行商问题的两种经典求解方法


背景

旅行商问题(Travelling salesman problem, TSP)是一个典型的整数规划问题,给定一系列点集\(V(|V|=n)\),在点集中从一点出发,寻找一条最短路径,该路径经过点集中的所有点,并且每个点只经过一次。

对于该问题我们可以进行初步建模:

\[\begin{aligned} \min & \sum_{i} \sum_{j} c_{i j} x_{i j} & \\ &\sum_{i \in V} x_{i j}=1, & \forall j \in V, i \neq j \\ &\sum_{j \in V} x_{i j}=1, & \forall i \in V, i \neq j \\ & x_{i j} \in\{0,1\}, & \forall i, j \in V \end{aligned} \]

式中\(x_{i,j}\)表示从节点\(i\)到节点\(j\)的路径,\(c_{i,j}\)表示路径\(i \rightarrow j\)的长度;第一个约束保证一个节点只出发一次,第二个约束保证一个节点值到达一次。但是上述的两个约束并不能解决TSP问题,可能出现如下情况:

如上图,对于一个有6个节点的点集,(1)有子回路(2)无子回路均可以满足上式的约束条件,但很明显(1)有子回路不是TSP问题的解。

对于TSP问题,重点研究的表示如何消除子回路。下面介绍两种消除子回路的TSP问题求解方法。

Dantzig–Fulkerson–Johnson formulation

该方法由Dantzig,Fulkerson 和Johnson提出,模型如下:

\[\begin{aligned} \min &\sum_{i} \sum_{j} c_{i j} x_{i j} \\ & \sum_{i \in V} x_{i j}=1, &\forall j \in V, i \neq j \\ &\sum_{j \in V} x_{i j}=1, & \forall i \in V, i \neq j \\ &\sum_{i, j \in S} x_{i j} \leqslant|S|-1, & 2 \leqslant|S| \leqslant N-1, S \subset V \\ &x_{i j} \in\{0,1\}, & \forall i, j \in V \end{aligned} \]

式中\(N=|V|\)表示点集\(Z\)中点的个数。

将该模型的第三个消除子回路的约束单独提出来:

\[\sum_{i, j \in S} x_{i j} \leqslant|S|-1, 2 \leqslant|S| \leqslant N-1, S \subset V \]

式中\(S\)\(V\)的一个真子集,这个式子的含义是:对于一个\(V\)中的任意真子集\(S\)\(S\)中连通的节点边数小于节点个数。

如上图,对于一个有子回路的点集,其中的子集如\(S\{5,6,7\}=5 \rightarrow 6 \rightarrow 7 \rightarrow 5\)\(\sum_{i, j \in S} x_{i j}=3\nleqslant |S|-1\),不满足第三个约束。

Miller–Tucker–Zemlin formulation

该方法由Miller,Tucker和Zemlin,模型如下:

\[\begin{aligned} \min &\sum_{i} \sum_{j} c_{i j} x_{i j} & \\ &\sum_{i \in V} x_{i j}=1, & \forall j \in V, i \neq j \\ &\sum_{j \in V} x_{i j}=1, & \forall i \in V, i \neq j \\ &\mu_{i}-\mu_{j}+N x_{i j} \leqslant N-1, & \forall i, j \in V,2 \leq i \neq j \leq N\\ &x_{i j} \in\{0,1\}, \mu_{i} \geqslant 0, \mu_{i} \in \mathbf{R}^{1} & \forall i \in V \end{aligned} \]

MTZ计算公式通过引入人工变量\(\mu\)来消除子回路,单独提出第三个约束:

\[\mu_{i}-\mu_{j}+N x_{i j} \leqslant N-1, \forall i, j \in V,2 \leq i \neq j \leq N \]

\(\mu_i\)的值表示回路中节点\(i\)的次序,对于非连通的两个节点\(i\)\(j\),上式可以变换为:

\[\mu_i -\mu_j \leq N-1 \]

该式显然恒成立。

对于连通的两个节点\(i \rightarrow j\),上式可以变换为:

\[\mu_i \leq \mu_j-1 \]

如上图中的子集\(S\{5,6,7\}=5 \rightarrow 6 \rightarrow 7 \rightarrow 5\)\(\mu_5=1,\mu_6=2,\mu_7=3,\mu_5=4\),显然不满足第三个约束。

参考文献

[1] C. E. Miller, A. W. Tucker, and R. A. Zemlin, "Integer Programming Formulation of Traveling Salesman Problems," Journal of the ACM, vol. 7, no. 4, pp. 326-329, 1960-10-01 1960, doi: 10.1145/321043.321046.
[2] A. Langevin, F. Soumis, and J. Desrosiers, "Classification of travelling salesman problem formulations," Operations Research Letters, vol. 9, no. 2, pp. 127-132, 1990.