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

对于该问题我们可以进行初步建模:
式中\(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提出,模型如下:
式中\(N=|V|\)表示点集\(Z\)中点的个数。
将该模型的第三个消除子回路的约束单独提出来:
式中\(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,模型如下:
MTZ计算公式通过引入人工变量\(\mu\)来消除子回路,单独提出第三个约束:
\(\mu_i\)的值表示回路中节点\(i\)的次序,对于非连通的两个节点\(i\)和\(j\),上式可以变换为:
该式显然恒成立。
对于连通的两个节点\(i \rightarrow j\),上式可以变换为:
如上图中的子集\(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.