1 非決定性多項式時間
非決定性機械では、各配置から有限個の次配置を許す。機械の遷移表は有限であるため、全配置に共通する分枝数の定数上界が存在する。
定義 1.1.§E15.10 定義 1.1の読取り専用入力テープと固定有限本の作業テープをもつ機械で、遷移先を有限集合として与えるものを非決定性 Turing 機械 (nondeterministic Turing machine) とする。入力x上の計算木は、初期配置を根とし、一段で到達することができる配置を子とする有限分枝木である。少なくとも一つの分枝が受理状態で終わるとき、Nはxを受理する。
ある多項式p∈N[n]が存在して、長さnの各入力に対するすべての計算分枝が高々p(n)段で受理または拒否するとき、Nを多項式時間非決定性決定器 (polynomial-time nondeterministic decider) という。
受理分枝だけが多項式時間であればよいのではない。拒否入力を含むすべての入力において、すべての分枝が共通の多項式上界内で停止することが定義に含まれる。
定義 1.2. 有限アルファベットΣ上の言語L⊆Σ∗が NP (NP) に属するとは、Lを受理する多項式時間非決定性決定器が存在することをいう。
Cook–Levin の符号化では、入力と作業領域を同じテープ上に置く標準単テープ機械が便利である。次の命題により、この変更は NP を変えない。
証明. 最初に、読取り専用入力テープとk本の作業テープをもつ非決定性機械Nを、標準単テープ非決定性機械Sで模倣する。Sは入力xを有限回走査して、
#uin#u1#⋯#uk#という複数トラックの符号へ書き換える。uinは変更しない入力トラックであり、各トラックのヘッド位置を印付き記号で表す。
元の一段を模倣するとき、Sは符号全体を走査して各ヘッド下の記号を有限制御へ記録する。元の配置で選ぶことができる各遷移規則に対して、Sにも対応する非決定的選択を一つ置く。選択後にもう一度符号を走査し、作業記号とヘッド印を更新する。初期符号はO(∣x∣2+1)時間で構成することができる。元の計算がt段以内であれば、符号長はO(∣x∣+t+1)であり、一段の模倣にはO(∣x∣+t+1)時間しか要らない。したがって、各分枝の全模倣時間は
O(∣x∣2+t(∣x∣+t+1)+1)である。tが入力長の多項式なら、この上界も多項式である。遷移選択を一対一に対応させたため、受理分枝の存在が保存され、全分枝の時間にも同じ上界が成り立つ。
逆に、標準単テープ非決定性機械Sを資源モデルで模倣するには、読取り専用入力を一度だけ第一作業テープへ複写し、その後はSの各非決定的遷移を同じ一段で実行する。複写にO(∣x∣+1)時間を要するだけなので、多項式時間性と受理分枝の存在は保存される。▨
決定性機械は、各配置からの次配置が一つである非決定性機械とみなすことができる。
命題 1.4.
P⊆NPである。
証明.L∈Pとし、DをLの多項式時間決定器とする。Dの各配置から出る遷移を唯一の非決定的選択とみなせば、計算木は一本の分枝だけからなる。Dは全入力で多項式時間内に停止し、その分枝が受理することと入力がLに属することは同値である。したがってL∈NPである。▨
逆向きの包含NP⊆Pが成り立つかどうかは知られていない。P=NPであるかどうかは未解決の問題であり、本記事も本単元も、この問いに対するどちらの結論も主張しない。以下で示す包含関係はすべて、この問いを解かずに証明することができるものである。
2 多項式長の証明書
入力と証明書のアルファベットを分けて固定する。異なる有限アルファベット間の符号化には、各文字を同じ長さの二進語へ写す固定長符号を用いる。この変換は語の長さを定数倍しか増やさず、線形時間で実行することができる。
定義 2.1.L⊆Σ∗とする。固定有限アルファベットΓc、多項式p,q∈N[n]、および決定性 Turing 機械Vが存在し、次の二条件を満たすとき、VをLの多項式時間検証器 (polynomial-time verifier) という。
- 任意のx∈Σ∗について
x∈L⟺ある y∈Γc∗ が存在して ∣y∣≤p(∣x∣) かつ V(x,y) が受理する.
- ∣y∣≤p(∣x∣)を満たすすべての組(x,y)について、V(x,y)は高々q(∣x∣)段で停止する。
語yを証明書 (certificate) という。入力対(x,y)は、二本の読取り専用テープに分けて与えるか、区切り記号を用いた固定符号⟨x,y⟩として与える。
条件 (b)をq(∣x∣+∣y∣)と書く定義も同値である。証明書長がp(∣x∣)以下であるため、多項式の合成によってq(∣x∣+p(∣x∣))も∣x∣の多項式になる。
3 二つの定義の同値性
非決定性から検証器への向きでは、計算分枝で選んだ遷移番号を証明書に記録する。逆向きでは、非決定性機械が証明書を一文字ずつ生成してから検証器を実行する。
定理 3.1. 有限アルファベット上の言語Lについて、次の二条件は同値である。
- L∈NP。
- Lは多項式時間検証器をもつ。
証明.(1)を仮定する。NをLの非決定性決定器とし、長さnの入力上の全分枝がp(n)段以内に停止するとする。Nの遷移表は有限であるため、各配置からの遷移候補に0,…,b−1の番号を付けることができる。ここでbは機械だけに依存する定数であり、存在しない候補番号は無効とする。
証明書アルファベットをΓc={0,…,b−1}とする。検証器Vは入力(x,y)を受け取り、N(x)の初期配置から始める。yの文字を左から読み、各文字が指定する遷移を一段ずつ実行する。無効な番号を読んだ場合、拒否状態へ到達した場合、またはp(∣x∣)文字を超えた場合には拒否する。受理状態へ到達した場合には受理し、証明書を読み終えても非停止配置にいる場合には拒否する。
Nにxの受理分枝が存在するなら、その分枝で選ばれた高々p(∣x∣)個の番号列を証明書にすればVは受理する。逆に、Vが証明書yを受理したなら、yが指定した遷移列はN(x)の実在する受理分枝である。証明書長はp(∣x∣)以下である。一段の遷移の直接模倣を多テープ上で行えば時間はO(p(∣x∣)+∣x∣)であり、一本の作業テープへ直しても§E15.10 系 4.2により多項式時間である。
Γcを二進アルファベットへ統一する場合には、一文字をℓ=⌈log2max{2,b}⌉ビットで符号化する。証明書長はℓp(∣x∣)以下となり、ℓは正の固定定数であるため多項式長のままである。したがって、(1)⇒(2)が従う。
次に(2)を仮定し、検証器Vと多項式p,qをとる。非決定性機械Nは入力x上で、最初に証明書テープを空にする。続いて高々p(∣x∣)回、次の二種類の選択を行う。
- 証明書の生成を終了する。
- Γcの一文字を非決定的に選び、証明書テープへ書く。
p(∣x∣)文字を書いた場合には強制的に生成を終了し、その後でV(x,y)を決定的に模倣する。Vが受理した場合に限って受理する。
各y∈Γc∗で∣y∣≤p(∣x∣)を満たすものについて、ちょうどyを生成して終了する分枝が存在する。したがって、Nに受理分枝が存在することと、長さがp(∣x∣)以下の証明書をVが受理することは同値であり、この受理分枝の存在条件はx∈Lと同値である。
入力長nを二進計数し、固定した多項式p(n)を計算して反復回数を管理する処理は多項式時間で実行することができる。証明書の生成はO(p(n))段であり、検証はq(n)段以内で停止する。したがって、全分枝に共通する多項式上界が存在する。必要なら命題 1.3によって標準単テープ機械へ変換しても、多項式時間性を保つ。よってNは多項式時間非決定性決定器であり、(2)⇒(1)が従う。▨
例 3.2 (Hamilton 閉路の検証). 頂点集合を{1,…,m}とする有向グラフGを隣接行列で符号化し、全頂点を一度ずつ通って始点へ戻る有向閉路が存在するかを問う。
証明書を頂点列(v1,…,vm)とする。各頂点番号には⌈log2(m+1)⌉ビットを用いるため、証明書長はO(mlogm)である。検証器は、各番号が1,…,mに属すること、番号が重複しないこと、全頂点が現れること、および
(vi,vi+1)(1≤i<m),(vm,v1)がすべて辺であることを調べる。単純な二重走査でもO(m2logm)時間であり、隣接行列の符号長はΘ(m2)なので入力長の多項式である。したがって、この言語は NP に属する。
4 多項式時間 many-one 帰着
§E15.6 定義 1.1では帰着関数に全計算可能性だけを要求した。計算量理論では、その変換時間も入力長の多項式で制限する。
定義 4.1. 言語A⊆Σ∗とB⊆Γ∗に対し、関数
f:Σ∗⟶Γ∗が決定性 Turing 機械によって多項式時間で計算され、任意のx∈Σ∗について
x∈A⟺f(x)∈Bを満たすとする。このとき、AはBに多項式時間 many-one 帰着 (polynomial-time many-one reduction) するといい、
A≤pBと書く。
出力を明示的に書く機械では、帰着関数の出力長は計算時間以下である。したがって、多項式時間帰着の出力長も入力長の多項式で抑えられる。
命題 4.2.A≤pBかつB∈Pならば、A∈Pである。
証明. 帰着関数をfとすると、
A={x:f(x)∈B}である。したがって§E15.10 命題 5.1を適用すれば結論を得る。▨
命題 4.3.A≤pBかつB∈NPならば、A∈NPである。
証明.fを帰着関数とし、長さnの入力上の計算時間をr(n)以下とする。出力長について
∣f(x)∣≤r(∣x∣)+cとなる機械依存の定数cが存在する。Bの検証器をVB、証明書長上界をp(m)、検証時間上界をq(m)とする。
Aの検証器VAは入力(x,y)に対し、最初にz=f(x)を計算する。次に、∣y∣>p(∣z∣)ならば直ちに拒否し、∣y∣≤p(∣z∣)の場合に限ってVB(z,y)を実行する。VAに許す証明書長の上界を
p(r(∣x∣)+c)とする。この上界は∣x∣の多項式であり、∣z∣≤r(∣x∣)+cとpの単調性から、Bの受理証明書に必要な長さp(∣z∣)以上である。
x∈Aならばz∈Bである。したがって、∣y∣≤p(∣z∣)かつVB(z,y)が受理する証明書yが存在する。このyは上の全体上界も満たし、長さ検査を通るのでVAが受理する。逆にx∈/Aならばz∈/Bである。全体上界を満たす任意のyについて、∣y∣>p(∣z∣)ならVAは直ちに拒否し、∣y∣≤p(∣z∣)ならBの検証器の健全性によりVB(z,y)が拒否する。したがってVAも拒否する。
停止性と時間上界も確認する。fの計算はr(∣x∣)段以内で停止する。長さ検査はp(∣z∣)+1文字まで調べれば終わり、検査を通った場合だけVBを実行する。この場合には検証器の定義からVB(z,y)はq(∣z∣)段以内に停止する。したがって、全体上界を満たす証明書上でVAは必ず停止し、その時間は
r(∣x∣)+O(p(r(∣x∣)+c)+1)+q(r(∣x∣)+c)以下であり、∣x∣の多項式である。
VAの証明書アルファベットにはVBと同じ固定有限アルファベットを用いることができる。二進アルファベットへ統一する場合には固定長符号で一文字ずつ変換すればよく、証明書長と検証時間は定数倍しか増えない。したがってAは多項式時間検証器をもち、定理 3.1によりA∈NPである。▨
命題 4.4.A≤pBかつB≤pCならば、A≤pCである。
証明. 二つの帰着関数をf,gとする。合成g∘fは
x∈A⟺f(x)∈B⟺g(f(x))∈Cを満たす。fの出力長は∣x∣の多項式であり、gの時間はその入力長の多項式であるため、§E15.10 命題 5.1と同じ合成評価によりg∘fは多項式時間で計算される。▨
5 補言語のクラス co-NP
NPの二つの定義は、いずれも受理分枝または証明書の存在という形をとる。存在の否定を、一般に存在の形へ書き直すことはできない。したがって、L∈NPから補言語Σ∗∖LがNPに属することは従わない。補言語の側がNPに属する言語のクラスを、別に定める。
定義 5.1. 有限アルファベットΣ上の言語L⊆Σ∗に対し、
L=Σ∗∖LをLの補言語 (complement language) という。L∈NPであるときLは coNP (coNP) に属するといい、coNPをこのような言語全体のクラスとする。
L=Lであるから、定義より直ちに、L∈coNPとL∈NPは同値であり、L∈NPとL∈coNPも同値である。補言語をとる操作は、NPとcoNPを互いに移す。
命題 5.2. 有限アルファベットΣ上の言語Lについて、次の二条件は同値である。
- L∈coNP。
- 固定有限アルファベットΓc、多項式p,q∈N[n]、および決定性 Turing 機械Wが存在して、任意のx∈Σ∗について
x∈/L⟺ある y∈Γc∗ が存在して ∣y∣≤p(∣x∣) かつ W(x,y) が受理する
であり、∣y∣≤p(∣x∣)を満たすすべての組(x,y)についてW(x,y)は高々q(∣x∣)段で停止する。
証明.(2)は、定義 2.1の二条件においてLをLに置き換えたものにほかならない。実際、x∈/Lとx∈Lは同値である。したがって、(2)が成り立つことと、WがLの多項式時間検証器であることは同値である。定理 3.1により、これはL∈NPと同値であり、定義 5.1によりL∈coNPと同値である。▨
(2)のyは、xがLに属さないことの証拠である。この意味で、coNPは所属の否定に多項式長の証拠を要求するクラスである。
命題 5.3.L∈PならばL∈Pである。
証明.DをLの決定器で最悪時間がO(nk)であるものとする。Dの受理状態と拒否状態を入れ替えた機械をD′とする。D′の遷移関数はDと同一であるから、各入力x上の配置列も停止までの遷移数もDと同一である。とくにD′は全入力で停止し、最悪時間はO(nk)のままである。D′がxを受理することとDがxを拒否すること、すなわちx∈/Lは同値である。よってD′はLの決定器であり、§E15.10 定義 1.4によりL∈Pである。▨
命題 5.4.
P⊆NP∩coNPである。
証明.L∈Pとする。命題 1.4によりL∈NPである。また命題 5.3によりL∈Pであり、再び命題 1.4によりL∈NPである。定義 5.1によりL∈coNPである。▨
命題 5.5.A≤pBかつB∈coNPならば、A∈coNPである。
証明.A⊆Σ∗、B⊆Γ∗とし、fを帰着関数とする。任意のx∈Σ∗についてx∈Aとf(x)∈Bが同値であるから、両辺を否定して、x∈Aとf(x)∈Bも同値である。fは同じ多項式時間計算可能関数であるから、A≤pBである。B∈coNPからB∈NPであり、命題 4.3によりA∈NPである。よって定義 5.1によりA∈coNPである。▨
命題 5.6.P=NPならばNP=coNPである。対偶により、NP=coNPならばP=NPである。
証明.P=NPと仮定する。L∈NPをとるとL∈Pであり、命題 5.3によりL∈P=NPである。よってL∈coNPであり、NP⊆coNPを得る。逆にL∈coNPをとるとL∈NP=Pであり、同じ命題によりL=L∈P=NPである。よってcoNP⊆NPであり、二つのクラスは等しい。▨
例 5.7 (Hamilton 閉路をもたないグラフ).例 3.2 (Hamilton 閉路の検証)で扱った言語をHAM⊆Σ∗とする。ここでΣは隣接行列の符号に用いる有限アルファベットである。補言語
HAM=Σ∗∖HAMは、Hamilton 閉路をもたない有向グラフの符号と、有向グラフの符号ではない語からなる。同例によりHAM∈NPであるから、定義 5.1によりHAM∈coNPである。
HAMがNPに属するかどうかは、本記事の結果からは従わない。全頂点を通る閉路が一つも存在しないことを示す多項式長の証明書として何を与えればよいかは、この時点で与えられていない。NP=coNPであるかどうかも未解決である。
7 演習
問題 7.1.
- 非決定性機械の全分枝停止という条件を外すと、検証器への変換のどの箇所で共通の証明書長上界を失うかを説明せよ。
- 二進分枝だけをもつ非決定性機械がn3段以内に停止するとき、分枝選択証明書の長さを求め、検証器の構成を記述せよ。
- 検証器から非決定性機械を構成する証明で、証明書の終了位置を非決定的に選ぶ必要がある理由を説明せよ。
- A≤pBとB∈NPからA∈NPを導くとき、証明書長上界が多項式の合成になることを式で示せ。
- 有限証明書アルファベットを二進アルファベットへ変更しても NP の定義が変わらないことを、固定長符号の長さと変換時間を用いて証明せよ。
- L∈NP∩coNPである言語について、x∈Lの場合とx∈/Lの場合のそれぞれに多項式長の証拠が存在することを、定義から説明せよ。
- 命題 5.3の証明で、決定器が全入力で停止するという条件を用いる箇所を指摘せよ。同じ構成を認識器へ適用することができない理由も述べよ。
解答 (演習の要点).
- 証明書は受理分枝で選ばれた遷移番号の列であり、その長さは分枝の段数である。全分枝に共通の段数上界p(n)を外すと、定義 2.1 条件 (a)が要求する長さ上界p(∣x∣)を選ぶことができない。さらに、番号列が指定する分枝が停止しない場合には、検証器がq(∣x∣)段以内に停止するという定義 2.1 条件 (b)も失われる。
- 各段の候補が二つであるから、証明書は{0,1}上の長さn3以下の語である。検証器は初期配置から始め、証明書のビットが指定する遷移を一段ずつ実行する。受理状態に到達したら受理し、拒否状態に到達した場合、無効な番号を読んだ場合、n3段を超えた場合、および証明書を読み終えても停止していない場合には拒否する。多テープ上の直接模倣でO(n3)時間である。
- 受理する証明書の長さはp(∣x∣)以下であるが、ちょうどp(∣x∣)であるとは限らない。長さp(∣x∣)の語だけを生成する機械にすると、より短い証明書しか受理されない入力を受理する分枝が存在しなくなる。各段で生成を終了する選択を許すことにより、長さp(∣x∣)以下のすべての語がいずれかの分枝で生成される。
- 出力長について∣f(x)∣≤r(∣x∣)+cである。Bの証明書長上界をpとすると、pの係数が非負であるため単調であり、p(∣f(x)∣)≤p(r(∣x∣)+c)が成り立つ。右辺は多項式の合成であるから∣x∣の多項式である。
- ∣Γc∣=bの各文字を長さℓ=⌈log2max{2,b}⌉のビット列へ写す固定長符号をとる。証明書長はℓp(∣x∣)以下となり、ℓが定数であるから多項式のままである。検証器は二進証明書を左からℓビットずつ読んで元の文字へ復号すればよく、復号は一文字あたり定数時間である。したがって検証時間も多項式のままであり、定義が定めるクラスは変わらない。
- L∈NPであるから、定理 3.1によりLの多項式時間検証器が存在し、x∈Lのときに受理される多項式長の証明書が存在する。L∈coNPであるから、命題 5.2により、x∈/Lのときに受理される多項式長の反証書が存在する。したがって、どちらの答えについても多項式長の証拠を提示することができる。
- 停止性は二箇所で用いる。第一に、D′が全入力で停止することを結論する箇所である。第二に、D′が受理しないこととDが拒否することを同値とする箇所である。認識器では、x∈/Lのときに停止しない計算があり得るため、受理状態と拒否状態を入れ替えても、その入力上でD′は受理しない。したがって、この構成から補言語の認識器を得ることはできない。
▨