§E18.11P と NP

最終更新

P は、決定性 Turing 機械が多項式時間で答えを計算することができる決定問題のクラスである。NP には、非決定性機械が多項式時間の受理分枝をもつという定義と、多項式長の証明書を決定性機械が多項式時間で検証するという定義がある。本記事では両者を独立に定式化し、分枝選択列と証明書の相互変換によって同値性を証明する。さらに、多項式時間 many-one 帰着と、補言語によって定まるクラス co-NP を定義する。

P は§E18.10 定義 1.4で定義した。本記事ではこの定義をそのまま用い、同じ有限アルファベット上の言語のクラスとして NP を定義して、両者を比較する。

1 非決定性多項式時間

非決定性機械では、各配置から有限個の次配置を許す。機械の遷移表は有限であるため、全配置に共通する分枝数の定数上界が存在する。

定義 1.1.§E18.10 定義 1.1の読取り専用入力テープと固定有限本の作業テープをもつ機械で、遷移先を有限集合として与えるものを非決定性 Turing 機械 (nondeterministic Turing machine) とする。入力xx上の計算木は、初期配置を根とし、一段で到達することができる配置を子とする有限分枝木である。少なくとも一つの分枝が受理状態で終わるとき、NNはxxを受理する。

ある多項式p∈N[n]p\in\mathbb N[n]が存在して、長さnnの各入力に対するすべての計算分枝が高々p(n)p(n)段で受理または拒否するとき、NNを多項式時間非決定性決定器 (polynomial-time nondeterministic decider) という。

受理分枝だけが多項式時間であればよいのではない。拒否入力を含むすべての入力において、すべての分枝が共通の多項式上界内で停止することが定義に含まれる。

定義 1.2. 有限アルファベットΣ\Sigma上の言語L⊆Σ∗L\subseteq\Sigma^*が NP (NP) に属するとは、LLを受理する多項式時間非決定性決定器が存在することをいう。

Cook–Levin の符号化では、入力と作業領域を同じテープ上に置く標準単テープ機械が便利である。次の命題により、機械を標準単テープ機械へ変更しても NP は変わらない。

命題 1.3. 読取り専用入力テープと固定有限本の作業テープをもつ多項式時間非決定性決定器と、入力を初期テープ内容としてもつ一方向無限の単テープ多項式時間非決定性決定器は、同じ言語のクラスを受理する。

証明. 最初に、読取り専用入力テープとkk本の作業テープをもつ非決定性機械NNを、標準単テープ非決定性機械SSで模倣する。SSは入力xxを有限回走査して、

#uin#u1#⋯#uk#\#u_{\mathrm{in}}\#u_1\#\cdots\#u_k\#

という複数トラックの符号へ書き換える。uinu_{\mathrm{in}}は変更しない入力トラックであり、各トラックのヘッド位置を印付き記号で表す。

元の一段を模倣するとき、SSは符号全体を走査して各ヘッド下の記号を有限制御へ記録する。元の配置で選ぶことができる各遷移規則に対して、SSにも対応する非決定的選択を一つ置く。選択後にもう一度符号を走査し、作業記号とヘッド印を更新する。初期符号はO(∣x∣2+1)O(|x|^2+1)時間で構成することができる。元の計算がtt段以内であれば、符号長はO(∣x∣+t+1)O(|x|+t+1)であり、一段の模倣にはO(∣x∣+t+1)O(|x|+t+1)時間しか要らない。したがって、各分枝の全模倣時間は

O(∣x∣2+t(∣x∣+t+1)+1)O\bigl(|x|^2+t(|x|+t+1)+1\bigr)

である。ttが入力長の多項式なら、この上界も多項式である。遷移選択を一対一に対応させたため、受理分枝の存在が保存され、全分枝の時間にも同じ上界が成り立つ。

逆に、標準単テープ非決定性機械SSを資源モデルで模倣するには、読取り専用入力を一度だけ第一作業テープへ複写し、その後はSSの各非決定的遷移を同じ一段で実行する。複写にO(∣x∣+1)O(|x|+1)時間を要するだけなので、多項式時間性と受理分枝の存在は保存される。▨

決定性機械は、各配置からの次配置が一つである非決定性機械とみなすことができる。

命題 1.4.

P⊆NP\mathsf P\subseteq\mathsf{NP}

である。

証明.L∈PL\in\mathsf Pとし、DDをLLの多項式時間決定器とする。DDの各配置から出る遷移を唯一の非決定的選択とみなせば、計算木は一本の分枝だけからなる。DDは全入力で多項式時間内に停止し、その分枝が受理することと入力がLLに属することは同値である。したがってL∈NPL\in\mathsf{NP}である。▨

