計算量理論(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}$ が成り立つかどうかは未解決である。
計算量理論(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階層・線形有界オートマトン・文脈依存言語 | 文法と機械の階層、線形の空間で受理される言語 |
| 多倍長演算・計算整数論 | 整数の演算の手間(個々の問題の時間の評価) |
入力に使う空間を数えずに済むように、入力を読むだけのテープと、作業用のテープを分ける。
$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$ より左に出ない)を定める。
ある定数 $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$
手続きは通常のプログラムの形で書く。その実行時間が $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)}$ の決定性の機械で置き換えられることを述べている。
非決定性の機械は、たくさんの道のどれか 1 つが受理すればよい。決定性の機械で模倣するには道をすべて試す必要があり、時間についてはそれで指数的に増える(thm-cc-inclusions の証明)。空間については、2 乗で済む。
$s$ が空間構成可能で $s(n)\ge\log n$ なら、
$$
\mathrm{NSPACE}(s)\subset\mathrm{DSPACE}(s^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)$ を次で定める。
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$ の長さによらない定数で押さえることはできない。
要点:$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$)に対し、
$\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$ も停止せず、言語を判定する機械にならない |
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する