Skip to content

P≠NP 予想とは何か:多項式時間・証明書・帰着で計算の壁を測る

Prerequisite:動的計画法:部分問題を一度だけ解いて指数時間を多項式時間に変える

Raw

This content is not available in your language yet.

  • P\mathrm{P} は「多項式時間で答えを出せる問題」、NP\mathrm{NP} は「答えが yes のとき、その根拠(証明書)を多項式時間で検算できる問題」のクラスです。NP の N は non-deterministic(非決定性)の頭文字であって、non-polynomial ではありません。
  • PNP\mathrm{P} \subseteq \mathrm{NP} は数行で証明できます。逆向きの包含 NPP\mathrm{NP} \subseteq \mathrm{P} が成り立つかどうかが未解決で、これが P≠NP 予想です。
  • 多項式時間帰着 ApBA \le_{\mathrm{p}} B は「BB が解ければ AA も解ける」を精密にした道具です。これを使うと「NP の中で最も難しい問題」= NP 完全問題を定義できます。SAT・3SAT・独立集合・巡回セールスマン(決定版)はすべて NP 完全です。
  • NP 完全問題がひとつでも多項式時間で解ければ P=NP\mathrm{P} = \mathrm{NP} が従い、NP に属するすべての問題が一斉に多項式時間で解けます。逆に PNP\mathrm{P} \ne \mathrm{NP} なら、NP 完全問題は 1 つも多項式時間では解けません。
  • P=NP\mathrm{P} = \mathrm{NP} なら公開鍵暗号は成立せず、組合せ最適化と(長さに上限を付けた)定理証明が自動化されます。この帰結があまりに強すぎることが、多くの研究者が PNP\mathrm{P} \ne \mathrm{NP} を予想する理由のひとつです。
  • 相対化・自然証明・代数化という 3 つの「障壁」が知られており、既存の証明技法の自然な範囲では決着しないことが定理として示されています。

1. 動機 — 「解ける」と「速く解ける」の間

Section titled “1. 動機 — 「解ける」と「速く解ける」の間”

1930 年代にチューリングとチャーチが確立した計算可能性の理論は、「原理的に解ける問題」と「どんなアルゴリズムでも解けない問題」を分けました。しかし実務家にとって重要なのは、その内側にあるもう 1 本の線です。停止することは分かっていても、答えが返るのが宇宙の年齢より先なら、解けていないのと同じだからです。

この「もう 1 本の線」を最初にはっきり書いたのは、1956 年にゲーデルがフォン・ノイマンに宛てた手紙だと言われています。ゲーデルはそこで、「ある論理式が長さ nn 以下の証明を持つかどうか」を機械が判定するのに必要なステップ数 φ(n)\varphi(n) を問題にし、それが nnn2n^2 のオーダーで済むのか、それとも本質的に指数的なのかと尋ねました。もし多項式で済むなら数学者の仕事の相当部分が機械に置き換わる、と彼は書いています。これが現在の P vs NP 問題とほぼ同じ問いです。

1960 年代に入ると、エドモンズが最大マッチングの論文で「良いアルゴリズム=入力サイズの多項式時間で動くアルゴリズム」という基準を明示し、コバムが同様の提案を独立に行いました。多項式時間を効率性の代理指標に選ぶ理由は 2 つあります。第 1 に、多項式は合成と加算について閉じているので、「多項式時間の部品を多項式回呼ぶ」プログラムがまた多項式時間になります。第 2 に、計算モデルを取り替えても多項式時間という枠は変わりませんRemark 3.2)。OO 記法とスケーラビリティの一般論は 計算量と O 記法 を、多項式時間アルゴリズムという枠組みそのものについては 多項式時間アルゴリズムの定義(Definition 7.1)[Complexity and Big-O Notation] を参照してください。

指数と多項式の差がどれくらい残酷かを数字で見ておきます。nn 個の真偽値の組合せをすべて試すと 2n2^n 通りです。n=100n = 100 なら 21001.27×10302^{100} \approx 1.27 \times 10^{30} 通りで、1 秒あたり 10910^9 通り調べられる計算機でも約 4.0×10134.0 \times 10^{13} 年、宇宙の年齢(およそ 1.38×10101.38 \times 10^{10} 年)の約 2900 倍かかります。一方 n3n^3 なら 10610^6 回、つまり 1 ミリ秒です。マシンを 1000 倍速くしても 2n2^n の側は nn が 10 増えるだけで元に戻ります(Example 5.4[Complexity and Big-O Notation])。指数時間の問題は「もっと速い計算機を買う」では解決しません。

巡回セールスマン問題(TSP)はこの落差の代表例です。nn 都市の巡回路をすべて数え上げると (n1)!/2(n-1)!/2 通りで、n=30n = 30 では約 4.4×10304.4 \times 10^{30} 通りになります。ところが 動的計画法 の考え方(Theorem 3.2[動的計画法])に基づく Held–Karp のアルゴリズムを使えば O(n22n)O(n^2 2^n)n=30n = 30 なら約 9.7×10119.7 \times 10^{11} 回の演算で済み、これは現実の計算機で数十分の仕事です。103010^{30}101210^{12} になったのは大進歩ですが、n=100n = 100 では 100221001.3×1034100^2 \cdot 2^{100} \approx 1.3 \times 10^{34} となり、やはり手が出ません。指数の底や係数を改善しても、指数であるかぎり壁は残ります。

では TSP に多項式時間アルゴリズムは存在しないのでしょうか。50 年以上探しても見つかっていませんが、「見つかっていない」と「存在しない」は別のことです。この記事の目的は、この差を数学の言葉で書き下し、「TSP が難しい」という直観を「TSP が多項式時間で解けるなら、NP に属するすべての問題が多項式時間で解ける」という定理に変えることです。

2. 準備 — 問題を「言語」として書き直す

Section titled “2. 準備 — 問題を「言語」として書き直す”

計算量を測るには、まず「問題」を数学的対象として固定する必要があります。標準的なやり方は、判定結果が yes/no の問題(決定問題)だけを扱い、それを文字列の集合と同一視することです。

Definition 2.1決定問題と言語

アルファベットを Σ={0,1}\Sigma = \{0, 1\} とし、Σ\Sigma^{*} で有限長のビット列全体を表します。Σ\Sigma^{*} の部分集合 LL言語と呼びます。決定問題とは、入力 xΣx \in \Sigma^{*} に対して「xLx \in L か」を答える問題のことであり、決定問題と言語を同一視します。数学的対象 OO(グラフ、論理式、整数の列など)をビット列に符号化したものを O\langle O \rangle と書きます。入力サイズ nn とは、入力ビット列の長さ x|x| のことです。

Remark 2.2

符号化の細部は普通は問題になりません。グラフを隣接行列で書くか隣接リストで書くかは互いに多項式時間で変換できるので、「多項式時間で解ける」という性質は変わらないからです。ただし例外が 1 つあります。整数を単進法(kkkk 個の 11)で書くことは禁じます。単進法は入力サイズを指数的に水増しし、指数時間のアルゴリズムを多項式時間に見せかけてしまうからです。整数は必ず 2 進法で符号化し、値 kk の入力サイズは log2(k+1)\lceil \log_2 (k+1) \rceil ビットとします。この約束は演習の部分和問題で効いてきます。

決定問題に限るのは一見不自由ですが、最適化問題は閾値を付けて決定問題に翻訳できます。「最短の巡回路の長さを求めよ」は「長さ kk 以下の巡回路が存在するか」という決定問題の族に置き換えられ、後者が多項式時間で解ければ二分探索で前者も多項式時間で解けます(Proposition 7.1 の後で詳しく述べます)。決定問題の難しさを調べれば最適化問題の難しさも分かる、ということです。

3. クラス P — 多項式時間で答えを出せる問題

Section titled “3. クラス P — 多項式時間で答えを出せる問題”

Definition 3.1クラス P

言語 LΣL \subseteq \Sigma^{*}P\mathrm{P} に属するとは、決定性チューリング機械 MM と多項式 pp が存在して、次の 2 条件がともに成り立つことをいいます。

  1. すべての入力 xΣx \in \Sigma^{*} に対し、MM は高々 p(x)p(|x|) ステップで停止する。
  2. すべての xΣx \in \Sigma^{*} に対し、MMxx を受理することと xLx \in L であることが同値である。

このような LL の全体を P\mathrm{P} と書きます。

条件 1 が「すべての入力に対して」であることに注意してください。平均的に速いだけでは足りず、最悪の入力でも多項式時間で止まることを要求します。

Remark 3.2

Definition 3.1 はチューリング機械で書いてありますが、P\mathrm{P} の中身は計算モデルに依存しません。1 テープ機械は多テープ機械を高々 2 乗のオーバーヘッドで、RAM モデルも多項式のオーバーヘッドで模倣でき、多項式の合成はまた多項式だからです。一方「多項式時間=実際に効率的」という読み替え(コバム–エドモンズのテーゼ)は経験則であって定理ではありません。n100n^{100} 時間のアルゴリズムは実用になりませんし、指数時間でも入力が小さければ十分使えます。それでも P\mathrm{P} が理論の基本単位に選ばれるのは、このモデル非依存性と閉包性のためです。

Example 3.3P に属する問題

次の問題はすべて P\mathrm{P} に属します。括弧内は代表的な計算量です。

  • ソート済みかどうかの判定、比較ソート(O(nlogn)O(n \log n)Theorem 4.2[Sorting Algorithms])。ソートアルゴリズム を参照してください。
  • グラフの連結性、幅優先探索・深さ優先探索(O(V+E)O(\lvert V \rvert + \lvert E \rvert)Proposition 3.3[グラフアルゴリズム])、単一始点最短経路(ダイクストラ法で O(ElogV)O(\lvert E \rvert \log \lvert V \rvert)Proposition 5.4[グラフアルゴリズム])、最大流、二部グラフの最大マッチング。グラフアルゴリズム を参照してください。
  • 線形計画法の実行可能性判定。単体法は最悪指数時間ですが、ハチヤンの楕円体法が 1979 年に多項式時間であることを示しました。
  • 素数判定。「整数 NN は素数か」は入力サイズ n=log2Nn = \lceil \log_2 N \rceil の多項式時間で解けます(Agrawal–Kayal–Saxena, 2004)。試し割りは N=2n/2\sqrt{N} = 2^{n/2} 回の割り算を要するので多項式時間ではない点に注意してください。