逆向きの包含NP⊆P\mathsf{NP}\subseteq\mathsf Pが成り立つかどうかは知られていない。P=NP\mathsf P=\mathsf{NP}であるかどうかは未解決の問題である。本記事でも本単元でも、この問いに対するどちらの結論も主張しない。以下で示す包含関係はすべて、この問いを解くことなく証明することができるものである。

2 多項式長の証明書

入力と証明書のアルファベットを分けて固定する。異なる有限アルファベット間の符号化には、各文字を同じ長さの二進語へ写す固定長符号を用いる。この変換は語の長さを定数倍しか増やさず、線形時間で実行することができる。

定義 2.1.L⊆Σ∗L\subseteq\Sigma^*とする。固定有限アルファベットΓc\Gamma_c、多項式p,q∈N[n]p,q\in\mathbb N[n]、および決定性 Turing 機械VVが存在し、次の二条件を満たすとき、VVをLLの多項式時間検証器 (polynomial-time verifier) という。

  1. 任意のx∈Σ∗x\in\Sigma^*について x∈L⟺ある y∈Γc∗ が存在して ∣y∣≤p(∣x∣) かつ V(x,y) が受理する.x\in L \quad\Longleftrightarrow\quad \text{ある }y\in\Gamma_c^*\text{ が存在して } |y|\le p(|x|)\text{ かつ }V(x,y)\text{ が受理する}.
  2. ∣y∣≤p(∣x∣)|y|\le p(|x|)を満たすすべての組(x,y)(x,y)について、V(x,y)V(x,y)は高々q(∣x∣)q(|x|)段で停止する。

語yyを証明書 (certificate) という。入力対(x,y)(x,y)は、二本の読取り専用テープに分けて与えるか、区切り記号を用いた固定符号⟨x,y⟩\langle x,y\rangleとして与える。

条件 (b)の時間上界をq(∣x∣+∣y∣)q(|x|+|y|)と書く定義も同値である。証明書長がp(∣x∣)p(|x|)以下であるため、多項式の合成によってq(∣x∣+p(∣x∣))q(|x|+p(|x|))も∣x∣|x|の多項式になる。

3 二つの定義の同値性

非決定性から検証器への向きでは、計算分枝で選んだ遷移番号を証明書に記録する。逆向きでは、非決定性機械が証明書を一文字ずつ生成してから検証器を実行する。

定理 3.1. 有限アルファベット上の言語LLについて、次の二条件は同値である。

  1. L∈NPL\in\mathsf{NP}。
  2. LLは多項式時間検証器をもつ。

証明.(1)を仮定する。NNをLLの非決定性決定器とし、長さnnの入力上の全分枝がp(n)p(n)段以内に停止するとする。NNの遷移表は有限であるため、各配置からの遷移候補に0,…,b−10,\ldots,b-1の番号を付けることができる。ここでbbは機械だけに依存する定数であり、存在しない候補番号は無効とする。

証明書アルファベットをΓc={0,…,b−1}\Gamma_c=\{0,\ldots,b-1\}とする。検証器VVは入力(x,y)(x,y)を受け取り、N(x)N(x)の初期配置から始める。yyの文字を左から読み、各文字が指定する遷移を一段ずつ実行する。無効な番号を読んだ場合、拒否状態へ到達した場合、またはp(∣x∣)p(|x|)文字を超えた場合には拒否する。受理状態へ到達した場合には受理し、証明書を読み終えても非停止配置にいる場合には拒否する。

NNにxxの受理分枝が存在するなら、その分枝で選ばれた高々p(∣x∣)p(|x|)個の番号列を証明書にすればVVは受理する。逆に、VVが証明書yyを受理したなら、yyが指定した遷移列はN(x)N(x)の実在する受理分枝である。証明書長はp(∣x∣)p(|x|)以下である。一段の遷移の直接模倣を多テープ上で行えば時間はO(p(∣x∣)+∣x∣)O(p(|x|)+|x|)であり、一本の作業テープへ直しても§E18.10 系 4.2により多項式時間である。

Γc\Gamma_cを二進アルファベットへ統一する場合には、一文字をℓ=⌈log⁡2max⁡{2,b}⌉\ell=\lceil\log_2\max\{2,b\}\rceilビットで符号化する。証明書長はℓp(∣x∣)\ell p(|x|)以下となり、ℓ\ellは正の固定定数であるため多項式長のままである。したがって、(1)⇒\Rightarrow(2)が従う。

