NP完全(NP-complete)とは、答えが「はい」のとき多項式の長さの証明書を多項式時間で検証できる判定問題のクラス NP に属し、かつ NP のすべての問題が多項式時間の多対一還元で帰着される判定問題の性質のことである。Cook–Levin の定理により、連言標準形の論理式の充足可能性 SAT は NP完全であり、そこから還元を連ねて 3SAT、独立集合・クリーク・頂点被覆、グラフの 3 彩色などが NP完全になる。NP完全問題のどれか 1 つが多項式時間で解ければ $\mathrm{P}=\mathrm{NP}$ となるので、$\mathrm{P}$ 対 $\mathrm{NP}$ 問題はこれらの問題が効率よく解けるかという問いと同じである。一方 2 彩色の判定は多項式時間でできる。
グラフを 3 色で塗れるか、Hamilton 閉路をもつか、論理式を真にする値の割り当てがあるか。こうした問題には共通の性質がある。答えが「はい」のときには短い証拠(塗り方、閉路、割り当て)があり、その証拠が正しいかどうかはすぐに確かめられる。しかし証拠を見つける効率のよい方法は知られていない。このような問題の集まりがクラス NP であり、その中で「最も難しい」問題が NP完全 な問題である。
ある問題が NP完全であるとは、NP のどの問題も、多項式時間の変換によってその問題に帰着できることをいう。Cook と Levin は、論理式の充足可能性の問題が NP完全であることを示した。いったん 1 つの NP完全問題が得られると、そこからの帰着を連ねて、グラフの彩色・独立集合・クリークなど多くの問題が NP完全であることが分かる。NP完全問題のどれか 1 つでも多項式時間で解ければ、NP のすべての問題が多項式時間で解ける(P $=$ NP)。
この記事では、Turing 機械を使って P・NP・多項式時間還元・NP完全を定義し、還元の基本性質、Cook–Levin の定理、3-充足可能性・独立集合・グラフの 3 彩色の NP完全性を証明する。
アルファベット $\Sigma$ は 2 個以上の記号からなる有限集合とし、$\Sigma$ の記号の有限列(語)全体を $\Sigma^*$、語 $w$ の長さを $|w|$ と書く。$\Sigma^*$ の部分集合を $\Sigma$ 上の言語という。判定問題は「答えが『はい』になる入力の全体」という言語として扱う。
Turing 機械は Turing機械 の定義「Turing 機械」の組 $M=(Q,\Gamma,\sqcup,q_0,\delta)$ を使い、様相・次の様相・停止の言葉も同じ記事の定義「様相と計算」に従う。
アルファベット $\Sigma\subset\Gamma\setminus\{\sqcup\}$ と、受理状態 $q_{\mathrm{acc}}\in Q$ を指定した Turing 機械 $M$ を考える。ただし、すべての $a\in\Gamma$ について $\delta(q_{\mathrm{acc}},a)$ は定義されていない(受理状態に入ると停止する)とする。
P に属する言語 $L$ は NP に属する(証明書を使わず、$R=\{w\#y: w\in L\}$ とすればよい)。NP の定義は CJW06 S. Cook「The P versus NP Problem」§1(pp. 87–88)の検証関係による定義と同じ形であり、MSm24 Definition 6.3.6(p. 206)とも同値である。
多テープの Turing 機械や、通常のプログラムで書いた手続きは、1 本テープの Turing 機械で多項式時間の増加だけで模倣できるので、P と NP はこうした計算のモデルの選び方によらない(MSm24 Theorem 6.2.2、p. 199。CJW06 p. 87)。この記事では証明しない。
グラフや論理式を入力とする問題は、標準的な符号化で語として表す。たとえば頂点 $1,\dots,n$ のグラフを、頂点数と辺の両端の番号を 2 進法で区切り記号を挟んで並べた語で表す。妥当な符号化どうしは多項式時間で互いに変換できるので、問題が P や NP に属するかどうかは符号化によらない。以下、構成が多項式時間で計算できることは、出力の長さが入力の長さの多項式で抑えられ、入力を何回か走査して書き出せることから従う、という形で述べる。
1 は 計算可能性理論 の定義「多対一還元」で、還元の写像に多項式時間の制限を付けたものである。NP完全は、同じ記事の定義「完全な計算可能枚挙集合」の多項式時間版にあたる(CJW06 Definitions 3・4、p. 91)。
1.$t$ ステップで書き換えられるのはマス $-t,\dots,t$ だけで、残りのマスには入力が残ることから従う。
1.ヘッドは 1 ステップで高々 1 マス動くので、$t$ ステップの間に書き換えられるのはマス $-t,\dots,t$ だけである。$f(w)$ の書かれたマス $0,\dots,|f(w)|-1$ はどれも空白でないので、書き換えられたマス($t$ 以下)か、もとの入力が残っているマス($|w|-1$ 以下)である。よって $|f(w)|-1\le\max\{t,|w|-1\}$ である。
1.還元の写像 $f,g$ について $g\circ f$ は lem-np-composition の 2 により多項式時間で計算でき、$w\in A\iff f(w)\in B\iff g(f(w))\in C$ である。
2.還元の写像を $f$ とすると $A=f^{-1}(B)$ であり、lem-np-composition の 2 から従う。
3.NP の任意の言語 $A$ について $A\le_{\mathrm p}B$ なので、1 により $A\le_{\mathrm p}C$ である。
4.$B$ が P に属するなら、NP の任意の $A$ は $A\le_{\mathrm p}B$ なので 2 により P に属する。P はつねに NP に含まれるので P $=$ NP である。逆に P $=$ NP なら、NP に属する $B$ は P に属する。$\square$
3 が新しい問題の NP完全性を示す標準的な方法であり、そのためには最初の NP完全問題が要る。
変数 $x_1,x_2,\dots$ と、その否定 $\neg x_1,\neg x_2,\dots$ をリテラルという。リテラルの空でない有限集合を節といい、節 $C$ は「$C$ のリテラルのどれかが真」を表す。節の有限列 $\varphi=(C_1,\dots,C_r)$ を連言標準形(CNF)の論理式といい、「すべての節が成り立つ」を表す。変数への真偽の割り当て $\nu$ が $\varphi$ を充足するとは、各節 $C_j$ が $\nu$ のもとで真になるリテラルを含むことをいう。
論理式は、変数 $x_i$ を記号 $\mathtt{x}$ と $i$ の 2 進表示で、否定を記号 $\neg$ で、節や論理式の区切りを区切り記号で表して語にする。SAT は NP に属する。実際、変数の割り当て(論理式に現れる変数ごとに 1 文字)を証明書とすれば、その長さは論理式の長さ以下であり、各節に真のリテラルがあるかを確かめる手続きは論理式の長さの多項式時間で済む。3SAT も同じ理由で NP に属する。
SAT は NP完全である。
SAT が NP に属することは上で見た。NP に属する任意の言語 $L\subset\Sigma^*$ について $L\le_{\mathrm p}\mathrm{SAT}$ を示す。NP の定義の $\Sigma_1,\#,c,R$ をとり、$R$ を多項式時間で判定する機械 $M=(Q,\Gamma,\sqcup,q_0,\delta)$ と、その時間の上界 $|u|^{d}+d$($d\ge1$)をとる。$p(s)=s^{d}+d$ とおくと $p$ は単調増加で $p(s)\ge s$ である。
入力 $w\in\Sigma^*$、$n=|w|$ に対し、$N=n^{c}+c$、$T=p(n+1+N)$ とおく。証明書 $y$ は $|y|\le N$ なので $|w\#y|\le n+1+N$ であり、$M$ は入力 $w\#y$ で $T$ ステップ以内に停止する。$T$ ステップの間、ヘッドはマス $-T,\dots,T$ の外に出ない。$M$ の計算を $T+1$ 行 $2T+1$ 列の表に書き、停止した後は同じ様相をくり返すとみなす。この表を変数で表す。$0\le t\le T$、$-T\le i\le T$、$a\in\Gamma$、$q\in Q$ について、次の命題変数を用意する。
大きさ.$\varphi_w$ の変数と節の個数は $T$ の多項式で、$w$ から多項式時間で書き出せる。
大きさ.変数は $(T+1)\bigl((2T+1)(|\Gamma|+1)+|Q|\bigr)$ 個で、節は $O(T^3)$ 個($H$ についての 2 個ずつの節が最も多い)、各節の長さは $O(T)$ 以下である。$\Gamma,Q,\delta$ は $L$ だけで決まる定数であり、$T$ は $n$ の多項式なので、$\varphi_w$ の長さは $n$ の多項式で抑えられ、$w$ から添字についての入れ子の繰り返しで書き出せる。よって $w\mapsto\varphi_w$ は多項式時間で計算できる。
$w\in L$ なら $\varphi_w$ は充足可能.$|y|\le N$、$w\#y\in R$ となる $y$ をとる。$M$ の入力 $w\#y$ での計算を $C_0,C_1,\dots,C_s$($s\le T$、$C_s$ は状態 $q_{\mathrm{acc}}$ の停止様相)とし、時刻 $t$ の変数を様相 $C_{\min(t,s)}$ のとおりに真偽を決める。1 は各時刻で記号・ヘッド・状態がただ 1 つであることから、2 は初期様相の形から(証明書の後ろは空白が続く)、3・4 は次の様相の定義と停止後のくり返しから、5 は $C_s$ の状態から成り立つ。3 の $|i+\epsilon|>T$ の節は、時刻 $t< T$ のヘッドの位置が $|i|\le t< T$ を満たすので前提が偽になり、成り立つ。
$M$ の入力 $w\#y$ での計算を $C_0,\dots,C_s$ とし、$t$ についての帰納法で「時刻 $t$ の行は $C_{\min(t,s)}$ であり、$|h_t|\le t$」を示す。$t=0$ は上で見た。時刻 $t< T$ で成り立つとする。$C_{\min(t,s)}$ が停止様相でなければ、$\delta(q_t,\tau_t(h_t))=(q',b,D)$ で、$|h_t+\epsilon|\le t+1\le T$ なので、3 の 3 つの節から $S_{t+1,q'}$、$X_{t+1,h_t,b}$、$H_{t+1,h_t+\epsilon}$ が真である。$i\ne h_t$ では $H_{t,i}$ が偽なので、4 により記号は変わらない。1 と合わせると、時刻 $t+1$ の行は次の様相そのものである。停止様相なら、3 の後半の節と 4 から同じ様相がくり返される。いずれの場合も $|h_{t+1}|\le t+1$ である。範囲の外のマスは空白のまま一度も読まれないので、表の行は様相を正しく表す。
この定理は Cook(1971)と Levin が独立に示した(CJW06 pp. 91–92)。証明の要点は、多項式時間の計算の全体が多項式の大きさの表に収まり、表が正しい計算であることが「隣り合う行の局所的な整合性」の連言で書けることである。
$\mathrm{SAT}\le_{\mathrm p}\mathrm{3SAT}$ であり、3SAT は NP完全である。
論理式 $\varphi$ の各節 $C=\{\ell_1,\dots,\ell_k\}$ を次のように置き換えた論理式を $\varphi'$ とする。$k\le3$ ならそのまま残す。$k\ge4$ なら、節ごとに新しい変数 $z_1,\dots,z_{k-3}$ を用意して、$k-2$ 個の節
$$
\{\ell_1,\ell_2,z_1\},\ \{\neg z_1,\ell_3,z_2\},\ \dots,\ \{\neg z_{k-4},\ell_{k-2},z_{k-3}\},\ \{\neg z_{k-3},\ell_{k-1},\ell_k\}
$$
に置き換える($2\le i\le k-3$ の節は $\{\neg z_{i-1},\ell_{i+1},z_i\}$)。$\varphi'$ は多項式時間で書き出せる。
新しい変数は $|\varphi|$ 個以下で、その添字の 2 進表示は $|\varphi|+1$ 桁以下なので、$\varphi'$ の長さは $|\varphi|$ の 2 乗の定数倍で抑えられる。
$\varphi$ が充足可能なら $\varphi'$ も.$\varphi$ を充足する割り当てをとる。$k\ge4$ の節 $C$ では、真のリテラル $\ell_j$ がある。$i\le j-2$ では $z_i$ を真、$i\ge j-1$ では偽とする。最初の節は $j\le2$ なら $\ell_j$ で、$j\ge3$ なら $z_1$ で真になる。中間の節 $\{\neg z_{i-1},\ell_{i+1},z_i\}$ は、$i\le j-2$ なら $z_i$、$i=j-1$ なら $\ell_j$、$i\ge j$ なら $\neg z_{i-1}$ で真になる。最後の節は、$j\ge k-1$ なら $\ell_j$ で、$j\le k-2$ なら $z_{k-3}$ が偽なので $\neg z_{k-3}$ で真になる。
$\varphi'$ を充足する割り当てを $x$ の変数に制限する。$k\ge4$ の節 $C$ の $\ell_1,\dots,\ell_k$ がすべて偽だとすると、最初の節から $z_1$ が真、中間の節から順に $z_2,\dots,z_{k-3}$ が真で、最後の節が偽になり矛盾する。よって各節に真のリテラルがある。
グラフ $G$ と自然数 $k$ の組で、$G$ が大きさ $k$ 以上の独立集合をもつもの全体を言語 IS とする。同様に、大きさ $k$ 以上のクリークをもつ組の言語を CLIQUE、大きさ $k$ 以下の頂点被覆(どの辺も少なくとも一方の端点がこの集合に入る頂点の集合)をもつ組の言語を VC とする。どれも NP に属する(頂点の集合を証明書にすればよい)。
$\mathrm{3SAT}\le_{\mathrm p}\mathrm{IS}$ であり、IS・CLIQUE・VC はいずれも NP完全である。
3SAT の論理式 $\varphi=(C_1,\dots,C_r)$ から、グラフ $G_\varphi$ を次のように作る。頂点は、各節 $C_j$ と $C_j$ のリテラル $\ell$ の組 $(j,\ell)$ である。同じ節の 2 頂点 $(j,\ell),(j,\ell')$ を結び、互いに否定の関係にあるリテラルの頂点 $(j,\ell)$ と $(j',\neg\ell)$ を結ぶ。$w(\varphi)=(G_\varphi,r)$ とおく。頂点は高々 $3r$ 個で、多項式時間で書き出せる。
充足する割り当てから各節の真のリテラルを 1 つずつ選べば大きさ $r$ の独立集合になり、逆に大きさ $r$ の独立集合は各節からちょうど 1 頂点を選び、矛盾のない割り当てを定める。
$\varphi$ を充足する割り当てがあれば、各節から真のリテラルを 1 つずつ選んだ $r$ 頂点は、節が異なり、互いに否定の関係にもない(両方が真になることはない)ので独立集合である。逆に大きさ $r$ の独立集合 $I$ があれば、同じ節の頂点は互いに隣接するので、$I$ は各節からちょうど 1 頂点を含む。$I$ のリテラルには互いに否定の関係にある組がないので、それらをすべて真にする割り当て(残りの変数は任意)が矛盾なく定まり、各節に真のリテラルがある。よって $\varphi\in\mathrm{3SAT}\iff w(\varphi)\in\mathrm{IS}$ である。
$k$ 色で彩色できるグラフ全体の言語を $k$COL とする。$k$COL は NP に属する(彩色を証明書にすればよい)。
$\mathrm{3SAT}\le_{\mathrm p}\mathrm{3COL}$ であり、3COL は NP完全である。
部品.入力の頂点 $u,v$ に対し、新しい頂点 $p,q,o$ を三角形に結び、辺 $up$、$vq$ を加えたものを論理和の部品といい、$o$ をその出力とする。色を $\mathsf T,\mathsf F,\mathsf N$ とし、$u,v$ の色が $\{\mathsf T,\mathsf F\}$ に属するとき次が成り立つ。
構成.3SAT の論理式 $\varphi$ からグラフ $G_\varphi$ を作る。三角形をなす 3 頂点 $\mathsf T,\mathsf F,\mathsf N$(色と同じ名前で呼ぶ)を置く。各変数 $x$ に頂点 $x$ と $\bar x$ を置き、$x$、$\bar x$、$\mathsf N$ を三角形に結ぶ。リテラル $\neg x$ の頂点は $\bar x$ とする。各節は、リテラルを重複させて 3 個に並べ $(\ell_1,\ell_2,\ell_3)$ とし(1 個なら $(\ell_1,\ell_1,\ell_1)$、2 個なら $(\ell_1,\ell_2,\ell_2)$)、入力 $\ell_1,\ell_2$ の論理和の部品の出力 $o_1$ と、入力 $o_1,\ell_3$ の部品の出力 $o_2$ を作り、$o_2$ を頂点 $\mathsf F$ と $\mathsf N$ に結ぶ。頂点は $3+2(\text{変数の数})+6(\text{節の数})$ 個で、多項式時間で書き出せる。
彩色から割り当てへ.$G_\varphi$ の 3 彩色をとる。頂点 $\mathsf T,\mathsf F,\mathsf N$ は三角形なので相異なる色をもち、色の名前を付け替えて、それぞれ色 $\mathsf T,\mathsf F,\mathsf N$ をもつとしてよい。変数の頂点 $x,\bar x$ は $\mathsf N$ と隣接し互いに隣接するので、一方が $\mathsf T$、他方が $\mathsf F$ である。$x$ の色が $\mathsf T$ のとき $x$ を真とすると、各リテラルの頂点の色が $\mathsf T$ であることとリテラルが真であることが同値になる。ある節のリテラルがすべて偽なら、(i) により $o_1=\mathsf F$、もう一度 (i) により $o_2=\mathsf F$ だが、$o_2$ は頂点 $\mathsf F$ と隣接するので矛盾する。よって割り当ては $\varphi$ を充足する。
割り当てから彩色へ.真のリテラルの頂点に $\mathsf T$、偽のものに $\mathsf F$ を付け、各節の部品を (i)(ii) で塗れば、$o_2=\mathsf T$ となる 3 彩色が得られる。
割り当てから彩色へ.$\varphi$ を充足する割り当てをとり、頂点 $\mathsf T,\mathsf F,\mathsf N$ に同じ名前の色を、真のリテラルの頂点に $\mathsf T$、偽のリテラルの頂点に $\mathsf F$ を付ける。各節で $\ell_1,\ell_2$ の一方が真なら (ii) で $o_1=\mathsf T$ とし、どちらも偽なら $p=\mathsf T$、$q=\mathsf N$、$o_1=\mathsf F$ とする((i) によりこれ以外の色はとれない)。$o_1$ と $\ell_3$ の少なくとも一方は $\mathsf T$ である(節に真のリテラルがあるので)。よって (ii) で $o_2=\mathsf T$ にでき、$o_2$ は $\mathsf F$・$\mathsf N$ と異なる色になる。部品の頂点に接する辺は、部品の三角形の辺、入力との辺、$o_2$ と頂点 $\mathsf F$・$\mathsf N$ の辺だけで、どれも両端の色が異なるので、これで $G_\varphi$ 全体の 3 彩色が得られる。
真偽の三角形・変数の三角形・節の部品に分けて作る方針は Eri19 §12.10(pp. 395–398)と同じである(節の部品の形は異なる)。
$k\ge3$ について $k$COL は NP完全である。
$k$ についての帰納法で示す。グラフ $G$ に、すべての頂点と隣接する新しい頂点 $a$ を加えたグラフを $G^+$ とする。$G$ が $k$ 色で塗れるなら、$a$ に新しい色を付けて $G^+$ は $k+1$ 色で塗れる。$G^+$ が $k+1$ 色で塗れるなら、$a$ の色は $G$ のどの頂点にも使われないので、$G$ は残りの $k$ 色で塗れる。$G\mapsto G^+$ は多項式時間で計算できるので $k\mathrm{COL}\le_{\mathrm p}(k+1)\mathrm{COL}$ であり、prop-np-reduction の 3 から従う。$\square$
2COL は P に属する。
次の手続きを考える。各連結成分で頂点 $r$ を 1 つ選び、幅優先探索で $r$ からの距離 $d(v)$ を求め、$d(v)$ の偶奇で色を付ける。最後に、すべての辺の両端の色が異なるかを確かめ、異なれば受理する。手間は頂点数と辺数の多項式である。
受理したなら 2 彩色が得られており、拒否したなら長さが奇数の閉じた歩道があるので 2 彩色は存在しない。
受理したなら、確かに 2 彩色が得られている。拒否したなら、ある辺 $uv$ で $d(u)\equiv d(v)\pmod 2$ である。$r$ から $u$ への最短の道、辺 $uv$、$v$ から $r$ への最短の道をつないだ閉じた歩道の長さ $d(u)+1+d(v)$ は奇数である。2 彩色では辺を 1 本たどるごとに色が入れ替わるので、奇数本たどって出発点に戻ると色が一致しない。よって $G$ は 2 彩色をもたず、拒否は正しい。$\square$
2 彩色をもつことは、奇数の長さの閉路をもたないこと(二部グラフ の定理「閉路の長さによる特徴付け」)と同値である。3 色では NP完全になる。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 還元の写像が多項式時間で計算できる | 指数時間で計算できる写像も還元に許す。NP の言語 $A$ は、長さ $\lvert w\rvert^c+c$ 以下の証明書をすべて試せば指数時間で判定できるので、$w\in A$ なら $1$、そうでなければ $0$ を返す写像で $A$ は言語 $\{1\}$ に還元される | NP困難な言語が NP の中で易しくないこと(P に属する $\{1\}$ が NP困難になる) |
| 色の数が 3 以上(cor-np-kcol) | 2COL(prop-np-2col) | NP完全であること(2COL は P に属し、P $\ne$ NP なら NP完全でない) |
| 節のリテラルが 3 個まで許される(thm-np-3sat) | 各節のリテラルが 1 個の論理式 | NP完全であること(充足可能であることは、ある変数 $x$ について節 $\{x\}$ と $\{\neg x\}$ がともに現れることがない、と同値で、これは多項式時間で確かめられる。P $\ne$ NP なら NP完全でない) |
| $o_2$ を頂点 $\mathsf F$・$\mathsf N$ に結ぶ辺(thm-np-3col の構成) | 充足不能な $\varphi=(\{x\},\{\neg x\})$ | $\varphi\in\mathrm{3SAT}\iff G_\varphi\in\mathrm{3COL}$(辺がないと (i)(ii) により $G_\varphi$ はつねに 3 色で塗れる) |
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する