素数判定は、P\mathrm{P} への所属が自明でない例です。この問題が NPcoNP\mathrm{NP} \cap \mathrm{coNP} に属することは 1970 年代から知られていましたが、P\mathrm{P} に属すると証明されたのは 2002 年でした。「まだ多項式時間アルゴリズムが見つかっていない」ことは「存在しない」ことの証拠になりません。

TSP の巡回路を「見つける」のは大変ですが、誰かが巡回路を持ってきたときにそれが本当に長さ kk 以下かを「確かめる」のは簡単です。都市の並びに沿って重みを足して kk と比べるだけだからです。この非対称性、すなわち発見と検算の計算量の差を切り出したものが NP\mathrm{NP} です。

Definition 4.1クラス NP(検証器による定義)

言語 LΣL \subseteq \Sigma^{*}NP\mathrm{NP} に属するとは、多項式 pp と、多項式時間で動く決定性チューリング機械 VV検証器と呼びます)が存在して、すべての xΣx \in \Sigma^{*} に対して

xL    yΣ [yp(x) かつ V(x,y)=1]x \in L \iff \exists y \in \Sigma^{*} \ \bigl[\, |y| \le p(|x|) \ \text{かつ} \ V(x, y) = 1 \,\bigr]

が成り立つことをいいます。この yyxx に対する証明書(certificate、witness)と呼びます。ここで「VV が多項式時間」とは、VV が入力 (x,y)(x, y) に対して x+y|x| + |y| の多項式時間で停止することを意味します。

定義の 3 つの要素をそれぞれ確認してください。第 1 に、証明書は yes の側にしか要求されませんxLx \notin L のときは、どんな yy を持ってきても V(x,y)=0V(x,y) = 0 になることが求められます。第 2 に、証明書の長さに多項式の上限があります。この制限がないと、答えそのものを長々と書き下したものを証明書にできてしまい、定義が無意味になります。第 3 に、検証は決定性の多項式時間です。VVyy を推測してはならず、渡された yy を検算するだけです。

Remark 4.2

NP\mathrm{NP} の名前は「非決定性多項式時間(Non-deterministic Polynomial time)」に由来します。非決定性チューリング機械とは、各ステップで複数の遷移先から任意に 1 つを選べる機械で、「ある選び方で受理状態に達するなら受理」と定めます。LL が多項式時間の非決定性機械で受理されることと、Definition 4.1 の意味で LNPL \in \mathrm{NP} であることは同値です。実際、非決定性機械の各ステップでの選択肢を並べたものが証明書にほかならず、逆に証明書を非決定的に推測してから VV を走らせればよいからです。NP は「非多項式時間(non-polynomial)」の略ではありません。 この誤解は非常に多いので注意してください。

Definition 4.3充足可能性問題 SAT と 3SAT

命題変数 x1,,xnx_1, \ldots, x_n に対し、xix_i または ¬xi\lnot x_i の形の式をリテラル、リテラルの論理和 (1k)(\ell_1 \lor \cdots \lor \ell_k)、節の論理積 C1CmC_1 \land \cdots \land C_mCNF 論理式(連言標準形)といいます。真理値割当 α:{x1,,xn}{,}\alpha : \{x_1,\ldots,x_n\} \to \{\text{真}, \text{偽}\} が CNF 論理式 φ\varphi を真にするとき、α\alphaφ\varphi充足するといい、そのような α\alpha が存在する φ\varphi充足可能といいます。

SAT={φ:φ は充足可能な CNF 論理式}\mathrm{SAT} = \{\, \langle \varphi \rangle : \varphi \ \text{は充足可能な CNF 論理式} \,\}

とおきます。さらに、すべての節がちょうど 3 個のリテラルからなる CNF 論理式に制限したものを 3SAT\mathrm{3SAT} と書きます。

Example 4.4SAT の証明書を実際に検算する

φ=(x1¬x2x3)(¬x1x2)(¬x2¬x3)(x1x3)\varphi = (x_1 \lor \lnot x_2 \lor x_3) \land (\lnot x_1 \lor x_2) \land (\lnot x_2 \lor \lnot x_3) \land (x_1 \lor x_3)

に対し、証明書として割当 α=(x1,x2,x3)=(,,)\alpha = (x_1, x_2, x_3) = (\text{真}, \text{真}, \text{偽}) を渡されたとします。検証器は各節を順に評価します。

  • 第 1 節 (x1¬x2x3)(x_1 \lor \lnot x_2 \lor x_3)x1=x_1 = 真なので真。
  • 第 2 節 (¬x1x2)(\lnot x_1 \lor x_2)¬x1=\lnot x_1 = 偽ですが x2=x_2 = 真なので真。
  • 第 3 節 (¬x2¬x3)(\lnot x_2 \lor \lnot x_3)¬x2=\lnot x_2 = 偽ですが ¬x3=\lnot x_3 = 真なので真。
  • 第 4 節 (x1x3)(x_1 \lor x_3)x1=x_1 = 真なので真。

4 節すべてが真なので α\alphaφ\varphi を充足し、φSAT\langle \varphi \rangle \in \mathrm{SAT} が確かめられました。評価したリテラルは全部で 9 個、演算量は論理式の長さに比例します。証明書の長さは変数の個数 nn ビットで、明らかに論理式の長さ以下です。したがって SATNP\mathrm{SAT} \in \mathrm{NP} です。

一方、割当を探す側は 2n2^n 通りの候補を持ちます。この例では 23=82^3 = 8 通りなので総当たりでも一瞬ですが、n=100n = 100 なら §1 で見たとおり宇宙年齢の 2900 倍かかります。検算が O(n)O(n)、探索が 2n2^n。この落差が P vs NP 問題の正体です。

Remark 4.5

Definition 4.1 は yes と no を対等に扱っていません。φ\varphi が充足可能なら「この割当を見よ」で済みますが、φ\varphi充足不能であることを短く納得させる方法は知られていません。そこで

coNP={LΣ:ΣLNP}\mathrm{coNP} = \{\, L \subseteq \Sigma^{*} : \Sigma^{*} \setminus L \in \mathrm{NP} \,\}

と定義します。NP=coNP\mathrm{NP} = \mathrm{coNP} かどうかも未解決で、P=NP\mathrm{P} = \mathrm{NP} ならば NP=coNP\mathrm{NP} = \mathrm{coNP} が従います(演習 Exercise 9.1Exercise 9.4)。

Example 4.6巡回セールスマン問題(決定版)

入力は nn 都市の完全グラフ、各辺 {i,j}\{i,j\} の非負整数重み w(i,j)w(i,j)、および閾値 kk です。問いは「全都市をちょうど 1 回ずつ訪れて出発点に戻る閉路で、重みの総和が kk 以下のものが存在するか」です。この言語を TSP\mathrm{TSP} と書きます。

4 都市 A,B,C,DA, B, C, Dw(A,B)=3w(A,B) = 3w(A,C)=8w(A,C) = 8w(A,D)=5w(A,D) = 5w(B,C)=4w(B,C) = 4w(B,D)=9w(B,D) = 9w(C,D)=6w(C,D) = 6 とします。巡回路は回転と反転を同一視すると (41)!/2=3(4-1)!/2 = 3 通りで、それぞれの長さは次のとおりです。

  • ABCDAA \to B \to C \to D \to A3+4+6+5=183 + 4 + 6 + 5 = 18
  • ABDCAA \to B \to D \to C \to A3+9+6+8=263 + 9 + 6 + 8 = 26
  • ACBDAA \to C \to B \to D \to A8+4+9+5=268 + 4 + 9 + 5 = 26

したがって最短巡回路の長さは 1818 で、k=18k = 18 なら答えは yes、k=17k = 17 なら no です。k=18k = 18 の場合の証明書は都市の並び (A,B,C,D)(A, B, C, D) で、これは各都市の番号を log2n\lceil \log_2 n \rceil ビットで書けば O(nlogn)O(n \log n) ビットに収まります。検証器は「並びが全都市の順列であること」を O(n)O(n) で確かめ、nn 回の加算で総和を求め、kk と 1 回比較します。以上より TSPNP\mathrm{TSP} \in \mathrm{NP} です。

検証は 4 回の加算と 1 回の比較で終わりましたが、最小値を出すには 3 通りを全部調べる必要がありました。n=30n = 30 ならこの「3 通り」が 4.4×10304.4 \times 10^{30} 通りになります。

Proposition 4.7

PNP\mathrm{P} \subseteq \mathrm{NP} が成り立ちます。

Proof(Proposition 4.7)

LPL \in \mathrm{P} とし、Definition 3.1 により LL を多項式時間で判定する決定性機械 MM を取ります。検証器を V(x,y):=M(x)V(x, y) := M(x)、すなわち第 2 引数を無視して MM を走らせる機械と定め、証明書長の上限多項式を定数多項式 p(n)=0p(n) = 0 とします。

y0|y| \le 0 を満たす yy は空列 ε\varepsilon のみです。したがって

y [yp(x) かつ V(x,y)=1]    V(x,ε)=1    M(x)=1    xL\exists y \ \bigl[\, |y| \le p(|x|) \ \text{かつ} \ V(x,y) = 1 \,\bigr] \iff V(x, \varepsilon) = 1 \iff M(x) = 1 \iff x \in L

となり、Definition 4.1 の条件が満たされます。VVMM と同じ多項式時間で停止します。よって LNPL \in \mathrm{NP} です。

Proposition 4.8

