計算量理論

同義語:計算複雑性理論computational complexity theorycomplexity theory

概要

計算量理論(computational complexity theory)とは、計算で解ける問題を、必要な時間(計算の段数)と空間(記憶の量)で分類する分野である。多テープの Turing 機械でクラスを定めると、様相を数えるなどして$\mathrm{L}\subset\mathrm{NL}\subset\mathrm{P}\subset\mathrm{NP}\subset\mathrm{PSPACE}\subset\mathrm{EXP}$ が従う。非決定性の機械は空間の 2 乗で決定性の機械に直せ(Savitch の定理)、時間を十分に増やすと判定できる言語が増える(時間階層定理)ので $\mathrm{P}\ne\mathrm{EXP}$ である。$\mathrm{P}=\mathrm{NP}$ が成り立つかどうかは未解決である。

$$\newcommand{C}[0]{\mathbb{C}} \newcommand{div}[0]{\mathbin{÷}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{Z}[0]{\mathbb{Z}} $$

前提知識: Turing機械, P対NP問題, NP完全, Landau記号

計算量理論(computational complexity theory)は、計算で解ける問題を、解くのに必要な資源の量で分類する分野である。資源として主に測るのは、計算の段数(時間)と、計算中に使う記憶の量(空間)である。計算可能性理論 が「機械的に解けるか」を問うのに対し、計算量理論は「解けるとして、入力の長さに対してどれだけの時間・空間で解けるか」を問う。その中心には P対NP問題 のような未解決問題があるが、資源どうしの関係については証明された定理も多い。
この記事では、時間と空間を同じ計算のモデルで測るために多テープの Turing 機械を定め、計算量のクラス $\mathrm{L}$・$\mathrm{NL}$・$\mathrm{P}$・$\mathrm{NP}$・$\mathrm{PSPACE}$・$\mathrm{EXP}$ を定義する。そのうえで、様相の個数を数える議論などから包含関係 $\mathrm{L}\subset\mathrm{NL}\subset\mathrm{P}\subset\mathrm{NP}\subset\mathrm{PSPACE}\subset\mathrm{EXP}$ を示し、非決定性の機械を空間の 2 乗で決定性の機械に置き換える Savitch の定理と、時間を十分に増やせば判定できる言語が真に増える時間階層定理を証明する。系として $\mathrm{PSPACE}$ と非決定性の多項式空間が一致すること、$\mathrm{P}\ne\mathrm{EXP}$ であることが従う。

分野の見取り図

記事扱う内容
Turing機械計算のモデルの定義
P対NP問題多項式時間のクラス P・NP・coNP・EXP と、P $=$ NP の言い換え
NP完全多項式時間還元、Cook–Levin の定理、NP完全な問題
Chomsky階層・線形有界オートマトン・文脈依存言語文法と機械の階層、線形の空間で受理される言語
多倍長演算・計算整数論整数の演算の手間(個々の問題の時間の評価)

計算のモデル

入力に使う空間を数えずに済むように、入力を読むだけのテープと、作業用のテープを分ける。

多テープ Turing 機械と時間・空間

$k\ge1$ とする。$k$ 本の作業テープをもつ Turing 機械 $M$ は、有限集合の状態 $Q$(開始状態 $q_0$、受理状態 $q_{\mathrm{acc}}$、拒否状態 $q_{\mathrm{rej}}$ を含む)、入力の文字 $\Sigma$、作業テープの文字 $\Gamma\supset\Sigma\cup\{\sqcup\}$ と、遷移の有限集合 $\delta$ からなる。入力 $w\in\Sigma^*$(長さ $n$)は、両端の記号に挟まれて入力テープのマス $0,\dots,n+1$ に書かれ、入力テープは読むだけである。作業テープはマス $0,1,2,\dots$ からなり、初めは空白で、ヘッドはマス $0$ にある。遷移は、状態と各ヘッドの下の記号から、次の状態・作業テープに書く記号・各ヘッドの動き(左・右・停止。入力テープのヘッドはマス $0,\dots,n+1$ の外に出ず、作業テープのヘッドはマス $0$ より左に出ない)を定める。

  1. 状態・入力ヘッドの位置・作業テープの内容とヘッドの位置の組を 様相 という。様相の 使ったマスの数 は、各作業テープについて、ヘッドの位置と空白でないマスの番号の最大値に $1$ を足した数の総和とする。初期様相から遷移を 1 つずつ適用した様相の列を 計算の道 という。$q_{\mathrm{acc}}$ と $q_{\mathrm{rej}}$ からの遷移はない。どの様相にも適用できる遷移が高々 1 つしかない $M$ を 決定性、そうでないものを 非決定性 という。
  2. $M$ が言語 $L\subset\Sigma^*$ を 判定する とは、どの入力でもすべての計算の道が $q_{\mathrm{acc}}$ か $q_{\mathrm{rej}}$ で停止し、$w\in L$ と「$q_{\mathrm{acc}}$ で停止する道がある」ことが同値であることをいう。
  3. $t,s\colon\mathbb{N}\to\mathbb{N}$ とする。$M$ が 時間 $t$ で動くとは、長さ $n$ のどの入力のどの道も $t(n)$ 段以内に停止することをいう。空間 $s$ で動くとは、どの道のどの様相でも、各作業テープのヘッドがそれまでに達した最も右のマスの番号に $1$ を足した数の総和が $s(n)$ 以下であることをいう。空白でないマスはヘッドが通ったマスなので、空間 $s$ で動く機械の道の上の様相は、使ったマスの数が $s(n)$ 以下である。
計算量のクラス

ある定数 $c\ge1$ について時間 $c\,t(n)+c$ で動き $L$ を判定する決定性の機械があるような言語 $L$ の全体を $\mathrm{DTIME}(t)$ と書く。非決定性の機械にしたものを $\mathrm{NTIME}(t)$、空間 $c\,s(n)+c$ で同様に定めたものを $\mathrm{DSPACE}(s)$・$\mathrm{NSPACE}(s)$ と書く。
$$ \mathrm{L}=\mathrm{DSPACE}(\log n),\quad \mathrm{NL}=\mathrm{NSPACE}(\log n),\quad \mathrm{P}=\bigcup_{c}\mathrm{DTIME}(n^c),\quad \mathrm{NP}=\bigcup_{c}\mathrm{NTIME}(n^c), $$
$$ \mathrm{PSPACE}=\bigcup_{c}\mathrm{DSPACE}(n^c),\quad \mathrm{NPSPACE}=\bigcup_{c}\mathrm{NSPACE}(n^c),\quad \mathrm{EXP}=\bigcup_{c}\mathrm{DTIME}(2^{n^c}) $$
とおく($\log$ は底 $2$ で、$\log n$ は $\lceil\log_2(n+1)\rceil$ と読む)。

ここでの P・NP は P対NP問題 の定義「クラス P・NP・coNP・EXP」(1 本のテープの機械と証明書による定義)と同じクラスである。多テープの機械は 1 本のテープの機械で時間の 2 乗の範囲で模倣でき(MSm24 Theorem 6.1.2)、非決定性の多項式時間の機械による定義と証明書による定義は一致する(MSm24 Theorem 6.4.3)。この記事ではこれらを証明しない。EXP も同様である。時間が入力の長さより小さいと入力を読み終えられないが、空間は入力のテープを数えないので、$\log n$ のように入力の長さより小さい量にも意味がある。

構成可能な関数

$s\colon\mathbb{N}\to\mathbb{N}$ が 空間構成可能 であるとは、入力 $1^n$ から $s(n)$ を 2 進法で書き出す決定性の機械で、空間 $O(s(n))$ で動くものがあることをいう。$t$ が 時間構成可能 であるとは、入力 $1^n$ から $1^{t(n)}$ を書き出す決定性の機械で、時間 $O(t(n))$ で動くものがあることをいう。

$\log n$ は $n$ の 2 進法の桁数である。入力を読みながら 2 進法のカウンタで $n$ を数え、その桁数をもう 1 つのカウンタで数えれば空間 $O(\log n)$ で求まるので、$\log n$ は空間構成可能である。$n$ と $n^c$($c\ge1$)も、$n$ を 2 進法で数えてから($n^c$ は掛け算をして)書き出せば空間 $O(\log n)$ で求まるので、空間構成可能である。$2^{cn}$ は時間構成可能である。実際、$1^{2^{cn}}$ は、$1$ から始めて「並びを 2 倍にする」ことを $cn$ 回繰り返せば作れ、長さ $m$ の並びの倍化は時間 $O(m)$ なので、全体の時間は $O(2^{cn})$ である。

様相の個数と基本の包含関係

様相の個数

$M$ を状態の集合 $Q$、作業テープの文字 $\Gamma$、$k$ 本の作業テープをもつ機械とする。長さ $n$ の入力に対する様相で、使ったマスの数が $S\ge1$ 以下のものは、$\lvert Q\rvert\,(n+2)\,(S\lvert\Gamma\rvert^S)^k$ 個以下である。とくに $s(n)\ge\log n$ で $c\ge1$ が定数なら、$M$ と $c$ だけで決まる正の整数 $d$ があって、使ったマスの数が $c\,s(n)+c$ 以下の様相は $2^{d\,s(n)}$ 個以下である($n\ge1$)。

要点:状態、入力ヘッドの位置、各作業テープのヘッドの位置と最初の $S$ マスの内容を数える。

詳しい証明を開く

使ったマスが $S$ 以下なら、各作業テープのヘッドはマス $0,\dots,S-1$ にあり、マス $S$ 以降は空白のままである。よって様相は、状態($\lvert Q\rvert$ 通り)、入力ヘッドの位置($n+2$ 通り)、各作業テープのヘッドの位置($S$ 通り)と最初の $S$ マスの内容($\lvert\Gamma\rvert^S$ 通り)で決まる。後半:$S:=c\,s(n)+c\le2c\,s(n)$($s(n)\ge\log n\ge1$)とする。$n+2\le4\cdot2^{\log n}\le2^{2+s(n)}$、$S\le2^S$ なので、個数は $\lvert Q\rvert\,2^{2+s(n)}\,2^{kS(1+\log_2\lvert\Gamma\rvert)}$ 以下であり、指数は $s(n)$ の定数倍で押さえられる。$\square$

基本の包含関係
  1. $s(n)\ge\log n$ なら、$\mathrm{NSPACE}(s)\subset\bigcup_{d}\mathrm{DTIME}(2^{d\,s(n)})$ である。
  2. $\mathrm{L}\subset\mathrm{NL}\subset\mathrm{P}\subset\mathrm{NP}\subset\mathrm{PSPACE}\subset\mathrm{NPSPACE}\subset\mathrm{EXP}$ である。
到達できる様相をすべて集める

手続きは通常のプログラムの形で書く。その実行時間が $T$ なら、多テープの機械でも時間 $T$ の多項式の範囲で実行できる(P対NP問題 の定義の後の段落と同じ扱い)。
1:$L$ を空間 $c\,s(n)+c$ で判定する非決定性の機械 $M$ をとる。入力 $w$ の初期様相から遷移で到達できる様相は、どれもある計算の道の上にあるので、使ったマスが $c\,s(n)+c$ 以下であり、lem-cc-configurations により $N\le2^{d\,s(n)}$ 個以下である。各様相は $O(s(n))$ 個の記号で書ける(入力ヘッドの位置は $\log(n+2)=O(s(n))$ 桁)。到達できる様相の集合 $R$ を、初期様相だけから始め、「$R$ の元から 1 回の遷移で移れる様相で $R$ にないもの」を加えることを、加えるものがなくなるまで繰り返して求める(幅優先探索 と同じ考え方)。繰り返しは $N$ 回以下で、1 回は $O(N^2s(n))$ 程度の比較で済むので、全体の時間は $N$ の多項式、すなわちある $d'$ について $2^{d's(n)}$ 以下である。$R$ に受理状態の様相があれば受理し、なければ拒否する。これは $L$ を判定する決定性の手続きである。
2:決定性の機械は非決定性の機械の特別な場合なので、$\mathrm{L}\subset\mathrm{NL}$、$\mathrm{P}\subset\mathrm{NP}$、$\mathrm{PSPACE}\subset\mathrm{NPSPACE}$ である。1 を $s(n)=\log n$ に使うと $2^{d\log n}$ は $n$ の多項式で押さえられるので $\mathrm{NL}\subset\mathrm{P}$、$s(n)=n^c$ に使うと $\mathrm{NPSPACE}\subset\mathrm{EXP}$ である。
$\mathrm{NP}\subset\mathrm{PSPACE}$ を示す。$L$ を時間 $t(n):=c\,n^c+c$ で判定する非決定性の機械 $M$ をとり、各様相で適用できる遷移の数の上限を $r$ とする。$M$ の道は、各段でどの遷移を選んだかを表す $\{1,\dots,r\}$ の長さ $t(n)$ 以下の列で決まる。決定性の機械は、この列を辞書式の順に 1 つずつ作業テープに書き、その列に従って $M$ の計算をたどり、$q_{\mathrm{acc}}$ に達する列があれば受理する。列とたどる計算の様相は $O(t(n))$ 個のマスに収まり($t(n)$ 段で使えるマスは各テープ $t(n)+1$ 個以下)、次の列に移るときに同じマスを使い直すので、空間は $O(n^c)$ である。$\square$