次に(2)を仮定し、検証器VVと多項式p,qp,qをとる。非決定性機械NNは入力xx上で、最初に証明書テープを空にする。続いて高々p(∣x∣)p(|x|)回、次の二種類の選択を行う。

  • 証明書の生成を終了する。
  • Γc\Gamma_cの一文字を非決定的に選び、証明書テープへ書く。

p(∣x∣)p(|x|)文字を書いた場合には強制的に生成を終了し、その後でV(x,y)V(x,y)を決定的に模倣する。VVが受理した場合に限って受理する。

各y∈Γc∗y\in\Gamma_c^*で∣y∣≤p(∣x∣)|y|\le p(|x|)を満たすものについて、ちょうどyyを生成して終了する分枝が存在する。したがって、NNに受理分枝が存在することと、長さがp(∣x∣)p(|x|)以下の証明書をVVが受理することは同値であり、この受理分枝の存在条件はx∈Lx\in Lと同値である。

入力長nnを二進計数し、固定した多項式p(n)p(n)を計算して反復回数を管理する処理は多項式時間で実行することができる。証明書の生成はO(p(n))O(p(n))段であり、検証はq(n)q(n)段以内で停止する。したがって、全分枝に共通する多項式上界が存在する。必要なら命題 1.3によって標準単テープ機械へ変換しても、多項式時間性を保つ。よってNNは多項式時間非決定性決定器であり、(2)⇒\Rightarrow(1)が従う。▨

例 3.2. 頂点集合を{1,…,m}\{1,\ldots,m\}とする有向グラフGGを隣接行列で符号化し、全頂点を一度ずつ通って始点へ戻る有向閉路が存在するかを問う。

証明書を頂点列(v1,…,vm)(v_1,\ldots,v_m)とする。各頂点番号には⌈log⁡2(m+1)⌉\lceil\log_2(m+1)\rceilビットを用いるため、証明書長はO(mlog⁡m)O(m\log m)である。検証器は、各番号が1,…,m1,\ldots,mに属すること、番号が重複しないこと、全頂点が現れること、および

(vi,vi+1)(1≤i<m),(vm,v1)(v_i,v_{i+1})\quad(1\le i<m),\qquad (v_m,v_1)

がすべて辺であることを調べる。単純な二重走査でもO(m2log⁡m)O(m^2\log m)時間であり、隣接行列の符号長はΘ(m2)\Theta(m^2)なので入力長の多項式である。したがって、この言語は NP に属する。

4 多項式時間 many-one 帰着

§E18.6 定義 1.1では帰着関数に全計算可能性だけを要求した。計算量理論では、その変換時間も入力長の多項式で制限する。

定義 4.1. 言語A⊆Σ∗A\subseteq\Sigma^*とB⊆Γ∗B\subseteq\Gamma^*に対し、関数

f ⁣:Σ∗⟶Γ∗f\colon\Sigma^*\longrightarrow\Gamma^*

が決定性 Turing 機械によって多項式時間で計算され、任意のx∈Σ∗x\in\Sigma^*について

x∈A⟺f(x)∈Bx\in A\quad\Longleftrightarrow\quad f(x)\in B

を満たすとする。このとき、AAはBBに多項式時間 many-one 帰着 (polynomial-time many-one reduction) するといい、

A≤pBA\le_{\mathrm p}B

と書く。

出力を明示的に書く機械では、帰着関数の出力長は計算時間以下である。したがって、多項式時間帰着の出力長も入力長の多項式で抑えられる。

命題 4.2.A≤pBA\le_{\mathrm p}BかつB∈PB\in\mathsf Pならば、A∈PA\in\mathsf Pである。

証明. 帰着関数をffとすると、

A={x:f(x)∈B}A=\{x:f(x)\in B\}

である。したがって§E18.10 命題 5.1を適用すれば結論を得る。▨

命題 4.3.A≤pBA\le_{\mathrm p}BかつB∈NPB\in\mathsf{NP}ならば、A∈NPA\in\mathsf{NP}である。

証明.ffを帰着関数とし、長さnnの入力上の計算時間をr(n)r(n)以下とする。出力長について

∣f(x)∣≤r(∣x∣)+c|f(x)|\le r(|x|)+c

となる機械依存の定数ccが存在する。BBの検証器をVBV_B、証明書長上界をp(m)p(m)、検証時間上界をq(m)q(m)とする。

AAの検証器VAV_Aは入力(x,y)(x,y)に対し、最初にz=f(x)z=f(x)を計算する。次に、∣y∣>p(∣z∣)|y|>p(|z|)ならば直ちに拒否し、∣y∣≤p(∣z∣)|y|\le p(|z|)の場合に限ってVB(z,y)V_B(z,y)を実行する。VAV_Aに許す証明書長の上界を

p(r(∣x∣)+c)p(r(|x|)+c)