EXP=c1TIME(2nc)\mathrm{EXP} = \bigcup_{c \ge 1} \mathrm{TIME}(2^{n^{c}}) とおきます。このとき NPEXP\mathrm{NP} \subseteq \mathrm{EXP} が成り立ちます。

Proof(Proposition 4.8)

LNPL \in \mathrm{NP} とし、Definition 4.1 の検証器 VV と多項式 pp を取ります。VV の実行時間を多項式 rr で抑えます。次の決定性アルゴリズムを考えます。入力 xx(長さ nn)に対し、長さ 0,1,,p(n)0, 1, \ldots, p(n) のビット列 yy をすべて列挙し、各 yy について V(x,y)V(x, y) を計算する。1 つでも 11 を返せば受理、すべて 00 なら拒否する。

正しさは Definition 4.1 の同値式そのものです。証明書が存在すればこの列挙が必ずそれを含み、存在しなければどの yyV(x,y)=1V(x,y) = 1 を与えません。

実行時間を数えます。列挙する yy の個数は

i=0p(n)2i=2p(n)+11\sum_{i=0}^{p(n)} 2^{i} = 2^{p(n)+1} - 1

個です。各 yy について V(x,y)V(x,y) の計算に高々 r(n+p(n))r(n + p(n)) ステップかかるので、総時間は (2p(n)+11)r(n+p(n))\bigl(2^{p(n)+1} - 1\bigr) \cdot r\bigl(n + p(n)\bigr) 以下です。r(n+p(n))r(n + p(n))nn の多項式なので、この総時間はある定数 cc に対し 2nc2^{n^{c}} で抑えられます。よって LEXPL \in \mathrm{EXP} です。

Corollary 4.9

PNP\mathrm{P} \ne \mathrm{NP}NPEXP\mathrm{NP} \ne \mathrm{EXP} の少なくとも一方が成り立ちます。

Proof(Corollary 4.9)

時間階層定理により PEXP\mathrm{P} \subsetneq \mathrm{EXP}、特に PEXP\mathrm{P} \ne \mathrm{EXP} です(この定理は対角線論法で証明されます。証明は Sipser『Introduction to the Theory of Computation』第 9 章、または Arora–Barak 第 3 章を参照してください)。

いま仮に P=NP\mathrm{P} = \mathrm{NP} かつ NP=EXP\mathrm{NP} = \mathrm{EXP} だったとすると、P=EXP\mathrm{P} = \mathrm{EXP} となって矛盾します。Proposition 4.7Proposition 4.8 より PNPEXP\mathrm{P} \subseteq \mathrm{NP} \subseteq \mathrm{EXP} なので、2 つの包含のうち少なくとも一方は真の包含です。

つまり「NP\mathrm{NP}P\mathrm{P} より真に大きい」か「NP\mathrm{NP}EXP\mathrm{EXP} より真に小さい」かのどちらかは確実に正しく、私たちはどちらか分からない、というのが現状です。分離が 1 つも証明できないわけではありません。証明できないのは、この特定の場所での分離です。

NP\mathrm{NP} の中で「最も難しい問題」を定義するには、2 つの問題の難しさを比べる物差しが要ります。その物差しが帰着です。考え方は素朴で、「問題 AA の入力を、答えが変わらないように問題 BB の入力へ翻訳できるなら、BB を解く道具は AA を解く道具にもなる」というものです。

Definition 5.1多項式時間多対一帰着(カープ帰着)

言語 A,BΣA, B \subseteq \Sigma^{*} について、関数 f:ΣΣf : \Sigma^{*} \to \Sigma^{*} が次の 2 条件を満たすとき、ffAA から BB への多項式時間多対一帰着といい、ApBA \le_{\mathrm{p}} B と書きます。

  1. ff は決定性チューリング機械により、入力 xx の長さの多項式時間で計算できる。
  2. すべての xΣx \in \Sigma^{*} に対して、xA    f(x)Bx \in A \iff f(x) \in B が成り立つ。

条件 2 は両方向であることに注意してください。ff は yes の入力を yes の入力へ、no の入力を no の入力へ移さなければなりません。また条件 1 により、ff 自身が AA を解いてしまうことはできません(AA が難しければ多項式時間では解けないからです)。ff にできるのは、あくまで問題の言い換えです。

向きの読み方も重要です。ApBA \le_{\mathrm{p}} B は「AABB より難しくない」を意味します。不等号の向きと「難しさ」の向きが一致するように記号が選ばれています。

flowchart LR
X["問題 A の入力 x"] --> F["多項式時間の変換 f"]
F --> Y["問題 B の入力 f(x)"]
Y --> D["B を解くアルゴリズム"]
D --> R["その yes / no をそのまま A の答えにする"]
帰着 A ≤p B を使って A を解く手順

Theorem 5.2帰着の基本性質

A,B,CΣA, B, C \subseteq \Sigma^{*} とし、ApBA \le_{\mathrm{p}} B が成り立つとします。このとき次が成り立ちます。

  1. BPB \in \mathrm{P} ならば APA \in \mathrm{P}
  2. BNPB \in \mathrm{NP} ならば ANPA \in \mathrm{NP}
  3. さらに BpCB \le_{\mathrm{p}} C ならば ApCA \le_{\mathrm{p}} C(推移律)。
Proof(Theorem 5.2)

ApBA \le_{\mathrm{p}} B を与える帰着関数を ff とし、Definition 5.1 の条件 1 により ff の計算時間を多項式 qq で抑えます。まず全体で使う不等式を 1 つ用意します。チューリング機械は 1 ステップで高々 1 文字しか書き込めないので、q(n)q(n) ステップで出力できる文字列の長さも高々 q(n)q(n) です。すなわち

f(x)q(x)(xΣ).|f(x)| \le q(|x|) \quad (\forall x \in \Sigma^{*}).

また、以下では多項式 rr を単調非減少と仮定してよいことを使います。そうでなければ r(m)=maximr(i)r'(m) = \max_{i \le m} r(i) で置き換えれば、rr' も同じ次数の多項式で単調非減少だからです。

(1) の証明。 BPB \in \mathrm{P} とし、Definition 3.1 により BB を時間 rr で判定する機械 MBM_B を取ります(rr は単調非減少としてよい)。次のアルゴリズム MAM_A を作ります。入力 xx に対し f(x)f(x) を計算し、MB(f(x))M_B(f(x)) の出力をそのまま返す。

正しさ:Definition 5.1 の条件 2 より xA    f(x)Bx \in A \iff f(x) \in B であり、MBM_Bf(x)Bf(x) \in B を正しく判定するので、MAM_AxAx \in A を正しく判定します。

時間:f(x)f(x) の計算に q(n)q(n) ステップ、MBM_B の実行に r(f(x))r(q(n))r(|f(x)|) \le r(q(n)) ステップ(rr の単調性と上の不等式を使いました)。合計は q(n)+r(q(n))q(n) + r(q(n)) で、多項式の合成と和はまた多項式なので、MAM_A は多項式時間です。よって APA \in \mathrm{P} です。

(2) の証明。 BNPB \in \mathrm{NP} とし、Definition 4.1 により BB の検証器 VBV_B と証明書長の多項式 pBp_B(単調非減少としてよい)を取ります。AA の検証器を

VA(x,y):=VB(f(x),y)V_A(x, y) := V_B\bigl(f(x),\, y\bigr)

と定め、証明書長の多項式を pA(n):=pB(q(n))p_A(n) := p_B(q(n)) とします。

正しさ:xAx \in A とすると条件 2 より f(x)Bf(x) \in B なので、ypB(f(x))|y| \le p_B(|f(x)|) かつ VB(f(x),y)=1V_B(f(x), y) = 1 となる yy が存在します。f(x)q(n)|f(x)| \le q(n)pBp_B の単調性から pB(f(x))pB(q(n))=pA(n)p_B(|f(x)|) \le p_B(q(n)) = p_A(n) なので、この yyypA(x)|y| \le p_A(|x|) を満たし、VA(x,y)=1V_A(x,y) = 1 です。逆に ypA(x)|y| \le p_A(|x|) かつ VA(x,y)=1V_A(x,y) = 1 となる yy があれば VB(f(x),y)=1V_B(f(x), y) = 1 なので f(x)Bf(x) \in B、条件 2 より xAx \in A です。

時間:VAV_Af(x)f(x) の計算に q(n)q(n) ステップ、続いて VBV_B の実行に (f(x)+y)(|f(x)| + |y|) の多項式時間を要し、f(x)q(n)|f(x)| \le q(n)ypA(n)|y| \le p_A(n) はいずれも nn の多項式で抑えられるので、全体で nn の多項式時間です。よって ANPA \in \mathrm{NP} です。

(3) の証明。 BpCB \le_{\mathrm{p}} C を与える帰着関数を gg、その計算時間の上界を多項式 ss(単調非減少)とします。合成 h(x):=g(f(x))h(x) := g(f(x)) を考えます。

正しさ:xA    f(x)Bx \in A \iff f(x) \in Bff の性質)    g(f(x))C\iff g(f(x)) \in Cgg の性質)です。

時間:f(x)f(x) の計算に q(n)q(n)gg の計算に s(f(x))s(q(n))s(|f(x)|) \le s(q(n)) ステップで、合計 q(n)+s(q(n))q(n) + s(q(n)) は多項式です。よって hh は多項式時間で計算でき、ApCA \le_{\mathrm{p}} C が成り立ちます。

Theorem 5.2 の 1 は日常的には対偶の形で使われます。すなわち「AA が多項式時間で解けないなら、BB も多項式時間で解けない」。難しさは帰着の矢印を逆向きに伝わります。

6. NP 完全性 — 最も難しい問題たち

Section titled “6. NP 完全性 — 最も難しい問題たち”

Definition 6.1NP 困難と NP 完全

