巡回セールスマン問題(traveling salesman problem)とは、$n$ 個の都市を頂点とする完全グラフの各辺に $0$ 以上の費用が与えられたとき、費用の和が最小の Hamilton 閉路(巡回路)を求める問題である。費用に何も仮定しなければ、最適値の定数倍以内の巡回路を多項式時間で求める方法があるだけで $\mathrm{P}=\mathrm{NP}$ となる。費用が三角不等式を満たせば、最小全域木を 2 重にして近道をする方法で最適値の $2$ 倍以内、最小費用の完全マッチングを加える Christofides の方法で $3/2$ 倍以内の巡回路が多項式時間で得られる。最適値は部分集合についての動的計画法で $O(n^22^n)$ 回の基本操作で求まり、組合せ最適化の代表的な問題である。
前提知識: Hamilton閉路, NP完全, 全域木, Euler閉路
いくつかの都市と、2 都市の間の移動費用が与えられたとき、すべての都市をちょうど 1 回ずつ訪れて出発点に戻る巡回路のうち、費用の和が最小のものを求める問題を 巡回セールスマン問題(traveling salesman problem、TSP)という。都市を頂点とする完全グラフで言えば、辺の費用の和が最小の Hamilton閉路 を求める問題である。巡回路は $(n-1)!/2$ 通りあり($n$ は都市の数)、すべてを調べる方法はすぐに使えなくなる。
この記事では次を証明する。費用に何も仮定しなければ、最適値の定数倍以内の巡回路を多項式時間で求める方法があるだけで P $=$ NP となる(thm-tsp-inapprox)。費用が三角不等式を満たせば、最小全域木を 2 重にして近道をする方法で最適値の $2$ 倍以内(thm-tsp-double-tree)、最小費用の完全マッチングを加える Christofides の方法で $3/2$ 倍以内(thm-tsp-christofides)の巡回路が多項式時間で得られる。最適値そのものは、部分集合についての動的計画法で $O(n^2 2^n)$ 回の基本操作で求まる(thm-tsp-dp)。
$n\ge3$ とし、$V=\{1,\dots,n\}$ を頂点とする 完全グラフ を $K_n$ と書く。各辺 $xy$ に費用 $c(xy)\ge0$ を与える($c(xy)=c(yx)$)。また $c(xx):=0$ とおく。$K_n$ の Hamilton 閉路(辺の集合とみなす)を 巡回路 といい、巡回路 $T$ の費用を $c(T)=\sum_{e\in T}c(e)$ と書く。辺の集合や辺の多重集合 $F$ についても同じく $c(F)$ と書く。
$n$ と費用 $c$ が与えられたとき、$c(T)$ が最小の巡回路 $T$ を求める問題を 巡回セールスマン問題 という。最小値を $\mathrm{OPT}=\mathrm{OPT}(c)$ と書く。費用がすべての $x,y,z\in V$ について 三角不等式 $c(xz)\le c(xy)+c(yz)$ を満たすとき、距離付きの(metric)巡回セールスマン問題という。
平面の点を都市とし、2 点の Euclid 距離を費用とすれば、三角不等式 により距離付きの問題になる。$c(xy)\ne c(yx)$ を許す非対称な版もあるが、この記事では扱わない。
巡回路は Hamilton閉路 の命題「完全グラフのHamilton閉路の個数」により $(n-1)!/2$ 個あるので、最小値は存在する。
$\alpha\ge1$ とする。費用が非負整数の入力に対し、多項式時間で(入力の 2 進表記の長さの多項式で抑えられる基本操作の回数で)巡回路 $T$ を出力し、つねに $c(T)\le\alpha\cdot\mathrm{OPT}$ を満たす手順を、巡回セールスマン問題の $\alpha$-近似アルゴリズム という。
1 辺 $1$ の正方形の頂点を順に $1,2,3,4$ とし、Euclid 距離を費用とする。巡回路は $3$ 個で、外周 $\{12,23,34,41\}$ の費用は $4$、対角線を 2 本使う $\{12,24,43,31\}$ と $\{13,32,24,41\}$ の費用はどちらも $2+2\sqrt2$ である。$\mathrm{OPT}=4$ である。最小全域木の 1 つ $\{12,23,34\}$(費用 $3$)は道で、辺 $41$ を足すと最適な巡回路になる。$\mathrm{OPT}=4\ge3$ は lem-tsp-mst の不等式の例である。
NP完全 の記事は、有向グラフが有向 Hamilton 閉路(すべての頂点をちょうど 1 回ずつ辺の向きに通って戻る閉路)をもつかの判定が NP完全であることを述べている(同記事の節「ほかの NP完全問題」、Eri19 §12.11、pp. 398–402。この記事では証明しない)。無向グラフでも同じである。
無向グラフが Hamilton 閉路をもつかの判定(HAM)は NP完全である。
閉路そのものを証明書にすれば、多項式時間で確かめられるので HAM は NP に属する。有向の判定からの多項式時間還元を作る。要点:有向グラフ $D$ の各頂点 $v$ を道 $v^-\,v^0\,v^+$ に置き換え、辺 $u\to v$ を辺 $u^+v^-$ にする。$v^0$ の次数が $2$ なので、無向の Hamilton 閉路は各 $v$ の 3 頂点を続けて通るしかなく、向きがそろう。
$D$ の頂点を $n$ 個とし($n\ge2$。$n=1$ なら有向 Hamilton 閉路はなく、下の $H$ は 3 頂点の道で Hamilton 閉路もない)、上のように $3n$ 頂点の無向グラフ $H$ を作る。$D$ に有向 Hamilton 閉路 $v_1\to v_2\to\dots\to v_n\to v_1$ があれば、$v_1^-v_1^0v_1^+v_2^-\cdots v_n^0v_n^+v_1^-$ は $H$ の Hamilton 閉路である。
逆に $H$ の Hamilton 閉路 $C$ があるとする。$v^0$ の隣接頂点は $v^-,v^+$ だけなので、$C$ は辺 $v^-v^0$、$v^0v^+$ をすべて通る。$C$ を、ある $x$ について $x^-\to x^0\to x^+$ と進む向きにたどる。$v^+$ の隣接頂点は $v^0$ と、辺 $v\to y$ についての $y^-$ だけなので、$v^-\to v^0\to v^+$ と進んだ後の頂点はある $y^-$($v\to y$ は $D$ の辺)である。$y^-$ で $C$ が使う 2 本は $v^+y^-$ と $y^-y^0$ なので、続けて $y^0\to y^+$ と進む。これをくり返すと、$C$ は 3 頂点の組を $x=w_1,w_2,\dots,w_n$ の順に $w_i^-\to w_i^0\to w_i^+$ と通り、$w_i\to w_{i+1}$ と $w_n\to w_1$ は $D$ の辺で、$C$ はどの頂点も 1 回だけ通るので $w_1,\dots,w_n$ は $D$ の頂点を 1 回ずつ並べたものである。よって $w_1\to\dots\to w_n\to w_1$ は $D$ の有向 Hamilton 閉路である。$H$ は $D$ から多項式時間で作れる。NP完全 の命題「還元の基本性質」の 3 により HAM は NP完全である。$\square$
定数 $\alpha\ge1$ について、巡回セールスマン問題(三角不等式を仮定しない)の $\alpha$-近似アルゴリズムが存在すれば P $=$ NP である。
$\alpha$-近似アルゴリズム $\mathcal{A}$ があるとして、HAM を多項式時間で判定する。頂点が $n\ge3$ 個のグラフ $G$($n\le2$ なら Hamilton 閉路はない)に対し、$K:=\lceil\alpha n\rceil+1$ とおき、$G$ の辺には費用 $1$、$G$ の辺でない頂点の対には費用 $K$ を与える。$K$ は $n$ の 1 次式で抑えられるので、この入力は多項式時間で作れる。$\mathcal{A}$ の出力 $T$ がすべて $G$ の辺からなるかを確かめ、そうなら「Hamilton 閉路あり」と答える。
$G$ が Hamilton 閉路をもてば $\mathrm{OPT}=n$ なので $c(T)\le\alpha n< K$ であり、$T$ は費用 $K$ の辺を含まない。よって $T$ は $G$ の Hamilton 閉路で、答えは正しい。$G$ が Hamilton 閉路をもたなければ、どの巡回路も $G$ の辺でない対を含むので、答えは「なし」になり正しい。こうして HAM は P に属し、prop-tsp-ham と NP完全 の命題「還元の基本性質」の 4 により P $=$ NP である。$\square$
証明は $\alpha$ を $n$ の関数にしても、$K$ が入力の大きさの多項式時間で書ける限り(たとえば $\alpha(n)=2^n$)通る(WS11 Theorem 2.9、p. 43)。この入力は一般には三角不等式を満たさない。共通の隣接頂点 $y$ をもつ辺でない対 $x,z$ では $c(xz)=K>2=c(xy)+c(yz)$ だからである。三角不等式を仮定すると、次の節のように定数倍の近似ができる。
2 つの道具を用意する。$K_n$ の全域木(全域木)のうち費用が最小のものを 最小全域木 といい、全域木 の定理「Kruskal法の正しさ」により、辺を費用の順に並べて閉路を作らない限り採用する方法で多項式時間で求まる。
最小全域木の費用を $c(\mathrm{MST})$ と書くと、$c(\mathrm{MST})\le\mathrm{OPT}$ である。
最適な巡回路から辺を 1 本除くと Hamilton 路になり、これは全域木である。費用は $0$ 以上なので、その費用は $\mathrm{OPT}$ 以下で、$c(\mathrm{MST})$ 以上である。$\square$
費用が三角不等式を満たすとする。$K_n$ の辺の多重集合 $M$ で、$(V,M)$ が連結な多重グラフで各頂点の次数が偶数のものから、$c(T)\le c(M)$ となる巡回路 $T$ が多項式時間で得られる。
Euler閉路 の定理「Euler の定理」により $(V,M)$ には Euler 閉路 $(y_0,y_1,\dots,y_L=y_0)$ があり、これは多項式時間で求まる(WS11 p. 45)。この列で各頂点が初めて現れる順に $x_1=y_0,x_2,\dots,x_n$ と並べ、$T=\{x_1x_2,\dots,x_{n-1}x_n,x_nx_1\}$ とする。$x_i=y_{a_i}$(初めて現れる位置、$a_1=0< a_2< \dots< a_n$)とし、$a_{n+1}:=L$ とすると、三角不等式をくり返し使って
$$
c(x_ix_{i+1})\le\sum_{j=a_i+1}^{a_{i+1}}c(y_{j-1}y_j)\qquad(1\le i\le n,\ x_{n+1}:=x_1)
$$
である。右辺の区間は互いに重ならず、合わせると Euler 閉路全体になるので、$c(T)\le c(M)$ である。$\square$
距離付きの巡回セールスマン問題で、最小全域木 $T_0$ の各辺を 2 本にした多重集合に lem-tsp-shortcut を当てる手順は 2-近似アルゴリズムである。
各辺を 2 本にすると各頂点の次数は偶数で、$T_0$ は連結なので lem-tsp-shortcut が使える。得られる巡回路 $T$ は $c(T)\le2c(T_0)\le2\,\mathrm{OPT}$ を満たす(lem-tsp-mst)。各段は多項式時間である。$\square$
次数が奇数の頂点だけを結び直せば、2 重にする必要はない。頂点の集合 $U$(偶数個)の 完全マッチング とは、$U$ の頂点を 2 個ずつ組にした辺の集合をいう。費用が最小の完全マッチングは多項式時間で求まる(WS11 p. 46 が組合せ最適化の古典的な結果として引いている。この記事では証明しない)。
距離付きの巡回セールスマン問題で、次の手順は $3/2$-近似アルゴリズムである。最小全域木 $T_0$ をとり、$T_0$ で次数が奇数の頂点の集合 $O$ に費用最小の完全マッチング $N$ をとり、多重集合 $T_0+N$ に lem-tsp-shortcut を当てる。
次数の和 $2\lvert T_0\rvert$ は偶数なので $\lvert O\rvert$ は偶数で、$N$ はとれる。$T_0+N$ は連結で、$O$ の頂点の次数は $1$ 増え、ほかは変わらないので、すべて偶数である。よって巡回路 $T$ で $c(T)\le c(T_0)+c(N)$ となるものが得られる。
$c(N)\le\mathrm{OPT}/2$ を示す。$O=\emptyset$ なら明らか。そうでなければ、最適な巡回路を 1 周する順に $O$ の頂点を $o_1,\dots,o_{2k}$ と並べ、$o_{2k+1}:=o_1$ とする。巡回路は $o_i$ と $o_{i+1}$ を結ぶ $2k$ 本の互いに辺を共有しない部分の道に分かれ、三角不等式により $c(o_io_{i+1})$ はその部分の道の費用以下なので、$\sum_{i=1}^{2k}c(o_io_{i+1})\le\mathrm{OPT}$ である。$N_1=\{o_1o_2,o_3o_4,\dots,o_{2k-1}o_{2k}\}$ と $N_2=\{o_2o_3,\dots,o_{2k}o_1\}$ はどちらも $O$ の完全マッチングで($k=1$ なら $N_1=N_2=\{o_1o_2\}$)、$c(N_1)+c(N_2)$ は上の和に等しい。よって $c(N)\le\min\{c(N_1),c(N_2)\}\le\mathrm{OPT}/2$ である。
lem-tsp-mst と合わせて $c(T)\le\mathrm{OPT}+\mathrm{OPT}/2$ である。$\square$
WS11 は、木を 2 重にする方法(Theorem 2.12、p. 46)と Christofides の方法(Theorem 2.13、pp. 46–47)を同じ近道の議論で示している。距離付きの問題でも、P $\ne$ NP なら $220/219$ より小さい定数 $\alpha$ の $\alpha$-近似アルゴリズムはないことが知られている(WS11 Theorem 2.14、p. 47。この記事では証明しない)。
$n\ge3$ とし、頂点 $1$ と各 $j\ge2$ の費用を $1$、$j,j'\ge2$ の費用を $2$ とすると、三角不等式を満たす。最小全域木は頂点 $1$ を中心とする星(費用 $n-1$)で、どの巡回路も頂点 $1$ に接する辺をちょうど 2 本使うので $\mathrm{OPT}=2+2(n-2)=2n-2$ である。この例では木を 2 重にする方法の出力も費用 $2n-2$ で最適だが、比 $\mathrm{OPT}/c(\mathrm{MST})=(2n-2)/(n-1)=2$ であり、lem-tsp-mst の下界だけで 2 より良い保証を得ることはできない。
巡回路を全部調べると $(n-1)!/2$ 個を比べることになる。途中まで作った道の「通った頂点の集合」と「最後の頂点」だけを覚えれば、手間は $n^22^n$ 程度に減る(Bellman、Held と Karp による動的計画法)。
$S\subset\{2,\dots,n\}$ と $j\in S$ について、頂点 $1$ から出て $S$ の頂点をちょうど 1 回ずつ通り $j$ で終わる道の費用の最小値を $C(S,j)$ とする。このとき
$$
C(\{j\},j)=c(1j),\qquad C(S,j)=\min_{i\in S\setminus\{j\}}\bigl(C(S\setminus\{j\},i)+c(ij)\bigr)\quad(\lvert S\rvert\ge2),
$$
$$
\mathrm{OPT}=\min_{2\le j\le n}\bigl(C(\{2,\dots,n\},j)+c(j1)\bigr)
$$
が成り立つ。$C$ を $\lvert S\rvert$ の小さい順に計算すると、$\mathrm{OPT}$ は $O(n^22^n)$ 回の基本操作で求まる。
$\lvert S\rvert\ge2$ とする。$1$ から $S$ を通って $j$ で終わる道で、$j$ の直前の頂点を $i\in S\setminus\{j\}$ とすると、$i$ までの部分は $1$ から $S\setminus\{j\}$ を通って $i$ で終わる道で、費用は $C(S\setminus\{j\},i)$ 以上である。よって道の費用は右辺以上である。逆に、各 $i$ について $C(S\setminus\{j\},i)$ を実現する道に辺 $ij$ をつなぐと($j$ はその道に現れない)、$S$ を通って $j$ で終わる道になるので、$C(S,j)$ は右辺以下である。どの巡回路も、頂点 $1$ から出て残りの頂点を 1 回ずつ通る道に、最後の頂点 $j$ から $1$ へ戻る辺を足したものとして書け、逆にそのような道と辺はどれも巡回路を作るので、最後の式が成り立つ。
組 $(S,j)$ は $(n-1)2^{n-2}$ 個以下で、それぞれ $n$ 個以下の候補の最小をとるので、全体は $O(n^22^n)$ である。$\square$
$n=20$ では $(n-1)!/2\approx6.1\times10^{16}$ に対し $n^22^n\approx4.2\times10^8$ である。thm-tsp-inapprox により、P $\ne$ NP なら多項式時間の正確な方法はない。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 費用が $0$ 以上(lem-tsp-mst) | $n=3$ ですべての費用が $-1$ | $c(\mathrm{MST})\le\mathrm{OPT}$($c(\mathrm{MST})=-2$、$\mathrm{OPT}=-3$) |
| 三角不等式(thm-tsp-double-tree) | $n=4$、$c(12)=c(13)=c(14)=1$、$c(23)=c(34)=2$、$c(24)=R$($R>8$) | 出力の費用が $2\,\mathrm{OPT}$ 以下であること(下の説明) |
2 行目の費用は $c(24)=R>4=c(23)+c(34)$ で三角不等式だけを破る。最小全域木はただ 1 つで星 $\{12,13,14\}$(費用 $3$。ほかの全域木は費用 $2$ 以上の辺を含む)である。巡回路は $\{12,23,34,41\}$(費用 $6$)、$\{12,24,43,31\}$ と $\{13,32,24,41\}$(どちらも $R+4$)の 3 個で、$\mathrm{OPT}=6$ である。星を 2 重にした多重グラフの Euler 閉路として $1,2,1,4,1,3,1$ をとると、近道で巡回路 $\{12,24,43,31\}$(費用 $R+4>12=2\,\mathrm{OPT}$)が出力される。$R$ を大きくすれば比 $(R+4)/6$ はいくらでも大きくなる。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する