時間は 1 段に 1 マスしか新しく使えないので $\mathrm{DTIME}(t)\subset\mathrm{DSPACE}(t)$ であるのに対し、空間は使い直せるので、空間 $s$ の機械は $2^{s}$ 程度の段数動きうる。thm-cc-inclusions の 1 は、空間 $s$ の非決定性の機械でさえ、時間 $2^{O(s)}$ の決定性の機械で置き換えられることを述べている。

Savitch の定理

非決定性の機械は、たくさんの道のどれか 1 つが受理すればよい。決定性の機械で模倣するには道をすべて試す必要があり、時間についてはそれで指数的に増える(thm-cc-inclusions の証明)。空間については、2 乗で済む。

Savitchの定理

$s$ が空間構成可能で $s(n)\ge\log n$ なら、
$$ \mathrm{NSPACE}(s)\subset\mathrm{DSPACE}(s^2) $$
である。

道を中点で 2 つに分けて再帰する

段 1(様相のグラフ)。$L$ を空間 $c\,s(n)+c$ で判定する非決定性の機械 $M$ をとる。入力 $w$(長さ $n$)を固定し、使ったマスが $S:=c\,s(n)+c$ 以下の様相を頂点とし、1 回の遷移で移れる様相の組を辺とする有向グラフ $G$ を考える。lem-cc-configurations により頂点は $2^m$ 個以下である($m:=d\,s(n)$)。各様相は $O(s(n))$ 個の記号で書け、2 つの様相の間に辺があるかは $M$ の遷移の表と照らして空間 $O(s(n))$ で判定できる。
段 2(到達の判定)。様相 $C,C'$ と $i\ge0$ について、$G$ に $C$ から $C'$ への長さ $2^i$ 以下の道があるかを返す手続き $\mathrm{REACH}(C,C',i)$ を次で定める。

  • $i=0$ なら、$C=C'$ か、$C$ から $C'$ へ辺があるかを調べて返す。
  • $i\ge1$ なら、頂点 $Z$ をすべて順に試し、$\mathrm{REACH}(C,Z,i-1)$ と $\mathrm{REACH}(Z,C',i-1)$ がともに真になる $Z$ があれば真を、なければ偽を返す。
    $i$ についての帰納法で、これが正しい答えを返すことを示す。$i=0$ は定義どおりである。長さ $\ell\le2^i$ の道 $C=Y_0,Y_1,\dots,Y_\ell=C'$ があれば、$Z:=Y_{\lfloor\ell/2\rfloor}$ で前半と後半の長さはどちらも $2^{i-1}$ 以下であり、帰納法の仮定から 2 つの呼び出しは真を返す。逆に 2 つが真なら、長さ $2^{i-1}$ 以下の道をつないで長さ $2^i$ 以下の道ができる。
    段 3(空間)。$\mathrm{REACH}$ を、呼び出しごとに $(C,C',i,Z)$ と「いまどちらの呼び出しを実行中か」を 1 段として積み上げるスタックで実行する。1 段は $O(s(n))$ 個のマスに収まり($i\le m=O(s(n))$ も 2 進法で $O(\log s(n))$ 桁)、呼び出しは $i$ が 1 つずつ減るので、スタックの高さは $m+1$ 以下である。1 つの呼び出しが終われば、その段のマスは次の $Z$ や次の呼び出しで使い直す。よって空間は $O(s(n)\cdot m)=O(s(n)^2)$ である。
    段 4(判定の手続き)。空間構成可能性により $s(n)$ を空間 $O(s(n))$ で求め、$S$ と $m$ を定める。受理状態をもつ様相 $C_{\mathrm{acc}}$(使ったマスが $S$ 以下のもの)を順にすべて試し、初期様相 $C_0$ について $\mathrm{REACH}(C_0,C_{\mathrm{acc}},m)$ が真になるものがあれば受理し、なければ拒否する。$M$ が $w$ を受理する道があれば、同じ様相を 2 度通る部分を取り除くと、長さが頂点の数 $2^m$ 未満の道になるので、この手続きは受理する。逆に受理すれば、$C_0$ から受理状態の様相に至る道があり、それは $M$ の受理する道である。手続きは決定性で、どの入力でも停止し、空間 $O(s(n)^2)$ で動く。$\square$
Savitch の定理の帰結
  1. $\mathrm{PSPACE}=\mathrm{NPSPACE}$ である。
  2. $\mathrm{NL}\subset\mathrm{DSPACE}\bigl((\log n)^2\bigr)$、$\mathrm{NSPACE}(n)\subset\mathrm{DSPACE}(n^2)$ である。

1:$\mathrm{NSPACE}(n^c)\subset\mathrm{DSPACE}(n^{2c})\subset\mathrm{PSPACE}$ と、thm-cc-inclusions の $\mathrm{PSPACE}\subset\mathrm{NPSPACE}$ による。2:thm-cc-savitch を $s(n)=\log n$、$s(n)=n$ に使う。$\square$

時間についての類似、すなわち $\mathrm{NP}$ が決定性の多項式時間に収まるかが P対NP問題 であり、これは未解決である。

線形の空間と線形有界オートマトン

線形有界オートマトン は、入力の書かれたマスだけを使う非決定性の機械であり、その受理する言語は 文脈依存言語 である(線形有界オートマトン の定理「文脈依存言語との同値性」)。

文脈依存言語は線形の空間で判定できる

文脈依存言語は $\mathrm{NSPACE}(n)$ に属し、したがって $\mathrm{DSPACE}(n^2)$ に属する。

要点:線形有界オートマトンの様相は $2^{O(n)}$ 個なので、段数を 2 進法で数えて打ち切れば、すべての道が停止する機械になる。

詳しい証明を開く

文脈依存言語 $L$ を受理する線形有界オートマトン $A$ をとる(状態の集合 $Q_A$、テープの文字 $\Gamma_A$)。入力の長さ $n$ での $A$ の様相は $K:=\lvert Q_A\rvert\,(n+2)\,\lvert\Gamma_A\rvert^{n+2}$ 個以下である。作業テープ 2 本の非決定性の機械 $M$ を次で作る。入力を第 1 の作業テープに写し、そこで $A$ の遷移を非決定的に模倣する。第 2 の作業テープには 2 進法の段数のカウンタを置き、1 段ごとに $1$ を足す。$A$ が受理状態に入れば受理し、$A$ に適用できる遷移がなくなるか、カウンタが $K$ に達すれば拒否する。$K$ は 2 進法で $O(n)$ 桁なので、$M$ は空間 $O(n)$ で動き、どの道も $O(K\,n)$ 段以内に停止する。$A$ に受理する道があれば、同じ様相を 2 度通る部分を除いて $K$ 段未満の受理する道にでき、$M$ はそれをたどって受理する。逆に $M$ が受理すれば $A$ は受理する。よって $L\in\mathrm{NSPACE}(n)$ であり、cor-cc-savitch により $L\in\mathrm{DSPACE}(n^2)$ である。$\square$

決定性の線形有界オートマトンと非決定性のものの受理する言語のクラスが一致するかという LBA 問題 は未解決である(線形有界オートマトン の節「決定性と LBA 問題」)。

時間階層定理

時間を増やせば判定できる言語が真に増えることを、対角線論法 で示す。$\{0,1\}$ 上の言語を考え、入力の文字が $\{0,1\}$ の決定性の機械を $\{0,1\}$ の語で表す方法を 1 つ固定する。ただし、どの機械も無限に多くの語で表されるようにする(状態・文字・遷移を番号で書き並べた語の末尾に、無視する $1$ をいくつでも付けられるようにすればよい。具体的な形は lem-cc-universal の証明で定める)。語 $\alpha$ が機械を表すとき、その機械を $M_\alpha$ と書く。語の組 $(\alpha,x)$ は、$\alpha$ の各文字を 2 回ずつ書いた語の後に $01$ と $x$ を続けた語で表し、1 つの入力として扱う。

万能機械による模倣

決定性の機械 $U$ があって、機械を表すすべての語 $\alpha$ とすべての語 $x$ について次が成り立つ。$M_\alpha$ が入力 $x$ で $T$ 段以内に $q_{\mathrm{acc}}$ か $q_{\mathrm{rej}}$ に達するなら、入力 $(\alpha,x)$ の $U$ は $C_\alpha(T+\lvert\alpha\rvert+\lvert x\rvert)^2$ 段以内に、$M_\alpha$ と同じ答え(受理か拒否か)で停止する。ここで $C_\alpha$ は機械 $M_\alpha$ だけで決まり、$\alpha$ の長さと $x$ によらない。

$\lvert\alpha\rvert+\lvert x\rvert$ の項は、$U$ が入力を読むのに要る段数を含めるためにある。同じ機械を表す語はいくらでも長くできるので、たとえば 1 段で停止する $M_\alpha$ でも、$U$ の段数を $\alpha$ の長さによらない定数で押さえることはできない。

全部のテープを 1 本に並べ、1 段ごとに往復する

要点:$M_\alpha$ のすべてのテープの内容を $U$ の 1 本の作業テープにマスごとの組として並べ、$M_\alpha$ の 1 段を、そのテープの定数回の往復で模倣する。往復 1 回の段数は、使っている長さ $O(T+\lvert x\rvert)$ に比例する。

詳しい証明を開く

表し方。作業テープ $k$ 本の決定性の機械 $M$ について、状態を $0,\dots,a-1$($0$ を開始状態、$1$ を受理状態、$2$ を拒否状態)、作業テープの文字を $0,\dots,b-1$($0$ を空白)、入力テープの記号 $0$・$1$・左端の記号・右端の記号を $0,1,2,3$、ヘッドの動き(左・右・停止)を $0,1,2$ と番号づける。番号 $i$ を $1^{i+1}$ と書く。遷移 1 つは、状態・入力テープの記号・$k$ 個の作業テープの記号と、次の状態・$k$ 個の書く記号・$k+1$ 個の動きの、合わせて $3k+4$ 個の番号を $0$ で区切って並べた語で表す。$M$ を表す語とは、$1^k0\,1^a0\,1^b$ の後に、遷移を 1 つずつ前に $00$ を付けて並べ(並べる順は任意)、続けて $000$ を置き、最後に $1$ を $0$ 個以上付けた語のことである。$000$ はこの位置に初めて現れるので、語から $M$ の部分が読み取れ、付け足す $1$ の個数を変えれば $M$ は無限に多くの語で表される。

$U$ のテープ。$U$ は入力テープのほかに作業テープを 4 本もつ。表のテープには $M$ の部分を写す。模倣のテープには、$M$ の入力テープと $k$ 本の作業テープのマス $j$ の内容をまとめた「ブロック $j$」を $j=0,1,2,\dots$ の順に並べる。ブロックは $k+1$ 個の欄からなり、各欄には記号の番号を一定の幅($b+4$)で書き、そのテープのヘッドがマス $j$ にあるかどうかの印を付ける。ブロックの長さ $w$ は $k$ と $b$ だけで決まる。状態のテープには $M$ の現在の状態と、ヘッドの下の $k+1$ 個の記号を書く。残りの 1 本は数える作業に使う。

初期化。入力を 2 文字ずつ読んで $\alpha$ の $M$ の部分を表のテープに写し、付け足しの $1$ と区切りの $01$ を読み飛ばす。$x$(長さ $n$)から、入力の欄に左端の記号・$x$ の文字・右端の記号を、作業テープの欄に空白を書いた $n+2$ 個のブロックを作り、すべての印をブロック $0$ に付け、状態のテープに開始状態を書く。欄の幅は表のテープの $1^b$ を物差しにして測る。段数は $O(\lvert\alpha\rvert+w(n+2))$ である。

1 段の模倣。状態のテープの状態が受理状態か拒否状態なら、$U$ も受理か拒否で停止する。そうでなければ次を行う。(i) 模倣のテープを左端から右端まで読み、印の付いた欄の記号を状態のテープに写して、左端へ戻る。(ii) 表のテープの遷移を順に状態のテープと照らし、左辺の一致する遷移を探す($M$ は決定性なので高々 1 つ。なければ拒否で停止する)。(iii) 見つけた遷移に従って状態を書き換え、$M$ のテープ 1 本ごとに模倣のテープを 1 往復して、そのテープの印の付いた欄の記号を書き換え、印を遷移の定める隣のブロックへ動かす(1 往復で動かす印は 1 つなので、動かした印をもう一度動かすことはない)。印が右端のブロックの外へ出るときは、空白のブロックを 1 つ足す。入力の印はブロック $0,\dots,n+1$ の外に出さず、作業テープの印はブロック $0$ より左に出さない(def-cc-machine の約束)。これで模倣のテープは $M$ の次の様相を表す。

段数。$M$ が $t$ 段動いた時点で作業テープのヘッドはマス $t$ までしか達していないので、ブロックは $\max(n+2,t+1)\le T+n+2$ 個以下である。(i) と (iii) は模倣のテープを $k+2$ 往復し、(ii) の段数は表のテープと状態のテープの長さだけで決まる。表のテープの長さは $\alpha$ の $M$ の部分の長さで、付け足しの $1$ によらず、同じ $M$ を表す $M$ の部分は番号づけと遷移の並べ順を替えた有限通りしかないので、$M$ だけで決まる数で押さえられる。よって $M$ だけで決まる定数 $C'$ があって、1 段の模倣は $C'(T+n+2)$ 段以下、初期化は $C'(\lvert\alpha\rvert+n+2)$ 段以下である。$S:=T+\lvert\alpha\rvert+n$ とおくと、開始状態は受理状態とも拒否状態とも異なるので $T\ge1$、したがって $S\ge1$ であり、最後の判定の段も含めて $U$ の段数は $C'(S+2)+T\,C'(S+2)+C'\le3C'S+3C'S^2+C'S^2\le7C'S^2$ 以下である。$C_\alpha:=7C'$ とすればよい。$\square$

時間階層定理

$f,g\colon\mathbb{N}\to\mathbb{N}$ が $f(n)\ge n$、$g(n)\ge n$ を満たし、$g$ は時間構成可能で、$f(n)^2/g(n)\to0$($n\to\infty$)とする。このとき $\mathrm{DTIME}(f)\subsetneq\mathrm{DTIME}(g)$ である。

時間を区切って答えを反転する

段 1(包含)。$f\le f^2$ で $f^2/g\to0$ なので、十分大きな $n$ で $f(n)\le g(n)$ であり、$\mathrm{DTIME}(f)\subset\mathrm{DTIME}(g)$ である。
段 2(反転する機械)。決定性の機械 $D$ を次で定める。入力 $x$(長さ $n$)に対し、

  1. $1^{g(n)}$ を時計のテープに書き、そのヘッドを右端に置く(時間構成可能性により時間 $O(g(n))$)。
  2. 組 $(x,x)$ を表す語を作業テープに書き(時間 $O(n)$)、それを入力テープとみなして $U$ を実行し、$U$ の 1 段ごとに時計のヘッドを 1 つ左へ動かす(2 つは同じ段で行える)。
  3. 時計が尽きる前に $U$ が停止して答え $b$ を返したら、$b$ と逆の答え(受理なら拒否、拒否なら受理)を返す。時計が尽きたら拒否する。
    $D$ はどの入力でも時間 $O(n+g(n))=O(g(n))$ で停止するので、$D$ の判定する言語 $L_D$ は $\mathrm{DTIME}(g)$ に属する。
    段 3($L_D\notin\mathrm{DTIME}(f)$)。$L_D$ を時間 $c\,f(n)+c$ で判定する決定性の機械 $M$ があったとする。$n\ge1$ では $f(n)\ge1$ なので $c\,f(n)+c\le2c\,f(n)$ である。$M$ を表す語 $\alpha$ のどれについても $C_\alpha$ は同じ値 $C_M$ であり、$f^2/g\to0$ から、ある $n_0\ge1$ があって $n\ge n_0$ なら $C_M(2c\,f(n)+2n)^2< g(n)$ である($f(n)\ge n$ により左辺は $C_M(2c+2)^2f(n)^2$ 以下)。$M$ は無限に多くの語で表されるので、$M=M_\alpha$ かつ $\lvert\alpha\rvert\ge n_0$ となる $\alpha$ がとれる。入力 $x=\alpha$ では、$n:=\lvert\alpha\rvert$ として lem-cc-universal を $T=2c\,f(n)$、$\lvert\alpha\rvert+\lvert x\rvert=2n$ で使うと、$U$ は $(\alpha,\alpha)$ で $g(\lvert\alpha\rvert)$ 段より前に停止し、$M$ の入力 $\alpha$ での答えを返す。$D$ はその逆を返すので、$\alpha\in L_D$ と「$M$ が $\alpha$ を受理する」ことが食い違う。これは $M$ が $L_D$ を判定することに反する。$\square$
P と EXP は異なる

$\mathrm{P}\subsetneq\mathrm{EXP}$ である。

各 $c$ について、定数 $c'$ を十分大きくとればすべての $n$ で $c\,n^c+c\le c'\,2^n+c'$ となるので $\mathrm{P}\subset\mathrm{DTIME}(2^n)$ である。$f(n)=2^n$、$g(n)=2^{3n}$ は thm-cc-time-hierarchy の条件を満たす($f^2/g=2^{-n}$)ので、$\mathrm{DTIME}(2^{3n})$ に属し $\mathrm{DTIME}(2^n)$ に属さない言語がある。それは $\mathrm{EXP}$ に属し $\mathrm{P}$ に属さない。$\square$

P対NP問題 の系「P $\ne$ NP または NP $\ne$ EXP」が前提にする $\mathrm{P}\ne\mathrm{EXP}$ は、この系である。

分かっていること・分かっていないこと

$\mathrm{P}=\mathrm{NP}$ かどうかは未解決である(P対NP問題)。一方、$\mathrm{P}\ne\mathrm{EXP}$(cor-cc-p-exp)から、$\mathrm{P}\subset\mathrm{NP}\subset\mathrm{PSPACE}\subset\mathrm{EXP}$ の 3 つの包含の少なくとも 1 つは真の包含である。そのうち最初の包含が真の包含かどうかが、P対NP問題そのものである。

反例:条件を外すと成り立たない

外す条件反例成り立たなくなること
lem-cc-configurations の $s(n)\ge\log n$作業テープを使わず入力を左右に往復する機械様相の個数が $n+2$ 以上あり、$2^{d\,s(n)}$($s$ は定数)で押さえられない
時間階層定理の $f^2/g\to0$$f(n)=n$、$g(n)=2n$定数倍は定義に含まれるので $\mathrm{DTIME}(n)=\mathrm{DTIME}(2n)$
証明の機械 $D$ の時計時計なしで $U$ を最後まで実行する $D$停止しない $M_x$ では $D$ も停止せず、言語を判定する機械にならない
反例の確かめ
  1. 入力ヘッドを右端まで動かしてから左端に戻る機械は、作業テープのヘッドを動かさない(使ったマスの数は作業テープの本数 $k$ のまま)が、入力ヘッドの位置が $0,\dots,n+1$ の $n+2$ 通りの様相を通る。$s$ が定数なら $2^{d\,s}$ は $n$ によらない定数なので、$n$ が大きいと個数を押さえられない。
  2. 時間 $c\cdot2n+c$ は時間 $(2c)n+2c$ と同じ形なので、$\mathrm{DTIME}(2n)\subset\mathrm{DTIME}(n)$ であり、逆も成り立つ。$f^2/g=n/2\to\infty$ である。
  3. 機械の表し方はすべての機械にわたるので、停止しない機械 $M_\alpha$(たとえばどの入力でも右へ動き続ける機械)の語 $\alpha$ もある。時計なしの $D$ は入力 $\alpha$ で停止しないので、どの入力でも停止するという判定の条件を満たさない。

補足

  • 計算のモデルによらないこと.クラス P・NP・PSPACE・EXP は、1 本のテープの機械、多テープの機械、通常のプログラムのどれで定義しても同じになる。モデルを替えたときの時間の増え方が多項式の範囲に収まるからである(MSm24 Theorem 6.1.2・6.2.2)。
  • 還元と完全性.クラスの中で最も難しい問題を、還元によって定める。NP については NP完全 で扱う。

関連項目

参考文献

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する