言語 BΣB \subseteq \Sigma^{*}NP 困難であるとは、すべての LNPL \in \mathrm{NP} に対して LpBL \le_{\mathrm{p}} B が成り立つことをいいます。BB が NP 困難であり、かつ BNPB \in \mathrm{NP} でもあるとき、BBNP 完全であるといいます。

NP 困難とは「NP\mathrm{NP} のすべての問題より難しい」ということです。NP\mathrm{NP} には無限個の言語があるので、この条件は一見して満たしようがないほど強く見えます。ところが実際には満たす問題が存在し、しかも大量にあります。

Corollary 6.2

BB を NP 完全な言語とします。このとき次が成り立ちます。

  1. BPB \in \mathrm{P} ならば P=NP\mathrm{P} = \mathrm{NP}
  2. PNP\mathrm{P} \ne \mathrm{NP} ならば BPB \notin \mathrm{P}、すなわちいかなる NP 完全問題も多項式時間では解けない。
Proof(Corollary 6.2)

1 を示します。BPB \in \mathrm{P} と仮定し、任意に LNPL \in \mathrm{NP} を取ります。BB は NP 困難なので Definition 6.1 より LpBL \le_{\mathrm{p}} B です。BPB \in \mathrm{P} なので Theorem 5.2 の 1 を適用して LPL \in \mathrm{P} を得ます。LL は任意だったので NPP\mathrm{NP} \subseteq \mathrm{P} です。他方 Proposition 4.7 より PNP\mathrm{P} \subseteq \mathrm{NP} なので、P=NP\mathrm{P} = \mathrm{NP} が従います。

2 は 1 の対偶です。BPB \in \mathrm{P} だったとすると 1 により P=NP\mathrm{P} = \mathrm{NP} となり、仮定 PNP\mathrm{P} \ne \mathrm{NP} に反します。

これが NP 完全性の威力です。NP 完全問題は NP\mathrm{NP} 全体の運命を背負っており、そのうちどれか 1 つでも多項式時間で解ければ、残り全部が一斉に多項式時間で解けます。逆にいえば、ある問題が NP 完全だと分かれば、その問題に対する多項式時間アルゴリズムを探すのは、P vs NP 問題を解くのと同じ難しさの仕事だと分かります。実務でこれは「探すのをやめて別の戦略に切り替えろ」という強い信号になります。

Theorem 6.3Cook–Levin の定理

SAT\mathrm{SAT} は NP 完全です。すなわち SATNP\mathrm{SAT} \in \mathrm{NP} であり、かつすべての LNPL \in \mathrm{NP} に対して LpSATL \le_{\mathrm{p}} \mathrm{SAT} が成り立ちます。

Proof(Theorem 6.3)

SATNP\mathrm{SAT} \in \mathrm{NP}Example 4.4 で確かめました。証明書として真理値割当を渡し、各節を順に評価すれば、論理式の長さに比例する時間で検証できます。

NP 困難性の骨子だけをここに述べ、詳細は本記事末尾の Appendix に回します。LNPL \in \mathrm{NP} を任意に取り、Remark 4.2 の同値性により LL を時間 T(n)T(n)TT は多項式)で受理する非決定性チューリング機械 NN を取ります。入力 xx に対する NN の計算の様子は、時刻を行、テープの位置を列とする (T(n)+1)(T(n)+1) 行の計算表として書けます。この表の各マスに「どの記号が入っているか」を表す命題変数を用意し、「表の各マスの中身がちょうど 1 つに決まる」「第 0 行が入力 xx の初期状態を表す」「隣り合う 2 行が NN の遷移規則と整合する」「どこかに受理状態が現れる」という 4 種類の条件を CNF 論理式 φx\varphi_x に書き下します。変数も節も O(T(n)2)O(T(n)^2) 個で済み、φx\varphi_xxx から多項式時間で構成できます。構成から、φx\varphi_x の充足割当と NNxx に対する受理計算とが 1 対 1 に対応するので、xL    φxSATx \in L \iff \langle \varphi_x \rangle \in \mathrm{SAT} が成り立ちます。これが求める帰着です。

Remark 6.4

この定理は Stephen Cook が 1971 年に、Leonid Levin が 1973 年に独立に得たものです(Levin は当時ソ連にいて、Cook の結果を知りませんでした)。1972 年には Richard Karp が、SAT からの帰着によって 21 個の組合せ問題が NP 完全であることを示し、NP 完全性が理論の飾りではなく実務に遍在する現象であることを明らかにしました。

Corollary 6.5

3SAT\mathrm{3SAT} は NP 完全です。

Proof(Corollary 6.5)

3SATNP\mathrm{3SAT} \in \mathrm{NP}SAT\mathrm{SAT} と同じ理由(証明書は真理値割当)で成り立ちます。NP 困難性を示すには、Theorem 6.3Theorem 5.2 の 3(推移律)により、SATp3SAT\mathrm{SAT} \le_{\mathrm{p}} \mathrm{3SAT} を示せば十分です。実際、任意の LNPL \in \mathrm{NP} に対し LpSATp3SATL \le_{\mathrm{p}} \mathrm{SAT} \le_{\mathrm{p}} \mathrm{3SAT} から Lp3SATL \le_{\mathrm{p}} \mathrm{3SAT} が従います。

CNF 論理式 φ\varphi の各節 C=(1k)C = (\ell_1 \lor \cdots \lor \ell_k) を、リテラル数がちょうど 3 の節の集まりに置き換えます。節ごとに新しい変数を使い、他の節とは共有しません。

  • k=1k = 1 のとき:新変数 y1,y2y_1, y_2 を使い、(1y1y2)(1¬y1y2)(1y1¬y2)(1¬y1¬y2)(\ell_1 \lor y_1 \lor y_2) \land (\ell_1 \lor \lnot y_1 \lor y_2) \land (\ell_1 \lor y_1 \lor \lnot y_2) \land (\ell_1 \lor \lnot y_1 \lor \lnot y_2) に置き換えます。y1,y2y_1, y_2 の 4 通りの値すべてを潰しているので、この 4 節が同時に真になるのは 1\ell_1 が真のとき、かつそのときに限ります。
  • k=2k = 2 のとき:新変数 yy を使い、(12y)(12¬y)(\ell_1 \lor \ell_2 \lor y) \land (\ell_1 \lor \ell_2 \lor \lnot y) とします。同様に、12\ell_1 \lor \ell_2 が真であることと同値です。
  • k=3k = 3 のとき:そのまま残します。
  • k4k \ge 4 のとき:新変数 z1,,zk3z_1, \ldots, z_{k-3} を使い、次の k2k-2 個の節に置き換えます。
(12z1)  i=2k3(¬zi1i+1zi)  (¬zk3k1k)(\ell_1 \lor \ell_2 \lor z_1) \ \land \ \bigwedge_{i=2}^{k-3} (\lnot z_{i-1} \lor \ell_{i+1} \lor z_i) \ \land \ (\lnot z_{k-3} \lor \ell_{k-1} \lor \ell_k)

k4k \ge 4 の場合の同値性を確かめます。まず、ある t\ell_t が真だとします。ziz_iit2i \le t-2 のとき真、i>t2i > t-2 のとき偽と定めます。第 1 節は、t2t \le 2 なら t\ell_t が真で、t3t \ge 3 なら z1z_1 が真なので充足されます。中間の第 ii(¬zi1i+1zi)(\lnot z_{i-1} \lor \ell_{i+1} \lor z_i) は、it2i \le t-2 なら ziz_i が真、i=t1i = t-1 なら i+1=t\ell_{i+1} = \ell_t が真、iti \ge t なら zi1z_{i-1} が偽なので ¬zi1\lnot z_{i-1} が真で、いずれの場合も充足されます。最後の節は、tk1t \ge k-1 なら t\ell_t が真、tk2t \le k-2 なら zk3z_{k-3} が偽なので ¬zk3\lnot z_{k-3} が真となり充足されます。

逆に 1,,k\ell_1, \ldots, \ell_k がすべて偽だとします。第 1 節から z1z_1 は真でなければなりません。zi1z_{i-1} が真だと分かっているとき、第 ii 節では ¬zi1\lnot z_{i-1} が偽、i+1\ell_{i+1} も偽なので ziz_i が真でなければなりません。これを i=2,,k3i = 2, \ldots, k-3 と繰り返すと zk3z_{k-3} が真です。すると最後の節 (¬zk3k1k)(\lnot z_{k-3} \lor \ell_{k-1} \lor \ell_k) は 3 つのリテラルすべてが偽になり、充足できません。したがって、置き換え後の論理式が充足可能であることと、もとの節が充足可能であることは同値です。

新変数は節ごとに独立なので、φ\varphi 全体としても「φ\varphi が充足可能     \iff 置き換え後の 3-CNF が充足可能」が成り立ちます。生成される節の総数は、節 CC あたり高々 max(k2,4)\max(k-2, 4) 個なので φ\varphi の長さの定数倍で抑えられ、変換は入力の長さに対して線形時間(特に多項式時間)で実行できます。以上より SATp3SAT\mathrm{SAT} \le_{\mathrm{p}} \mathrm{3SAT} です。

論理式の問題からグラフの問題へも、同じやり方で難しさを運べます。次の帰着は最も美しいものの 1 つで、証明を完全に追えます。

Theorem 6.6独立集合問題の NP 完全性

無向グラフ G=(V,E)G = (V, E) の頂点部分集合 SVS \subseteq V独立集合であるとは、SS のどの相異なる 2 頂点も EE で結ばれていないことをいいます。言語

INDSET={G,k:G は大きさ k の独立集合を持つ無向グラフ}\mathrm{INDSET} = \{\, \langle G, k \rangle : G \ \text{は大きさ} \ k \ \text{の独立集合を持つ無向グラフ} \,\}

について、3SATpINDSET\mathrm{3SAT} \le_{\mathrm{p}} \mathrm{INDSET} が成り立ちます。特に INDSET\mathrm{INDSET} は NP 完全です。

Proof(Theorem 6.6)