とする。この上界は∣x∣|x|の多項式であり、∣z∣≤r(∣x∣)+c|z|\le r(|x|)+cとppの単調性から、BBの受理証明書に必要な長さp(∣z∣)p(|z|)以上である。

x∈Ax\in Aならばz∈Bz\in Bである。したがって、∣y∣≤p(∣z∣)|y|\le p(|z|)かつVB(z,y)V_B(z,y)が受理する証明書yyが存在する。このyyは上の全体上界も満たし、長さ検査を通るのでVAV_Aが受理する。逆にx∉Ax\notin Aならばz∉Bz\notin Bである。全体上界を満たす任意のyyについて、∣y∣>p(∣z∣)|y|>p(|z|)ならVAV_Aは直ちに拒否し、∣y∣≤p(∣z∣)|y|\le p(|z|)ならBBの検証器の健全性によりVB(z,y)V_B(z,y)が拒否する。したがってVAV_Aも拒否する。

停止性と時間上界も確認する。ffの計算はr(∣x∣)r(|x|)段以内で停止する。長さ検査はp(∣z∣)+1p(|z|)+1文字まで調べれば終わり、検査を通った場合だけVBV_Bを実行する。この場合には検証器の定義からVB(z,y)V_B(z,y)はq(∣z∣)q(|z|)段以内に停止する。したがって、全体上界を満たす証明書上でVAV_Aは必ず停止し、その時間は

r(∣x∣)+O(p(r(∣x∣)+c)+1)+q(r(∣x∣)+c)r(|x|) +O\bigl(p(r(|x|)+c)+1\bigr) +q(r(|x|)+c)

以下であり、∣x∣|x|の多項式である。

VAV_Aの証明書アルファベットにはVBV_Bと同じ固定有限アルファベットを用いることができる。二進アルファベットへ統一する場合には固定長符号で一文字ずつ変換すればよく、証明書長と検証時間は定数倍しか増えない。したがってAAは多項式時間検証器をもち、定理 3.1によりA∈NPA\in\mathsf{NP}である。▨

命題 4.4.A≤pBA\le_{\mathrm p}BかつB≤pCB\le_{\mathrm p}Cならば、A≤pCA\le_{\mathrm p}Cである。

証明. 二つの帰着関数をf,gf,gとする。合成g∘fg\circ fは

x∈A⟺f(x)∈B⟺g(f(x))∈Cx\in A\Longleftrightarrow f(x)\in B \Longleftrightarrow g(f(x))\in C

を満たす。ffの出力長は∣x∣|x|の多項式であり、ggの時間はその入力長の多項式であるため、§E18.10 命題 5.1と同じ合成評価によりg∘fg\circ fは多項式時間で計算される。▨

5 補言語のクラス co-NP

NP\mathsf{NP}の二つの定義は、いずれも受理分枝または証明書の存在という形をとる。存在の否定を、一般に存在の形へ書き直すことはできない。したがって、L∈NPL\in\mathsf{NP}から補言語Σ∗∖L\Sigma^*\setminus LがNP\mathsf{NP}に属することは従わない。補言語の側がNP\mathsf{NP}に属する言語のクラスを、別に定める。

定義 5.1. 有限アルファベットΣ\Sigma上の言語L⊆Σ∗L\subseteq\Sigma^*に対し、

L‾=Σ∗∖L\overline L=\Sigma^*\setminus L

をLLの補言語 (complement language) という。L‾∈NP\overline L\in\mathsf{NP}であるときLLは coNP (coNP) に属するといい、coNP\mathsf{coNP}をこのような言語全体のクラスとする。

L‾‾=L\overline{\overline L}=Lであるから、定義より直ちに、L∈coNPL\in\mathsf{coNP}とL‾∈NP\overline L\in\mathsf{NP}は同値であり、L∈NPL\in\mathsf{NP}とL‾∈coNP\overline L\in\mathsf{coNP}も同値である。補言語をとる操作は、NP\mathsf{NP}とcoNP\mathsf{coNP}を互いに移す。

命題 5.2. 有限アルファベットΣ\Sigma上の言語LLについて、次の二条件は同値である。

  1. L∈coNPL\in\mathsf{coNP}。
  2. 固定有限アルファベットΓc\Gamma_c、多項式p,q∈N[n]p,q\in\mathbb N[n]、および決定性 Turing 機械WWが存在して、任意のx∈Σ∗x\in\Sigma^*について x∉L⟺ある y∈Γc∗ が存在して ∣y∣≤p(∣x∣) かつ W(x,y) が受理するx\notin L \quad\Longleftrightarrow\quad \text{ある }y\in\Gamma_c^*\text{ が存在して } |y|\le p(|x|)\text{ かつ }W(x,y)\text{ が受理する} であり、∣y∣≤p(∣x∣)|y|\le p(|x|)を満たすすべての組(x,y)(x,y)についてW(x,y)W(x,y)は高々q(∣x∣)q(|x|)段で停止する。

