背景
旅行商問題(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.