まず INDSETNP\mathrm{INDSET} \in \mathrm{NP} です。証明書として頂点集合 SS を渡せば、S=k|S| = k の確認と、SS の全頂点対が非隣接であることの確認が O(k2)O(k^2) 回の辺の有無の判定で済み、入力サイズの多項式時間です。

帰着を構成します。3-CNF 論理式 φ=C1Cm\varphi = C_1 \land \cdots \land C_mCi=(i,1i,2i,3)C_i = (\ell_{i,1} \lor \ell_{i,2} \lor \ell_{i,3}) が与えられたとき、グラフ GφG_\varphi を次のように作ります。

  • 頂点:各 i{1,,m}i \in \{1,\ldots,m\}j{1,2,3}j \in \{1,2,3\} に対して頂点 vi,jv_{i,j} を 1 つ置きます。頂点 vi,jv_{i,j} は「第 ii 節の jj 番目のリテラルの出現」に対応します。頂点数は 3m3m です。
  • 節内の辺:同じ ii について jjj \ne j' なら vi,jv_{i,j}vi,jv_{i,j'} を結びます。各節が三角形になります。
  • 矛盾辺iii \ne i' で、i,j\ell_{i,j}i,j\ell_{i',j'} が互いに否定(一方が xx、他方が ¬x\lnot x)であるとき、vi,jv_{i,j}vi,jv_{i',j'} を結びます。

そして f(φ):=Gφ,mf(\langle \varphi \rangle) := \langle G_\varphi, m \rangle と定めます。GφG_\varphi の頂点は 3m3m 個、辺は高々 (3m2)=O(m2)\binom{3m}{2} = O(m^2) 本で、どの 2 頂点を結ぶかは対応するリテラルを見るだけで判定できるので、ffO(m2)O(m^2) 時間、特に多項式時間で計算できます。

(\Rightarrow) φ\varphi が充足可能ならば GφG_\varphi は大きさ mm の独立集合を持つ。 充足割当 α\alpha を取ります。各節 CiC_iα\alpha の下で真なので、真になるリテラルが少なくとも 1 つあります。その 1 つを選んで添字を j(i)j(i) とし、S={vi,j(i):i=1,,m}S = \{\, v_{i,j(i)} : i = 1,\ldots,m \,\} とおきます。節ごとに 1 頂点ずつ選んだので S=m|S| = m です。SS が独立集合であることを見ます。節内の辺は同じ ii の頂点どうしを結びますが、SS には各 ii につき 1 頂点しかないので、節内の辺の両端が SS に入ることはありません。矛盾辺については、vi,j(i)v_{i,j(i)}vi,j(i)v_{i',j(i')} が矛盾辺で結ばれているとすると i,j(i)\ell_{i,j(i)}i,j(i)\ell_{i',j(i')} は互いに否定ですが、α\alpha の下で両方とも真であることになり、α\alpha が写像であることに矛盾します。よって SS は独立集合です。

(\Leftarrow) GφG_\varphi が大きさ mm の独立集合を持つならば φ\varphi は充足可能。 独立集合 SSS=m|S| = m を取ります。節内の辺により、各 ii について S{vi,1,vi,2,vi,3}S \cap \{v_{i,1}, v_{i,2}, v_{i,3}\} は高々 1 個です(2 個入れば節内の辺で結ばれてしまいます)。この上限が mm 個の ii について成り立ち、かつ S=m|S| = m なので、各 ii についてちょうど 1 個です。その頂点を vi,j(i)v_{i,j(i)} と書きます。