証明.(2)は、定義 2.1の二条件においてLLをL‾\overline Lに置き換えたものにほかならない。実際、x∉Lx\notin Lとx∈L‾x\in\overline Lは同値である。したがって、(2)が成り立つことと、WWがL‾\overline Lの多項式時間検証器であることは同値である。定理 3.1により、これはL‾∈NP\overline L\in\mathsf{NP}と同値であり、定義 5.1によりL∈coNPL\in\mathsf{coNP}と同値である。▨

(2)のyyは、xxがLLに属さないことの証拠である。この意味で、coNP\mathsf{coNP}は、言語LLに属さないどの入力xxについても、xxがLLに属さないことを示す多項式長の証拠が存在するような言語LLのクラスである。

命題 5.3.L∈PL\in\mathsf PならばL‾∈P\overline L\in\mathsf Pである。

証明.DDをLLの決定器で最悪時間がO(nk)O(n^k)であるものとする。DDの受理状態と拒否状態を入れ替えた機械をD′D'とする。D′D'の遷移関数はDDと同一であるから、各入力xx上の配置列も停止までの遷移数もDDと同一である。とくにD′D'は全入力で停止し、最悪時間はO(nk)O(n^k)のままである。D′D'がxxを受理することとDDがxxを拒否すること、すなわちx∉Lx\notin Lは同値である。よってD′D'はL‾\overline Lの決定器であり、§E18.10 定義 1.4によりL‾∈P\overline L\in\mathsf Pである。▨

命題 5.4.

P⊆NP∩coNP\mathsf P\subseteq\mathsf{NP}\cap\mathsf{coNP}

である。

証明.L∈PL\in\mathsf Pとする。命題 1.4によりL∈NPL\in\mathsf{NP}である。また命題 5.3によりL‾∈P\overline L\in\mathsf Pであり、再び命題 1.4によりL‾∈NP\overline L\in\mathsf{NP}である。定義 5.1によりL∈coNPL\in\mathsf{coNP}である。▨

命題 5.5.A≤pBA\le_{\mathrm p}BかつB∈coNPB\in\mathsf{coNP}ならば、A∈coNPA\in\mathsf{coNP}である。

証明.A⊆Σ∗A\subseteq\Sigma^*、B⊆Γ∗B\subseteq\Gamma^*とし、ffを帰着関数とする。任意のx∈Σ∗x\in\Sigma^*についてx∈Ax\in Aとf(x)∈Bf(x)\in Bが同値であるから、両辺を否定して、x∈A‾x\in\overline Aとf(x)∈B‾f(x)\in\overline Bも同値である。ffは同じ多項式時間計算可能関数であるから、A‾≤pB‾\overline A\le_{\mathrm p}\overline Bである。B∈coNPB\in\mathsf{coNP}からB‾∈NP\overline B\in\mathsf{NP}であり、命題 4.3によりA‾∈NP\overline A\in\mathsf{NP}である。よって定義 5.1によりA∈coNPA\in\mathsf{coNP}である。▨

命題 5.6.P=NP\mathsf P=\mathsf{NP}ならばNP=coNP\mathsf{NP}=\mathsf{coNP}である。対偶により、NP≠coNP\mathsf{NP}\ne\mathsf{coNP}ならばP≠NP\mathsf P\ne\mathsf{NP}である。

証明.P=NP\mathsf P=\mathsf{NP}と仮定する。L∈NPL\in\mathsf{NP}をとるとL∈PL\in\mathsf Pであり、命題 5.3によりL‾∈P=NP\overline L\in\mathsf P=\mathsf{NP}である。よってL∈coNPL\in\mathsf{coNP}であり、NP⊆coNP\mathsf{NP}\subseteq\mathsf{coNP}を得る。逆にL∈coNPL\in\mathsf{coNP}をとるとL‾∈NP=P\overline L\in\mathsf{NP}=\mathsf Pであり、同じ命題によりL=L‾‾∈P=NPL=\overline{\overline L}\in\mathsf P=\mathsf{NP}である。よってcoNP⊆NP\mathsf{coNP}\subseteq\mathsf{NP}であり、二つのクラスは等しい。▨

例 5.7.例 3.2で扱った言語をHAM⊆Σ∗\mathsf{HAM}\subseteq\Sigma^*とする。ここでΣ\Sigmaは隣接行列の符号に用いる有限アルファベットである。補言語