割当 α\alpha を次のように定めます。各 ii について、i,j(i)\ell_{i,j(i)} が真になるように、対応する変数の値を決めます(i,j(i)=x\ell_{i,j(i)} = x なら xx を真、i,j(i)=¬x\ell_{i,j(i)} = \lnot x なら xx を偽)。この指定に矛盾が起きないことを確かめます。もし 2 つの添字 iii \ne i' が同じ変数 xx に相反する値を要求したとすると、i,j(i)\ell_{i,j(i)}i,j(i)\ell_{i',j(i')} は互いに否定であり、構成により vi,j(i)v_{i,j(i)}vi,j(i)v_{i',j(i')} は矛盾辺で結ばれています。これは SS が独立集合であることに反します。どの ii からも指定されなかった変数には偽を割り当てます。

こうして得た α\alpha の下で、各節 CiC_i はリテラル i,j(i)\ell_{i,j(i)} が真なので真です。よって α\alphaφ\varphi を充足します。

以上で φ3SAT    f(φ)INDSET\langle \varphi \rangle \in \mathrm{3SAT} \iff f(\langle \varphi \rangle) \in \mathrm{INDSET} が示され、3SATpINDSET\mathrm{3SAT} \le_{\mathrm{p}} \mathrm{INDSET} が成り立ちます。NP 完全性は、Corollary 6.53SAT\mathrm{3SAT} が NP 困難であることと、Theorem 5.2 の 3 による推移律から従います。

Example 6.7帰着を具体的に走らせる

φ=(x1¬x2¬x3)(¬x1x2x3)(x1x2x3)\varphi = (x_1 \lor \lnot x_2 \lor \lnot x_3) \land (\lnot x_1 \lor x_2 \lor x_3) \land (x_1 \lor x_2 \lor x_3)

Theorem 6.6 の構成を適用します。m=3m = 3 なので頂点は 9 個で、対応は次のとおりです。

頂点v1,1v_{1,1}v1,2v_{1,2}v1,3v_{1,3}v2,1v_{2,1}v2,2v_{2,2}v2,3v_{2,3}v3,1v_{3,1}v3,2v_{3,2}v3,3v_{3,3}
リテラルx1x_1¬x2\lnot x_2¬x3\lnot x_3¬x1\lnot x_1x2x_2x3x_3x1x_1x2x_2x3x_3

辺を数えます。節内の辺は三角形 3 個で 3×3=93 \times 3 = 9 本です。矛盾辺は、x1x_1 を含む v1,1,v3,1v_{1,1}, v_{3,1}¬x1\lnot x_1v2,1v_{2,1} の間で 2 本、¬x2\lnot x_2v1,2v_{1,2}x2x_2 を含む v2,2,v3,2v_{2,2}, v_{3,2} の間で 2 本、¬x3\lnot x_3v1,3v_{1,3}x3x_3 を含む v2,3,v3,3v_{2,3}, v_{3,3} の間で 2 本、合計 6 本です。全部で 15 本の辺を持つ 9 頂点のグラフができました。

S={v1,1,v2,2,v3,1}S = \{v_{1,1},\, v_{2,2},\, v_{3,1}\} が独立集合かどうかを確かめます。3 頂点はそれぞれ別の節に属するので節内の辺はありません。矛盾辺については、v1,1v_{1,1}v3,1v_{3,1} はどちらも x1x_1(互いに否定ではない)、v1,1v_{1,1}v2,2v_{2,2}x1x_1x2x_2v2,2v_{2,2}v3,1v_{3,1}x2x_2x1x_1 で、いずれも矛盾していません。よって SS は大きさ 3 の独立集合です。

証明の (\Leftarrow) 方向の手続きに従って割当を復元します。v1,1=x1v_{1,1} = x_1 から x1x_1 は真、v2,2=x2v_{2,2} = x_2 から x2x_2 は真、v3,1=x1v_{3,1} = x_1 からも x1x_1 は真(矛盾なし)。x3x_3 はどこからも指定されないので偽とします。α=(x1,x2,x3)=(,,)\alpha = (x_1, x_2, x_3) = (\text{真}, \text{真}, \text{偽})φ\varphi に代入すると、第 1 節は ()=(\text{真} \lor \text{偽} \lor \text{真}) = 真、第 2 節は ()=(\text{偽} \lor \text{真} \lor \text{偽}) = 真、第 3 節は ()=(\text{真} \lor \text{真} \lor \text{偽}) = 真で、確かに φ\varphi を充足しています。

なお、このグラフに大きさ 4 の独立集合は存在しません。3 つの三角形から高々 1 頂点ずつしか取れないので、独立集合の大きさは 3 が上限だからです。

Remark 6.8

Karp が 1972 年に挙げた 21 問題を含め、現在では数千の問題が NP 完全であると知られています。代表的なものを挙げます。証明(帰着の構成)は Garey–Johnson『Computers and Intractability』の付録、または Sipser 第 7 章にまとまっています。

問題入力問い証明書
SATCNF 論理式 φ\varphi充足割当が存在するか真理値割当
3SAT各節が 3 リテラルの CNF同上真理値割当
独立集合グラフ GG、整数 kk大きさ kk の独立集合があるか頂点の集合
頂点被覆グラフ GG、整数 kk大きさ kk の頂点被覆があるか頂点の集合
クリークグラフ GG、整数 kk大きさ kk の完全部分グラフがあるか頂点の集合
ハミルトン閉路グラフ GG全頂点をちょうど 1 度通る閉路があるか頂点の並び
巡回セールスマン(決定版)重み付き完全グラフ、整数 kk総重み kk 以下の巡回路があるか都市の並び
部分和正整数の列、目標値 tt和が tt の部分列があるか添字の集合
3 彩色グラフ GG隣接頂点が同色にならない 3 彩色があるか頂点への色の割当

一方、P\mathrm{P} に属する近縁の問題と並べると境界の細さが分かります。2SAT(各節が 2 リテラル)は P\mathrm{P}、3SAT は NP 完全。2 彩色(二部グラフ判定)は P\mathrm{P}、3 彩色は NP 完全。オイラー閉路(各辺をちょうど 1 度通る閉路)は P\mathrm{P}、ハミルトン閉路は NP 完全。最短経路は P\mathrm{P}、最長単純路は NP 完全です(最長単純路では最適部分構造が壊れることについて Example 5.2[動的計画法] を参照)。

P ≠ NP の世界P = NP の世界NP 完全PP = NPSAT · 3SAT · TSP · 独立集合NP 中間?(整数分解・グラフ同型)ソート · 最短経路 · 最大流NP 完全問題も含めすべて多項式時間公開鍵暗号は成立しない最適化と定理探索が自動化されるNP
P ≠ NP が正しい世界(左)と P = NP の世界(右)

左の図の「NP 中間」の帯が空でないことは、PNP\mathrm{P} \ne \mathrm{NP} を仮定すれば Ladner の定理(1975)から従います。すなわち PNP\mathrm{P} \ne \mathrm{NP} ならば、NP\mathrm{NP} に属し、P\mathrm{P} にも属さず NP 完全でもない言語が存在します。整数分解の決定版とグラフ同型判定は、この帯にいるのではないかと予想されている代表例です。どちらも NP 完全であることは示されておらず、P\mathrm{P} に属することも示されていません。

P=NP\mathrm{P} = \mathrm{NP} の帰結を語る前に、1 つ技術的なギャップを埋めておきます。ここまで扱ってきたのは「解が存在するか」という決定問題だけですが、実務で欲しいのは解そのものです。SAT\mathrm{SAT} については、決定できれば解も構成できます。

Proposition 7.1SAT の自己帰着性

SAT\mathrm{SAT} を多項式時間で判定するアルゴリズム DD が存在すると仮定します。このとき、CNF 論理式 φ\varphi を入力として、φ\varphi が充足可能ならばその充足割当を 1 つ出力し、充足不能ならばその旨を出力する多項式時間アルゴリズムが存在します。

Proof(Proposition 7.1)

φ\varphi の変数を x1,,xnx_1, \ldots, x_n とします。次のアルゴリズムを考えます。

  1. D(φ)D(\varphi) を呼ぶ。答えが no なら「充足不能」を出力して終了する。
  2. ψφ\psi \leftarrow \varphi とおく。i=1,2,,ni = 1, 2, \ldots, n について次を繰り返す。
    • ψ\psi の中の xix_i をすべて「真」に置き換えて簡約した論理式を ψ+\psi^{+} とする(真になったリテラルを含む節は削除し、偽になったリテラルは節から取り除く)。
    • D(ψ+)D(\psi^{+}) が yes なら aia_i \leftarrow 真、ψψ+\psi \leftarrow \psi^{+} とする。そうでなければ aia_i \leftarrow 偽とし、ψ\psi の中の xix_i をすべて「偽」に置き換えて簡約したものを新たな ψ\psi とする。
  3. (a1,,an)(a_1, \ldots, a_n) を出力する。

正しさを示します。不変条件「ループの各回の開始時点で ψ\psi は充足可能」を ii に関する帰納法で確かめます。i=1i = 1 の開始時は手順 1 により ψ=φ\psi = \varphi が充足可能です。ii の回の開始時に ψ\psi が充足可能だとします。ψ\psi の充足割当 β\beta を 1 つ取ると、β(xi)\beta(x_i) は真か偽のいずれかで、その値に xix_i を固定した論理式も β\beta で充足されます。したがって ψ+\psi^{+} と「xix_i を偽にした ψ\psi」の少なくとも一方は充足可能です。アルゴリズムは DD を使ってまず ψ+\psi^{+} を試し、それが充足可能でなければ偽の側を選びます。ψ+\psi^{+} が充足不能なら偽の側が充足可能でなければならないので、いずれの分岐でも新しい ψ\psi は充足可能です。

ループ終了時、ψ\psi にはもう変数が残っていないので、簡約後の ψ\psi は定数「真」です(充足可能で変数を持たないのですから)。よって (a1,,an)(a_1,\ldots,a_n)φ\varphi を充足します。

計算時間は、DD の呼び出しが n+1n + 1 回、各回の置き換えと簡約が O(φ)O(|\varphi|) で、DD が多項式時間なので全体も多項式時間です。

Remark 7.2

一般の LNPL \in \mathrm{NP} についても、P=NP\mathrm{P} = \mathrm{NP} ならば証明書を多項式時間で構成できます。Theorem 6.3 の帰着は計算表を通じて構成されるため、φx\varphi_x の充足割当から NN の受理計算、したがって証明書が読み出せるからです。Proposition 7.1φx\varphi_x の充足割当を作り、それを翻訳し直せば証明書が得られます。つまり P=NP\mathrm{P} = \mathrm{NP} の下では「存在の判定」と「解の構成」は同じ計算量です。

現代の暗号は「計算が難しい」ことに安全性を預けています。RSA は合成数の素因数分解、ディフィー–ヘルマンや楕円曲線暗号は離散対数、格子暗号は最短ベクトル問題の難しさを仮定しています。

P=NP\mathrm{P} = \mathrm{NP} ならこれらは一斉に崩れます。理由は一般的です。多項式時間で計算できる関数 ff について、言語

Af={y,u:z [zp(y) かつ f(z)=y かつ z の先頭部分が u]}A_f = \{\, \langle y, u \rangle : \exists z \ \bigl[\, |z| \le p(|y|) \ \text{かつ} \ f(z) = y \ \text{かつ} \ z \ \text{の先頭部分が} \ u \,\bigr] \,\}

NP\mathrm{NP} に属します(証明書は zz そのもので、検証は f(z)f(z) を計算して yy と比べ、先頭を照合するだけです)。P=NP\mathrm{P} = \mathrm{NP} ならば AfPA_f \in \mathrm{P} なので、uu を 1 ビットずつ伸ばしながら AfA_f を問い合わせることで、ff の逆像 zz を多項式時間で 1 ビットずつ確定できます。つまり一方向関数は存在しません。一方向関数がなければ、擬似乱数生成器も、それに立脚する現代的な共通鍵暗号の安全性証明も成り立ちません。共通鍵暗号を直接攻撃することもできます。平文と暗号文の対 (m1,c1),,(mt,ct)(m_1, c_1), \ldots, (m_t, c_t) が与えられたとき、「すべての iiEk(mi)=ciE_k(m_i) = c_i となる鍵 kk が存在するか」は NP\mathrm{NP} に属する(証明書は kk)ので、P=NP\mathrm{P} = \mathrm{NP} なら鍵を多項式時間で復元できます。

7.2. 最適化がすべて解けるようになる

Section titled “7.2. 最適化がすべて解けるようになる”

Example 4.6TSP\mathrm{TSP} で考えます。P=NP\mathrm{P} = \mathrm{NP} なら TSPP\mathrm{TSP} \in \mathrm{P} なので、閾値 kk を変えながら二分探索できます。辺重みが非負整数で最大値を WW とすると最適値は 00 以上 nWnW 以下なので、log2(nW+1)\lceil \log_2 (nW + 1) \rceil 回の問い合わせで最適値が確定します。WW は入力に 2 進法で書かれているので log2W\log_2 W は入力サイズ以下であり、問い合わせ回数は入力サイズの多項式(実際は線形)です。最適な巡回路そのものも、辺を 1 本ずつ「使う/使わない」と固定しながら同じ問い合わせを繰り返せば構成できます(Proposition 7.1 と同じ論法です)。

同じことが、物流の配送計画、工場のスケジューリング、集積回路の配置配線、時間割編成、無線周波数の割当、格子モデル上のタンパク質の折り畳みなど、NP 困難と分かっている膨大な数の最適化問題について一斉に起こります。これらは現在、近似アルゴリズムやヒューリスティクスで「そこそこの解」を出して運用されている領域です。P=NP\mathrm{P} = \mathrm{NP} ならすべて厳密最適解が得られます。

7.3. 数学の証明が探索できるようになる

Section titled “7.3. 数学の証明が探索できるようになる”

固定した形式体系(たとえば ZFC 集合論)で、命題 φ\varphi の証明とは有限個の記号列であり、それが正しい証明かどうかは機械的に、証明の長さの多項式時間で検査できます。したがって言語

{φ,1n:φ は長さ n 以下の証明を持つ}\{\, \langle \varphi, 1^{n} \rangle : \varphi \ \text{は長さ} \ n \ \text{以下の証明を持つ} \,\}

NP\mathrm{NP} に属します(証明書は証明そのもの。証明の長さの上限 nn を単進法 1n1^n で書いてあるのは、入力サイズを nn 以上にして証明書長の多項式上限を成立させるための技術的な工夫です)。P=NP\mathrm{P} = \mathrm{NP} ならこれは多項式時間で判定でき、Proposition 7.1 と同様の論法で証明そのものも構成できます。つまり「長さ 10610^6 以内の証明を持つ未解決問題」は、すべて機械的に解決されます。これはまさにゲーデルが 1956 年の手紙で予見した帰結です。

8. なぜ 50 年以上決着しないのか

Section titled “8. なぜ 50 年以上決着しないのか”

PNP\mathrm{P} \ne \mathrm{NP} を示すには、SAT\mathrm{SAT} のような 1 つの問題について「いかなるアルゴリズムも多項式時間では解けない」を証明しなければなりません。上界(速いアルゴリズムがあること)は 1 つ作れば済みますが、下界はあらゆるアルゴリズムを同時に否定する必要があります。ここが難所です。

下界がまったく証明できないわけではありません。たとえば比較ソートに Ω(nlogn)\Omega(n \log n) 回の比較が必要なことは、決定木の葉が n!n! 個以上必要という数え上げで示せます(Theorem 6.1[Sorting Algorithms]。詳しくは ソートアルゴリズム を参照してください)。ただしこの証明は「比較しか使わない」というモデルの制限に強く依存しています。P\mathrm{P} vs NP\mathrm{NP} ではアルゴリズムに一切の制限を置けないので、同じ手は使えません。

さらに、既存の証明技法が原理的に届かないことを示す「障壁」が 3 つ知られています。

相対化の壁(Baker–Gill–Solovay, 1975)。 オラクル AA を与えて PA=NPA\mathrm{P}^{A} = \mathrm{NP}^{A} となるものと、オラクル BB を与えて PBNPB\mathrm{P}^{B} \ne \mathrm{NP}^{B} となるものがともに存在します。対角線論法や機械のシミュレーションといった技法は、オラクルを付けてもそのまま通用する(相対化する)性質を持ちます。したがってそれらの技法だけでは、P\mathrm{P}NP\mathrm{NP} の関係をどちらにも決められません。停止問題の決定不能性の証明をそのまま流用しても届かない、ということです。

自然証明の壁(Razborov–Rudich, 1997)。 回路計算量の下界証明の多くは、「難しい関数」を特徴づける性質を作り、それが構成可能かつ多くの関数に当てはまる、という形をしています。この形(自然な証明)で NP\mathrm{NP} の回路下界を示せてしまうと、十分に強い擬似乱数関数が存在しないことになり、暗号の標準的な仮定と矛盾します。つまり、既存の回路下界技法の自然な拡張では届きません。

代数化の壁(Aaronson–Wigderson, 2009)。 相対化の壁を破った技法として、論理式を多項式に持ち上げる算術化があります(IP=PSPACE\mathrm{IP} = \mathrm{PSPACE} の証明などで使われました)。しかし算術化を含むように相対化の概念を一般化した「代数化」の下でも、同じ型の障壁が成り立ちます。

現在の見通しについて、Gasarch が 3 度(2002 年、2012 年、2019 年)行った研究者アンケートでは、回を追うごとに PNP\mathrm{P} \ne \mathrm{NP} 支持が増え、2019 年には回答者の約 9 割が PNP\mathrm{P} \ne \mathrm{NP} と予想しています。この問題は 2000 年にクレイ数学研究所のミレニアム懸賞問題に選ばれ、解決には 100 万ドルの賞金が懸けられています。

Exercise 9.1

言語 LL の補集合を L=ΣL\overline{L} = \Sigma^{*} \setminus L と書きます。

  1. LPL \in \mathrm{P} ならば LP\overline{L} \in \mathrm{P} であることを示してください。
  2. 同じ議論を Definition 4.1 に適用しようとすると、どこで破綻するかを説明してください。
  3. PNPcoNP\mathrm{P} \subseteq \mathrm{NP} \cap \mathrm{coNP} を示してください。
Solution

1. LPL \in \mathrm{P} とし、Definition 3.1 の機械 MM と多項式 pp を取ります。MM の受理状態と拒否状態を入れ替えた機械を MM' とします。MM はすべての入力で p(x)p(|x|) ステップ以内に停止する(MM が無限ループしない)ので、MM' もすべての入力で p(x)p(|x|) ステップ以内に停止し、MM'xx を受理する     \iff MMxx を拒否する     \iff xLx \notin L     \iff xLx \in \overline{L} です。よって LP\overline{L} \in \mathrm{P} です。停止性の仮定が本質的である点に注意してください。

2. Definition 4.1 は yes 側と no 側で非対称です。VV の出力を反転した VV' を作っても、y[V(x,y)=1]\exists y\, [V'(x,y) = 1] は「V(x,y)=0V(x,y) = 0 となる yy が 1 つでもある」を意味するだけで、「すべての yy について V(x,y)=0V(x,y) = 0」(これが xLx \notin L の内容)とは全く別の条件です。存在量化子を否定すると全称量化子になるので、証明書という道具がそのままでは使えません。実際、NP=coNP\mathrm{NP} = \mathrm{coNP} かどうかは未解決です。

3. LPL \in \mathrm{P} とします。Proposition 4.7 より LNPL \in \mathrm{NP} です。また 1 より LP\overline{L} \in \mathrm{P} で、再び Proposition 4.7 より LNP\overline{L} \in \mathrm{NP} なので、Remark 4.5 の定義により LcoNPL \in \mathrm{coNP} です。よって LNPcoNPL \in \mathrm{NP} \cap \mathrm{coNP} です。

Exercise 9.2標準

部分和問題を SUBSET-SUM={a1,,an,t:S{1,,n}, iSai=t}\mathrm{SUBSET\text{-}SUM} = \{\, \langle a_1, \ldots, a_n, t \rangle : \exists S \subseteq \{1,\ldots,n\},\ \sum_{i \in S} a_i = t \,\} とします。ここで aia_itt はいずれも 2 進法で書かれた正整数です。

  1. SUBSET-SUMNP\mathrm{SUBSET\text{-}SUM} \in \mathrm{NP} を、証明書と検証器を明示して示してください。
  2. 動的計画法 で学んだナップサック問題と同型の O(nt)O(nt) 時間の動的計画法(Corollary 6.4[動的計画法])は、なぜこの問題が P\mathrm{P} に属することの証明にならないのでしょうか。
Solution

1. 証明書として、部分集合 SS を表す長さ nn のビット列 yy(第 ii ビットが 1 なら iSi \in S)を取ります。y=n|y| = n であり、入力には nn 個の整数が書かれているので nxn \le |x|、したがって p(m)=mp(m) = m とすれば証明書長の上限を満たします。検証器 V(x,y)V(x,y) は、yy の 1 のビットに対応する aia_i を順に足し、その和を tt と比較して一致すれば 1 を返します。各 aia_i のビット長を高々 LL とすると、和は高々 L+log2nL + \lceil \log_2 n \rceil ビットに収まるので、加算 nn 回の総コストは O(n(L+logn))O(n(L + \log n)) ビット演算で、入力サイズ(少なくとも nLnL ビット以上)の多項式です。Definition 4.1 の条件が満たされるので SUBSET-SUMNP\mathrm{SUBSET\text{-}SUM} \in \mathrm{NP} です。

2. 計算量 O(nt)O(nt)ttであって入力サイズではないからです。Remark 2.2 のとおり tt は 2 進法で書かれるので、その入力サイズは log2(t+1)\lceil \log_2 (t+1) \rceil ビットにすぎません。入力サイズを mm とすると tt2m2^{m} 程度まで大きくでき、O(nt)O(nt)O(n2m)O(n 2^{m})、つまり入力サイズの指数時間になり得ます。このような計算量を擬多項式時間と呼びます。もし tt を単進法で書けば入力サイズが tt 以上になるので同じアルゴリズムが多項式時間になりますが、それは Remark 2.2 で禁じた水増しです。事実、SUBSET-SUM\mathrm{SUBSET\text{-}SUM} は NP 完全であることが知られているので、Corollary 6.2 により、PNP\mathrm{P} \ne \mathrm{NP} ならば真の多項式時間アルゴリズムは存在しません。

Exercise 9.3標準

無向グラフ G=(V,E)G = (V, E) について、CVC \subseteq V頂点被覆であるとは、EE のどの辺も少なくとも一方の端点を CC に持つことをいいます。また KVK \subseteq Vクリークであるとは、KK のどの相異なる 2 頂点も EE で結ばれていることをいいます。次の 2 つの言語を考えます。

VC={G,k:G は大きさ k の頂点被覆を持つ無向グラフ}CLIQUE={G,k:G は大きさ k のクリークを持つ無向グラフ}\begin{aligned} \mathrm{VC} &= \{\, \langle G, k \rangle : G \ \text{は大きさ} \ k \ \text{の頂点被覆を持つ無向グラフ} \,\} \\ \mathrm{CLIQUE} &= \{\, \langle G, k \rangle : G \ \text{は大きさ} \ k \ \text{のクリークを持つ無向グラフ} \,\} \end{aligned}
  1. INDSETpVC\mathrm{INDSET} \le_{\mathrm{p}} \mathrm{VC} を示してください。
  2. INDSETpCLIQUE\mathrm{INDSET} \le_{\mathrm{p}} \mathrm{CLIQUE} を示してください。
  3. これらから VC\mathrm{VC}CLIQUE\mathrm{CLIQUE} が NP 完全であることを結論してください(NP\mathrm{NP} への所属は認めてよいものとします)。
Solution

1. 鍵になる観察は「SS が独立集合     \iff VSV \setminus S が頂点被覆」です。実際、SS が独立集合であることは「両端点がともに SS に入る辺が存在しない」ことで、これは「どの辺も少なくとも一方の端点が VSV \setminus S に入る」ことと同値であり、後者は VSV \setminus S が頂点被覆であることにほかなりません。

帰着関数を、kVk \le |V| のとき f(G,k)=G,Vkf(\langle G, k\rangle) = \langle G, |V| - k \ranglek>Vk > |V| のときは固定した no インスタンス(たとえば辺のない 1 頂点グラフと k=2k = 2)と定めます。kVk \le |V| の場合、GG が大きさ kk の独立集合 SS を持つ     \iff GG が大きさ Vk|V| - k の頂点被覆 VSV \setminus S を持つ、が上の観察から従います。k>Vk > |V| の場合は大きさ kk の頂点部分集合自体が存在しないので、どちらも no です。ff は頂点数を数えて引き算するだけなので多項式時間です。

2. 補グラフ G=(V,E)\overline{G} = (V, \overline{E}) を、E={{u,v}:uv, {u,v}E}\overline{E} = \{\{u,v\} : u \ne v,\ \{u,v\} \notin E\} で定めます。SSGG の独立集合である     \iff SS の相異なる 2 頂点はすべて EE で結ばれていない     \iff SS の相異なる 2 頂点はすべて E\overline{E} で結ばれている     \iff SSG\overline{G} のクリークである、が定義から直ちに従います。よって f(G,k)=G,kf(\langle G, k\rangle) = \langle \overline{G}, k \rangle が帰着です。補グラフの構成は隣接行列の 0011 を(対角成分を除いて)反転するだけなので O(V2)O(|V|^{2}) 時間、特に多項式時間です。

3. Theorem 6.6 より INDSET\mathrm{INDSET} は NP 困難、すなわち任意の LNPL \in \mathrm{NP} について LpINDSETL \le_{\mathrm{p}} \mathrm{INDSET} です。これと 1、2 および Theorem 5.2 の 3(推移律)を合わせると、LpVCL \le_{\mathrm{p}} \mathrm{VC} および LpCLIQUEL \le_{\mathrm{p}} \mathrm{CLIQUE} が任意の LNPL \in \mathrm{NP} について成り立ちます。よって両者は NP 困難で、NP\mathrm{NP} に属するので Definition 6.1 により NP 完全です。

Exercise 9.4

ある NP 完全な言語 BBcoNP\mathrm{coNP} にも属するならば、NP=coNP\mathrm{NP} = \mathrm{coNP} であることを示してください。この結果は「SAT\mathrm{SAT} の充足不能性に短い証明書がある」という主張がどれほど強いかを教えてくれます。

Solution

まず補題として、coNP\mathrm{coNP}p\le_{\mathrm{p}} について閉じていること、すなわち「ApBA \le_{\mathrm{p}} B かつ BcoNPB \in \mathrm{coNP} ならば AcoNPA \in \mathrm{coNP}」を示します。ffApBA \le_{\mathrm{p}} B の帰着関数とすると、Definition 5.1 の条件 2 は xA    f(x)Bx \in A \iff f(x) \in B なので、その否定を取って xA    f(x)Bx \in \overline{A} \iff f(x) \in \overline{B} が成り立ちます。すなわち同じ ffApB\overline{A} \le_{\mathrm{p}} \overline{B} を与えます。BcoNPB \in \mathrm{coNP}Remark 4.5 により BNP\overline{B} \in \mathrm{NP} を意味するので、Theorem 5.2 の 2 を ApB\overline{A} \le_{\mathrm{p}} \overline{B} に適用して ANP\overline{A} \in \mathrm{NP}、すなわち AcoNPA \in \mathrm{coNP} を得ます。

本題に入ります。BB を NP 完全かつ BcoNPB \in \mathrm{coNP} とします。

NPcoNP\mathrm{NP} \subseteq \mathrm{coNP}:任意に LNPL \in \mathrm{NP} を取ります。BB は NP 困難なので Definition 6.1 より LpBL \le_{\mathrm{p}} B です。BcoNPB \in \mathrm{coNP} と上の補題より LcoNPL \in \mathrm{coNP} です。

coNPNP\mathrm{coNP} \subseteq \mathrm{NP}:任意に LcoNPL \in \mathrm{coNP} を取ります。定義より LNP\overline{L} \in \mathrm{NP} で、いま示した包含より LcoNP\overline{L} \in \mathrm{coNP}、すなわち L=LNP\overline{\overline{L}} = L \in \mathrm{NP} です。

以上より NP=coNP\mathrm{NP} = \mathrm{coNP} です。

補足:SAT\mathrm{SAT} は NP 完全なので、もし「充足不能な CNF 論理式であることの多項式長の証明書」が見つかれば SATcoNP\mathrm{SAT} \in \mathrm{coNP} となり、NP=coNP\mathrm{NP} = \mathrm{coNP} が従います。命題論理の証明体系(導出原理など)に対する指数下界の研究は、まさにこの可能性を否定しにいく試みです。

  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage Learning, 2013 — 第 7 章(時間計算量、P\mathrm{P}NP\mathrm{NP}、NP 完全性)、第 9 章(時間階層定理)。学部向けの標準的な入口です。
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009 — 第 2 章(NP\mathrm{NP} と NP 完全性)、第 3 章(対角線論法と相対化の壁)、第 23 章(自然証明)。証明の障壁まで扱う定番の大学院教科書です。
  • Michael R. Garey and David S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, 1979 — 巻末に約 300 個の NP 完全問題の一覧があります。
  • Stephen A. Cook, “The complexity of theorem-proving procedures”, Proceedings of the 3rd Annual ACM Symposium on Theory of Computing (STOC ‘71), 1971, pp. 151–158.
  • Richard M. Karp, “Reducibility among combinatorial problems”, in Complexity of Computer Computations, Plenum Press, 1972, pp. 85–103.
  • Theodore Baker, John Gill and Robert Solovay, “Relativizations of the P =? NP question”, SIAM Journal on Computing 4(4) (1975), 431–442.
  • Clay Mathematics Institute, P vs NP Problem — ミレニアム懸賞問題の公式ページ。Cook による問題の公式記述が置かれています。

Appendix: Cook–Levin の定理の証明の骨格

Section titled “Appendix: Cook–Levin の定理の証明の骨格”

Theorem 6.3 の NP 困難性の部分について、Theorem 6.3 の証明で述べた計算表の構成をもう少し詳しく書きます。完全な証明は Sipser 第 7 章または Arora–Barak 第 2 章にあります。

設定。 LNPL \in \mathrm{NP} とし、Remark 4.2 の同値性により、LL を受理する非決定性 1 テープチューリング機械 NN と多項式 TT を取ります。NN は長さ nn の入力に対し、どの計算枝でも高々 T(n)T(n) ステップで停止するとしてよく、また T(n)nT(n) \ge n としてよいものとします。NN の状態集合を QQ、テープ記号の集合を Γ\Gamma とします。これらは有限で、nn に依存しません。

計算表。 入力 xx(長さ nn)に対する NN の 1 つの計算枝を、(T(n)+1)(T(n)+1)×\times (T(n)+3)(T(n)+3) 列の表として書きます。第 ii 行は時刻 ii における「テープの内容と、ヘッド位置に状態記号を挿入したもの」を表し、両端には番兵記号を置きます。各マスに入る記号は ΓQ\Gamma \cup Q と番兵からなる有限集合 Δ\Delta の元です。時刻 T(n)T(n) までしか動かないので、ヘッドは初期位置から左右 T(n)T(n) マス以上離れることはなく、表の幅はこれで足ります。

変数。 各マス (i,j)(i, j) と各記号 sΔs \in \Delta に対して命題変数 xi,j,sx_{i,j,s} を用意し、「マス (i,j)(i,j) の中身が ss である」という意味を持たせます。変数の個数は (T(n)+1)(T(n)+3)Δ=O(T(n)2)(T(n)+1)(T(n)+3)|\Delta| = O(T(n)^2) 個です(Δ|\Delta| は定数)。

4 種類の節。 求める論理式 φx\varphi_x を、次の 4 群の節の論理積として定めます。

第 1 群(一意性)は、各マスの中身がちょうど 1 つに決まることを述べます。各 (i,j)(i,j) について sΔxi,j,s\bigvee_{s \in \Delta} x_{i,j,s} という節を 1 つと、sss \ne s' なる各対について (¬xi,j,s¬xi,j,s)(\lnot x_{i,j,s} \lor \lnot x_{i,j,s'}) を置きます。マスあたり 1+(Δ2)1 + \binom{|\Delta|}{2} 個、つまり定数個の節です。

第 2 群(開始)は、第 0 行が初期状況、すなわち番兵、初期状態 q0q_0、入力 xx の各文字、空白記号、番兵の順に並ぶことを、該当する変数を単一リテラルの節として並べることで述べます。O(T(n))O(T(n)) 個の節です。

第 3 群(遷移)は、連続する 2 行が NN の遷移規則と整合することを述べます。ここで効くのが「1 ステップで変化するのはヘッドの周囲だけ」という局所性です。第 ii 行の第 j1,j,j+1j-1, j, j+1 列の 3 マスが決まれば、第 i+1i+1 行の第 jj 列に入り得る記号は NN の遷移規則から定まります。そこで各 (i,j)(i,j) について、上段 3 マスと下段 3 マスからなる 2×32 \times 3 の窓の中身が「合法な窓」のいずれかに一致することを要求します。窓の中身の組合せは Δ6|\Delta|^{6} 通りという定数個なので、合法でない組合せを禁止する節を定数個並べれば書けます。窓は O(T(n)2)O(T(n)^2) 個なので、この群も O(T(n)2)O(T(n)^2) 個の節です。

第 4 群(受理)は、表のどこかに受理状態が現れることを述べます。NN は受理したらその状況を保つように整えておけば、最終行を見るだけで済み、jxT(n),j,qaccept\bigvee_{j} x_{T(n),j,q_{\mathrm{accept}}} という 1 個の節で書けます。