HAM‾=Σ∗∖HAM\overline{\mathsf{HAM}}=\Sigma^*\setminus\mathsf{HAM}

は、Hamilton 閉路をもたない有向グラフの符号と、有向グラフの符号ではない語からなる。同例によりHAM∈NP\mathsf{HAM}\in\mathsf{NP}であるから、定義 5.1によりHAM‾∈coNP\overline{\mathsf{HAM}}\in\mathsf{coNP}である。

HAM‾\overline{\mathsf{HAM}}がNP\mathsf{NP}に属するかどうかは、本記事の結果からは従わない。全頂点を通る閉路が一つも存在しないことを示す多項式長の証明書として何を与えればよいかは、この時点で与えられていない。NP=coNP\mathsf{NP}=\mathsf{coNP}であるかどうかも未解決である。

6 演習

問題 6.1.

  1. 非決定性 Turing 機械NNと多項式ppについて、停止しない分枝があってもよいが、NNが受理する各入力xxにはp(∣x∣)p(|x|)段以内に受理状態で終わる分枝が存在するとする。NNが受理する言語がNP\mathsf{NP}に属することを示せ。
  2. 二進分枝だけをもつ非決定性機械がn3n^3段以内に停止するとき、分枝選択証明書の長さを求め、検証器の構成を記述せよ。
  3. VVをLLの多項式時間検証器とし、証明書アルファベットをΓc\Gamma_c、長さ上界をppとする。新しい記号□∉Γc\square\notin\Gamma_cを加えたアルファベット上の検証器V′V'で、任意のxxについて「x∈Lx\in Lであることと、長さがちょうどp(∣x∣)p(|x|)の証明書y′y'でV′(x,y′)V'(x,y')が受理するものが存在することが同値」となるものを構成せよ。
  4. A≤pBA\le_{\mathrm p}BとB∈NPB\in\mathsf{NP}からA∈NPA\in\mathsf{NP}を導くとき、証明書長上界が多項式の合成になることを式で示せ。
  5. 有限証明書アルファベットを二進アルファベットへ変更しても NP の定義が変わらないことを、固定長符号の長さと変換時間を用いて証明せよ。
  6. NP∩coNP\mathsf{NP}\cap\mathsf{coNP}が補言語、和集合、および共通部分をとる操作について閉じていることを示せ。
  7. P\mathsf Pが和集合と共通部分について閉じていることを示せ。また、認識可能な言語の全体は補言語をとる操作について閉じていないことを、具体的な言語を挙げて示せ。