サイズと構成時間。 節の総数は O(T(n)2)O(T(n)^2)、各節の長さも定数または O(1)O(1) 個のリテラルなので、φx\varphi_x の記述長は O(T(n)2logT(n))O(T(n)^2 \log T(n)) 程度(変数の添字を書くビット数を含む)で、nn の多項式です。しかも各節は xxNN の定義を見れば直接書き下せるので、φx\varphi_xxx から多項式時間で構成できます。

同値性。 φx\varphi_x の充足割当は、第 1 群により表の各マスに記号を 1 つ割り当てるものと同一視でき、第 2・第 3 群によりその表は NNxx に対する正しい計算の記録であり、第 4 群によりその計算は受理計算です。逆に、NNxx に対する受理計算があれば、その計算表を読み取って作った割当は 4 群すべての節を満たします。したがって

xL    N が x を受理する    φx は充足可能    φxSATx \in L \iff N \ \text{が} \ x \ \text{を受理する} \iff \varphi_x \ \text{は充足可能} \iff \langle \varphi_x \rangle \in \mathrm{SAT}

となり、xφxx \mapsto \langle \varphi_x \rangle が求める帰着です。LLNP\mathrm{NP} の任意の元だったので、SAT\mathrm{SAT} は NP 困難であり、Example 4.4SATNP\mathrm{SAT} \in \mathrm{NP} と合わせて NP 完全です。

なぜ SAT だったのか。 この証明を振り返ると、SAT\mathrm{SAT} が特別なのは「計算という動的な過程を、局所的な整合条件の連言として静的に書き下せる」からだと分かります。命題論理は計算のシミュレーションを表現するのにちょうど十分な表現力を持っており、しかも検証は多項式時間で終わります。この「表現力と検証容易性のつり合い」が、SAT\mathrm{SAT}NP\mathrm{NP} の中で最も難しい問題にしています。

Report an error in this article ・Operated by: Mugen Giken LLCPricingTermsLegal notice

© 2026 夢現技研合同会社 ・Feeding the text to an LLM is welcome. Code samples are MIT licensed.