解答 (演習の要点).
  1. NNの各配置からの遷移候補に0,…,b−10,\ldots,b-1の番号を付け、証明書アルファベットをΓc={0,…,b−1}\Gamma_c=\{0,\ldots,b-1\}とする。検証器VVは入力(x,y)(x,y)について、N(x)N(x)の初期配置からyyの文字が指定する遷移を一段ずつ実行し、受理状態へ到達したら受理し、無効な番号を読んだ場合、拒否状態へ到達した場合、およびyyを読み終えても受理状態に到達していない場合には拒否する。VVが実行する遷移は∣y∣|y|段以下であるから、∣y∣≤p(∣x∣)|y|\leq p(|x|)ならばV(x,y)V(x,y)はO(p(∣x∣)+∣x∣)O(p(|x|)+|x|)段で停止し、定義 2.1 条件 (b)を満たす。NNの停止しない分枝は、VVが有限の証明書の分だけ模倣した時点で打ち切られる。

    xxをNNが受理するならば、仮定によりp(∣x∣)p(|x|)段以内の受理分枝があり、その遷移番号の列yyは∣y∣≤p(∣x∣)|y|\leq p(|x|)を満たしてV(x,y)V(x,y)に受理される。逆にV(x,y)V(x,y)が受理すれば、yyはN(x)N(x)の実在する受理分枝を指定するので、NNはxxを受理する。よってVVはNNの受理言語の多項式時間検証器であり、定理 3.1によりこの言語はNP\mathsf{NP}に属する。

  2. 各段の候補が二つであるから、証明書は{0,1}\{0,1\}上の長さn3n^3以下の語である。検証器は初期配置から始め、証明書のビットが指定する遷移を一段ずつ実行する。受理状態に到達したら受理し、拒否状態に到達した場合、無効な番号を読んだ場合、n3n^3段を超えた場合、および証明書を読み終えても停止していない場合には拒否する。多テープ上の直接模倣でO(n3)O(n^3)時間である。

  3. V′(x,y′)V'(x,y')を次のように定める。∣x∣|x|からp(∣x∣)p(|x|)を計算し、∣y′∣≠p(∣x∣)|y'|\neq p(|x|)ならば拒否する。y′y'がy□my\square^{m}(y∈Γc∗y\in\Gamma_c^*、m≥0m\geq0)の形でなければ拒否する。この形ならば末尾の□\squareを除いたyyについてV(x,y)V(x,y)を模倣し、その結論を出力する。p(∣x∣)p(|x|)の計算、長さと形の検査、および末尾の除去は多項式時間で行うことができ、∣y∣≤p(∣x∣)|y|\leq p(|x|)であるからV(x,y)V(x,y)の模倣はq(∣x∣)q(|x|)段以内で終わる。長さがp(∣x∣)p(|x|)以下のすべてのy′y'についても同じ手順は多項式時間で停止するので、V′V'は長さ上界ppの多項式時間検証器である。

    x∈Lx\in Lならば、∣y∣≤p(∣x∣)|y|\leq p(|x|)でV(x,y)V(x,y)が受理するyyがあり、y′=y□p(∣x∣)−∣y∣y'=y\square^{p(|x|)-|y|}は長さがちょうどp(∣x∣)p(|x|)でV′(x,y′)V'(x,y')に受理される。逆に、長さp(∣x∣)p(|x|)のy′y'をV′V'が受理すれば、y′=y□my'=y\square^mでV(x,y)V(x,y)が受理し、∣y∣≤p(∣x∣)|y|\leq p(|x|)であるからx∈Lx\in Lである。このV′V'に対しては、定理 3.1の証明の非決定性機械は、生成を終了する選択をせずにちょうどp(∣x∣)p(|x|)文字を生成すればよい。

  4. 出力長について∣f(x)∣≤r(∣x∣)+c|f(x)|\le r(|x|)+cである。BBの証明書長上界をppとすると、ppの係数が非負であるため単調であり、p(∣f(x)∣)≤p(r(∣x∣)+c)p(|f(x)|)\le p(r(|x|)+c)が成り立つ。右辺は多項式の合成であるから∣x∣|x|の多項式である。

  5. ∣Γc∣=b|\Gamma_c|=bの各文字を長さℓ=⌈log⁡2max⁡{2,b}⌉\ell=\lceil\log_2\max\{2,b\}\rceilのビット列へ写す固定長符号をとる。証明書長はℓp(∣x∣)\ell p(|x|)以下となり、ℓ\ellが定数であるから多項式のままである。検証器は二進証明書を左からℓ\ellビットずつ読んで元の文字へ復号すればよく、復号は一文字あたり定数時間である。したがって検証時間も多項式のままであり、定義により定められるクラスは変わらない。

  6. 補言語について、L∈NP∩coNPL\in\mathsf{NP}\cap\mathsf{coNP}ならば、定義 5.1によりL∈NPL\in\mathsf{NP}からL‾∈coNP\overline L\in\mathsf{coNP}、L∈coNPL\in\mathsf{coNP}からL‾∈NP\overline L\in\mathsf{NP}であり、L‾∈NP∩coNP\overline L\in\mathsf{NP}\cap\mathsf{coNP}である。

    次にNP\mathsf{NP}が和集合と共通部分について閉じていることを示す。L1,L2∈NPL_1,L_2\in\mathsf{NP}の多項式時間検証器をV1,V2V_1,V_2、証明書アルファベットをΓ1,Γ2\Gamma_1,\Gamma_2、長さ上界をp1,p2p_1,p_2、時間上界をq1,q2q_1,q_2とする。検証器の条件は∣y∣≤pi(∣x∣)|y|\le p_i(|x|)を満たす証明書yyだけを拘束するので、新しい検証器は模倣の前に証明書の長さを検査する。和集合の検証器V∪V_\cupは、証明書がiyiy(i∈{1,2}i\in\{1,2\})の形でy∈Γi∗y\in\Gamma_i^*かつ∣y∣≤pi(∣x∣)|y|\le p_i(|x|)であるときに限りVi(x,y)V_i(x,y)を模倣してその結論を返し、それ以外の証明書は拒否する。共通部分の検証器V∩V_\capは、証明書が新しい区切り記号#\#を用いたy1#y2y_1\#y_2の形で、j=1,2j=1,2についてyj∈Γj∗y_j\in\Gamma_j^*かつ∣yj∣≤pj(∣x∣)|y_j|\le p_j(|x|)であるときに限りV1(x,y1)V_1(x,y_1)とV2(x,y2)V_2(x,y_2)を順に模倣して、ともに受理するとき受理し、それ以外の証明書は拒否する。いずれも証明書アルファベットはΓ1∪Γ2\Gamma_1\cup\Gamma_2に固定個の記号を加えたものであり、長さ上界をp1+p2+1p_1+p_2+1とする。長さの検査は、pj(∣x∣)p_j(|x|)を一進で書き出し、証明書を高々pj(∣x∣)+1p_j(|x|)+1記号まで読んで比べればよいので、∣x∣|x|の多項式時間で終わる。検査を通った証明書では、模倣するVjV_jへの入力がVjV_jの時間上界の条件の範囲にあるので、模倣はqj(∣x∣)q_j(|x|)段の多項式倍で終わる。よって時間上界は∣x∣|x|の多項式である。

    正しさを確かめる。x∈L1∪L2x\in L_1\cup L_2ならば、あるiiと∣y∣≤pi(∣x∣)|y|\le p_i(|x|)を満たすy∈Γi∗y\in\Gamma_i^*についてVi(x,y)V_i(x,y)が受理し、∣iy∣≤p1(∣x∣)+p2(∣x∣)+1|iy|\le p_1(|x|)+p_2(|x|)+1を満たすiyiyをV∪V_\cupは受理する。逆にV∪V_\cupがiyiyを受理すれば、∣y∣≤pi(∣x∣)|y|\le p_i(|x|)かつVi(x,y)V_i(x,y)が受理するのでx∈Lix\in L_iである。x∈L1∩L2x\in L_1\cap L_2ならば、∣yj∣≤pj(∣x∣)|y_j|\le p_j(|x|)を満たすyjy_jでVj(x,yj)V_j(x,y_j)が受理するものがあり、∣y1#y2∣≤p1(∣x∣)+p2(∣x∣)+1|y_1\#y_2|\le p_1(|x|)+p_2(|x|)+1である。逆にV∩V_\capがy1#y2y_1\#y_2を受理すれば、検査と模倣からx∈L1x\in L_1かつx∈L2x\in L_2である。よってL1∪L2,L1∩L2∈NPL_1\cup L_2,L_1\cap L_2\in\mathsf{NP}である。

    L1,L2∈NP∩coNPL_1,L_2\in\mathsf{NP}\cap\mathsf{coNP}とする。前段によりL1∪L2∈NPL_1\cup L_2\in\mathsf{NP}である。またL1‾,L2‾∈NP\overline{L_1},\overline{L_2}\in\mathsf{NP}であるからL1∪L2‾=L1‾∩L2‾∈NP\overline{L_1\cup L_2}=\overline{L_1}\cap\overline{L_2}\in\mathsf{NP}、すなわちL1∪L2∈coNPL_1\cup L_2\in\mathsf{coNP}である。よってL1∪L2∈NP∩coNPL_1\cup L_2\in\mathsf{NP}\cap\mathsf{coNP}である。共通部分はL1∩L2=L1‾∪L2‾‾L_1\cap L_2=\overline{\overline{L_1}\cup\overline{L_2}}であり、補言語と和集合について閉じていることから従う。

  7. L1,L2∈PL_1,L_2\in\mathsf Pの決定器をD1,D2D_1,D_2とし、最悪時間をそれぞれO(na)O(n^a)、O(nb)O(n^b)とする。入力テープは読取り専用であるから、決定器DDは入力ヘッドを左端へ戻しながらD1D_1を模倣して結論を有限制御に記憶し、作業テープを空白に戻してから入力ヘッドを左端へ戻してD2D_2を模倣する。和集合では一方が受理すれば受理し、共通部分では両方が受理すれば受理する。作業テープの清掃と入力ヘッドの巻き戻しは、それぞれの模倣の時間と入力長の定数倍で終わるので、DDの時間はO(na+nb+n+1)O(n^a+n^b+n+1)であり多項式である。よってL1∪L2,L1∩L2∈PL_1\cup L_2,L_1\cap L_2\in\mathsf Pである。

    §E18.5 命題 3.2によりHALTTM\mathsf{HALT}_{TM}は認識可能であるが、§E18.5 系 4.2によりその補言語は認識可能でない。よって認識可能な言語の全体は補言語について閉じていない。とくに、HALTTM\mathsf{HALT}_{TM}の認識器の受理状態と拒否状態を入れ替えた機械は補言語の認識器にならない。命題 5.3の構成がP\mathsf Pで成り立つのは、決定器が全入力で停止するからである。

▨

参考文献

  1. Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, Cambridge, 2009.非決定性計算、証明書検証、および NP の定義を参考にした。
  2. Christos H. Papadimitriou, Computational Complexity, Addison-Wesley, 1994.P、NP、および多項式時間帰着を参考にした。
  3. Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, Boston, 2013.非決定性多項式時間と verifier による特徴づけを参考にした。

前提記事