§E18.10時間計算量と空間計算量

最終更新

決定可能性の概念で区別するのは、計算が有限時間で終わるかどうかだけである。計算量理論では、入力の符号長を変数として、停止までの遷移数と計算中に必要な記憶領域を測る。本記事では、資源を測る機械モデルを定めたうえで、最悪時間と最悪空間、漸近的な上界、資源上界を機械自身が用意するための構成可能性を定義する。続いて、対数空間のクラスL\mathsf Lと多項式空間のクラスPSPACE\mathsf{PSPACE}を定め、空間を制限した計算の配置の個数を数えることによって、時間と空間の基本的な包含関係を証明する。さらに、作業テープを有限本から一本へ変更しても、多項式時間という分類が変わらないことを、模倣のオーバーヘッドを明示して証明する。

1 資源を測る機械モデル

空間を入力長と分けて測るためには、入力を置くテープと計算のために書き換えるテープを分けておかなければならない。そこで、§E18.4 定義 1.1の有限制御とテープ遷移をそのまま用いながら、テープの構成と資源の測り方を次のように定める。

定義 1.1. 資源計算量の決定性 Turing 機械 (deterministic Turing machine for resource complexity) は、読取り専用の入力テープを一つと、それとは別に有限本の読書き可能な一方向無限作業テープをもつ。状態集合、入力アルファベット、作業テープアルファベット、初期状態、受理状態、拒否状態は§E18.4 定義 1.1と同じ形で与える。遷移は、現在の状態、入力テープの走査記号、および各作業テープの走査記号から、次の状態、各作業テープへの書込み記号、入力ヘッドの移動命令、および各作業ヘッドの移動命令を定める。移動命令はLL、RR、SSであり、左端で左へ動く命令はヘッドを左端にとどめる。入力テープへは書き込まない。

長さnnの入力xxは、入力テープの位置00から位置n−1n-1までへ一文字ずつ置く。n=0n=0のときは入力記号を置かない。位置nn以降のマスは空白記号である。入力ヘッドは位置00から位置nnまでを動き、位置nnで右へ動く命令はヘッドを位置nnにとどめる。

この機械の配置 (configuration) は、現在の状態、入力ヘッドの位置、各作業テープの内容、および各作業ヘッドの位置の組である。入力ヘッドの位置は、作業テープの内容や作業ヘッドの位置と同じく配置の一部であり、遷移ごとに更新する。

有限アルファベットΣ\Sigma上の入力x∈Σ∗x\in\Sigma^*の入力長 (input length) を∣x∣|x|とする。全入力で停止する資源計算量の決定性 Turing 機械MMに対し、入力xx上で停止するまでの遷移数をτM(x)\tau_M(x)とし、計算中に一度でも訪れた作業テープのマスの総数をσM(x)\sigma_M(x)とする。作業テープが複数ある場合には、各テープで訪れたマス数の和をとる。作業空間は作業テープだけで測るものとし、入力テープのマスも入力ヘッドの位置も作業空間に数えない。

入力長nnにおけるMMの最悪時間計算量 (worst-case time complexity) と最悪空間計算量 (worst-case space complexity) を

TM(n)=max⁡x∈Σ∗, ∣x∣=nτM(x),SM(n)=max⁡x∈Σ∗, ∣x∣=nσM(x)T_M(n)=\max_{x\in\Sigma^*,\,|x|=n}\tau_M(x), \qquad S_M(n)=\max_{x\in\Sigma^*,\,|x|=n}\sigma_M(x)

と定める。Σ\Sigmaは有限であるため、長さnnの入力は有限個である。したがって右辺の最大値は存在する。

入力ヘッドの位置を配置に含めるのは、入力ヘッドの位置を有限制御で代用することができないからである。有限制御は入力長に依存しない有限集合であるのに対し、入力ヘッドの位置は長さnnの入力に対して00からnnまでを動く。上の定義で置く二つの規約、すなわち入力ヘッドの位置を配置に数えることと、作業空間には数えないことは、以下で配置の個数を評価する箇所と、対数空間のクラスを定める箇所の双方で用いる。

時間と空間は同じ量ではない。作業テープの同じマスを繰り返し使用すれば、長い時間をかけても空間は増えない。一方、一遷移では各作業テープのヘッドが高々一マスしか動かないため、固定本数の作業テープについて

SM(n)≤c(TM(n)+1)S_M(n)\le c\bigl(T_M(n)+1\bigr)

となる定数ccが存在する。

定義 1.2 (漸近的上界). 関数f,g ⁣:N→[0,∞)f,g\colon\mathbb N\to[0,\infty)に対し、定数C>0C>0とn0∈Nn_0\in\mathbb Nが存在し、すべてのn≥n0n\ge n_0について

f(n)≤Cg(n)f(n)\le Cg(n)

となるとき、ggをffの 漸近的上界 (asymptotic upper bound) といい、f(n)=O(g(n))f(n)=O(g(n))と書く。

有限個の小さい入力における計算量の値を変えても、OO記法によるクラスは変わらない。ただし、TMT_MとSMS_Mの定義に用いた最悪値を、平均値や特定の入力における値へ置き換えることはできない。

定義 1.3 (決定性時間・空間クラス). 関数t,s ⁣:N→Nt,s\colon\mathbb N\to\mathbb Nに対して

DTIME(t)={L:L の決定器 M が存在して TM(n)=O(t(n))},DSPACE(s)={L:L の決定器 M が存在して SM(n)=O(s(n))}\begin{aligned} \mathsf{DTIME}(t) &=\{L:\text{$L$ の決定器 $M$ が存在して }T_M(n)=O(t(n))\},\\ \mathsf{DSPACE}(s) &=\{L:\text{$L$ の決定器 $M$ が存在して }S_M(n)=O(s(n))\} \end{aligned}

と定める。DTIME(t)\mathsf{DTIME}(t)を 決定性時間クラス (deterministic time class)、DSPACE(s)\mathsf{DSPACE}(s)を 決定性空間クラス (deterministic space class) という。

記号TIME\mathsf{TIME}とSPACE\mathsf{SPACE}を決定性クラスに用いる文献もある。本記事では決定性を明示するため、DTIME\mathsf{DTIME}とDSPACE\mathsf{DSPACE}を用いる。

定義 1.4. 有限アルファベット上の言語のクラス

P=⋃k≥1DTIME(nk)\mathsf P=\bigcup_{k\ge 1}\mathsf{DTIME}(n^k)

を P (P) という。すなわち、有限アルファベットΣ\Sigma上の言語L⊆Σ∗L\subseteq\Sigma^*がP\mathsf Pに属することと、ある正の整数kkとLLの決定器DDが存在して、長さnnの入力におけるDDの最悪時間がO(nk)O(n^k)であることは同値である。次数kkは言語ごとに選ぶ。

2 構成可能な資源上界

階層定理や打切り計算では、上界を数式として書くだけでは足りない。機械が入力長から上界を生成し、生成した上界を時計または空間境界として使用することが必要になる。

定義 2.1. すべてのnnについてt(n)≥1t(n)\ge1を満たす関数t ⁣:N→Nt\colon\mathbb N\to\mathbb Nが時間構成可能 (time-constructible) であるとは、入力1n1^nからt(n)t(n)の二進表記をO(t(n))O(t(n))時間で出力する決定性多テープ Turing 機械が存在することをいう。

すべてのnnについてs(n)≥1s(n)\ge1を満たす関数s ⁣:N→Ns\colon\mathbb N\to\mathbb Nが空間構成可能 (space-constructible) であるとは、入力1n1^n上でちょうどs(n)s(n)個の作業テープマスを訪れて停止する決定性 Turing 機械が存在することをいう。

時間構成可能性を、入力1n1^n上で所定の段数を数える時計の存在によって定義する文献もある。二つの定式化の違いの細部は、Turing 機械の段数の規約に依存するため、本記事では上界の二進表記をその上界以内の時間で生成する定式化を採用する。後続の定理で構成可能性を仮定するときには、採用した定式化を明記しなければならない。

命題 2.2. 各整数k≥1k\ge 1について、関数max⁡{1,nk}\max\{1,n^k\}は時間構成可能かつ空間構成可能である。また、⌈log⁡2(n+2)⌉\lceil\log_2(n+2)\rceilは空間構成可能である。

証明. 入力1n1^nを一度走査してnnの二進表記を得る。この計数にはO(n)O(n)時間とO(log⁡(n+2))O(\log(n+2))空間を要する。kkは固定されているため、二進整数の筆算による乗算をk−1k-1回行えばnkn^kの二進表記を得る。各中間値のビット長はO(log⁡(n+2))O(\log(n+2))であり、筆算時間はO((log⁡(n+2))2)O((\log(n+2))^2)の固定定数倍である。したがって全時間は

O(n+(log⁡(n+2))2)=O(nk)O\bigl(n+(\log(n+2))^2\bigr)=O(n^k)

であり、max⁡{1,nk}\max\{1,n^k\}は時間構成可能である。n=0n=0の場合には有限制御から11を出力する。

空間構成可能性を示す。作業テープを一本だけ用い、初期ヘッド位置を位置00とする。固定したkkに対し、二進整数nn、nkn^k、およびnk−nn^k-nの計算と反復管理に必要なマス数はck⌈log⁡2(n+2)⌉c_k\lceil\log_2(n+2)\rceil以下であるような定数ckc_kが存在する。したがって、ある整数Nk≥2N_k\ge2を選ぶと、すべてのn≥Nkn\ge N_kについて

ck⌈log⁡2(n+2)⌉<nc_k\lceil\log_2(n+2)\rceil<n

となる。kkは固定されているため、必要な固定個数の二進レジスタは、有限個のトラックをもつ一つのテープアルファベットによって実装することができる。

最初に、入力長がNkN_k未満であるかを有限制御で調べる。この判定中は作業ヘッドを初期位置00から動かさない。n<Nkn<N_kならば、有限制御は入力長nnを状態に保持しているので、状態列へ組み込んだmax⁡{1,nk}−1\max\{1,n^k\}-1回の右移動を実行して停止する。この分岐が訪れる作業マスは

{0,1,…,max⁡{1,nk}−1}\{0,1,\ldots,\max\{1,n^k\}-1\}

だけである。特にn=0n=0とn=1n=1では右へ動かず、初期位置00だけを訪れる。この処理は有限個の入力長ごとに有限個の状態を固定したものであり、追加の作業マスを使用しない。

n≥Nkn\ge N_kならば、入力ヘッドを左端へ戻し、入力を再走査する。最初の11には既に訪れている作業位置00を対応させ、二文字目以後の各11を読むたびに作業ヘッドを一マス右へ動かす。走査後に訪問済みの作業マスはちょうど

In={0,1,…,n−1}I_n=\{0,1,\ldots,n-1\}

であり、位置n−1n-1に右端印を置く。入力をもう一度走査してnnを二進レジスタへ記録し、固定回数の二進乗算と減算によってr=nk−nr=n^k-nを計算する。上のNkN_kの選び方により、これらのレジスタと演算用の印はすべてInI_nの内部に収まり、右端印の外側を訪れない。

r>0r>0の間、機械はInI_n内の二進レジスタでrrを一つ減らし、現在の右端印まで訪問済み領域を走査する。次に、右端印を一マス右の未訪問マスへ移し、左端のレジスタへ戻る。一回の反復で新しく訪れる作業マスは、右端印の移動先の一マスだけである。この反復をnk−nn^k-n回実行するので、停止時の訪問マス集合は

In∪{n,n+1,…,nk−1}={0,1,…,nk−1}I_n\cup\{n,n+1,\ldots,n^k-1\} =\{0,1,\ldots,n^k-1\}

であり、その個数は厳密にnkn^kである。初期計数、二進算術、残数管理、および右端までの往復は、いずれも現在の右端より外側を訪れない。以上により、すべてのnnでmax⁡{1,nk}\max\{1,n^k\}個の作業マスだけを訪れて停止する機械が得られる。

⌈log⁡2(n+2)⌉\lceil\log_2(n+2)\rceilについては、初期値11の二進カウンタへ入力の各11に対して一を加える。最終値はn+1n+1であり、その二進表記の桁数は

⌊log⁡2(n+1)⌋+1=⌈log⁡2(n+2)⌉\lfloor\log_2(n+1)\rfloor+1 =\lceil\log_2(n+2)\rceil

である。桁が増えるときだけ新しい一マスを訪れるようにすれば、ちょうど指定個数のマスを訪れて停止する。▨

構成可能性は、任意の式で与えた関数に自動的に成り立つ条件ではない。後続の階層定理では、構成可能性を、時計や境界標識を機械内に実装するための仮定として明示する必要がある。

3 空間計算量クラスと時間との関係

時間と空間は独立した資源ではない。一遷移で新しく訪れる作業マスは各テープにつき高々一つであるから、空間は時間で上から抑えられる。逆向きには、使用する空間を制限すると、配置の個数が有限個に収まる。そのため、決定性計算が停止するまでの段数も、配置の個数で抑えられる。この節では、対数空間と多項式空間のクラスを定め、二つの向きの関係を証明する。

定義 3.1. 有限アルファベット上の言語のクラス

L=DSPACE(⌈log⁡2(n+2)⌉),PSPACE=⋃k≥1DSPACE(nk)\mathsf L=\mathsf{DSPACE}\bigl(\lceil\log_2(n+2)\rceil\bigr), \qquad \mathsf{PSPACE}=\bigcup_{k\ge 1}\mathsf{DSPACE}(n^k)

をそれぞれ L (L)(対数空間)、PSPACE (PSPACE)(多項式空間)という。

対数空間の基準として⌈log⁡2(n+2)⌉\lceil\log_2(n+2)\rceilを用いるのは、この関数がすべての入力長で11以上の値をとり、かつ命題 2.2により空間構成可能だからである。L\mathsf Lの定義は読取り専用入力テープを空間に数えない規約に依存する。入力を作業テープへ置いて数える規約では、空間が少なくとも入力長になるため、対数の空間上界をもつ計算は存在しない。

補題 3.2.定義 1.1の機械モデルにおいて、状態集合QQ、作業テープの本数k≥1k\ge 1、および作業テープアルファベットΓ\Gammaを固定する。このとき、∣Q∣|Q|、kk、∣Γ∣|\Gamma|だけから定まる正の整数ccが存在して、次の二つが成り立つ。

  1. 長さnnの入力xxと、b≥⌈log⁡2(n+1)⌉b\ge\lceil\log_2(n+1)\rceilを満たす非負整数bbをとる。入力テープにxxが置かれ、かつ各作業テープの訪問済み領域がbbマス以下であるような配置の個数は、2c(b+1)2^{c(b+1)}以下である。
  2. この状態集合、テープ本数、およびテープアルファベットをもつ決定性 Turing 機械MMが、入力xx上の計算の全時点で各作業テープの訪問済み領域をbbマス以下に保ちながら2c(b+1)2^{c(b+1)}段以上の遷移を行い、その間に停止しないならば、MMはxx上で停止しない。

証明.主張 (1)を示す。配置は、現在の状態、入力ヘッドの位置、各作業テープの内容、および各作業テープのヘッド位置の組である。状態は∣Q∣|Q|通りである。入力ヘッドの位置は00からnnまでのn+1n+1通りである。訪問済み領域がbbマス以下である作業テープの内容は、位置00からb−1b-1までの記号列によって定まり(それ以外のマスは空白記号である)、∣Γ∣b|\Gamma|^b通り以下である。各作業テープのヘッド位置は00からbbまでのb+1b+1通り以下である。したがって配置の個数は

∣Q∣ (n+1)((b+1) ∣Γ∣b)k|Q|\,(n+1)\bigl((b+1)\,|\Gamma|^{b}\bigr)^{k}

以下である。この個数の二進対数は

log⁡2∣Q∣+log⁡2(n+1)+klog⁡2(b+1)+kblog⁡2∣Γ∣\log_2|Q|+\log_2(n+1)+k\log_2(b+1)+kb\log_2|\Gamma|

である。仮定b≥⌈log⁡2(n+1)⌉b\ge\lceil\log_2(n+1)\rceilからlog⁡2(n+1)≤b\log_2(n+1)\le bであり、b+1≤2b+1b+1\le 2^{b+1}からlog⁡2(b+1)≤b+1\log_2(b+1)\le b+1である。よって上の値は

log⁡2∣Q∣+b+k(b+1)+kblog⁡2∣Γ∣≤(log⁡2∣Q∣+1+k+klog⁡2∣Γ∣)(b+1)\log_2|Q|+b+k(b+1)+kb\log_2|\Gamma| \le\bigl(\log_2|Q|+1+k+k\log_2|\Gamma|\bigr)(b+1)

以下である。そこで

c=⌈log⁡2∣Q∣+1+k+klog⁡2∣Γ∣⌉c=\bigl\lceil\log_2|Q|+1+k+k\log_2|\Gamma|\bigr\rceil

と置く。log⁡2∣Q∣≥0\log_2|Q|\ge 0とk≥1k\ge 1からc≥2c\ge 2であり、ccは正の整数である。天井関数は値を減らさないので、配置の個数は2c(b+1)2^{c(b+1)}以下である。このccは∣Q∣|Q|、kk、∣Γ∣|\Gamma|だけから定まり、nnにもbbにも依存しない。またbbは非負整数であるから、c(b+1)c(b+1)は正の整数である。

主張 (2)を示す。仮定の下で、時刻0,1,…,2c(b+1)0,1,\ldots,2^{c(b+1)}における配置を考える。これらは2c(b+1)+12^{c(b+1)}+1個あり、いずれも主張 (1)の条件を満たす配置である。主張 (1)により相異なる配置は2c(b+1)2^{c(b+1)}個以下であるから、鳩の巣原理により、二つの相異なる時刻t1<t2t_1<t_2で同じ配置が現れる。MMは決定性機械であるから、同一の配置から始まる以後の計算は一致する。したがって、時刻t1t_1以後の配置列は周期t2−t1t_2-t_1で反復し、時刻t1t_1からt2−1t_2-1までに現れた配置以外の配置は現れない。仮定によりこれらの配置は停止状態を含まないので、MMはxx上で停止しない。▨

命題 3.3. すべてのnnについてt(n)≥1t(n)\ge 1を満たす関数t ⁣:N→Nt\colon\mathbb N\to\mathbb Nに対し、

DTIME(t)⊆DSPACE(t)\mathsf{DTIME}(t)\subseteq\mathsf{DSPACE}(t)

である。

証明.L∈DTIME(t)L\in\mathsf{DTIME}(t)とし、TM(n)=O(t(n))T_M(n)=O(t(n))を満たすLLの決定器MMをとる。MMの作業テープの本数をkkとする。一遷移で各作業テープのヘッドは高々一マスしか動かないので、初期位置を含めて、入力xx上で訪れる作業マスの総数は

σM(x)≤k(τM(x)+1)\sigma_M(x)\le k\bigl(\tau_M(x)+1\bigr)

を満たす。長さnnの入力全体で最大値をとればSM(n)≤k(TM(n)+1)S_M(n)\le k(T_M(n)+1)である。TM(n)=O(t(n))T_M(n)=O(t(n))から、定数C>0C>0とn0n_0が存在してn≥n0n\ge n_0でTM(n)≤Ct(n)T_M(n)\le Ct(n)であり、t(n)≥1t(n)\ge 1とあわせて

SM(n)≤k(Ct(n)+1)≤k(C+1) t(n)(n≥n0)S_M(n)\le k\bigl(Ct(n)+1\bigr)\le k(C+1)\,t(n) \qquad(n\ge n_0)

を得る。したがってSM(n)=O(t(n))S_M(n)=O(t(n))である。MMはLLの決定器であるからL∈DSPACE(t)L\in\mathsf{DSPACE}(t)である。▨

命題 3.4. 関数s ⁣:N→Ns\colon\mathbb N\to\mathbb Nがすべてのnnについて

s(n)≥max⁡{1,⌈log⁡2(n+1)⌉}s(n)\ge\max\bigl\{1,\lceil\log_2(n+1)\rceil\bigr\}

を満たすとする。L∈DSPACE(s)L\in\mathsf{DSPACE}(s)ならば、正の整数γ\gammaが存在して

L∈DTIME(2γ(s(n)+1))L\in\mathsf{DTIME}\bigl(2^{\gamma(s(n)+1)}\bigr)

である。

証明.SM(n)=O(s(n))S_M(n)=O(s(n))を満たすLLの決定器MMをとる。定数C>0C>0とn0n_0が存在して、n≥n0n\ge n_0でSM(n)≤Cs(n)S_M(n)\le Cs(n)である。n<n0n<n_0を満たすnnは有限個であり、そのような各nnについてSM(n)S_M(n)は有限の値である。s(n)≥1s(n)\ge 1であるから、

C′=max⁡({C,1}∪{SM(n):n<n0})C'=\max\Bigl(\{C,1\}\cup\{S_M(n):n<n_0\}\Bigr)

と置けば、すべてのnnについてSM(n)≤C′s(n)S_M(n)\le C's(n)である。C′C'は正の整数としてよい。

入力xxの長さをnnとし、b=C′s(n)b=C's(n)と置く。MMがxx上で訪れる作業マスの総数はσM(x)≤SM(n)≤b\sigma_M(x)\le S_M(n)\le bであるから、各作業テープの訪問済み領域は計算の全時点でbbマス以下である。またb≥s(n)≥⌈log⁡2(n+1)⌉b\ge s(n)\ge\lceil\log_2(n+1)\rceilである。よって補題 3.2を適用することができる。同補題の定数をccとする。MMは決定器であるからxx上で停止する。補題 3.2 (2)の対偶により、MMがxx上で行う遷移数は2c(b+1)2^{c(b+1)}未満である。C′≥1C'\ge 1からb+1=C′s(n)+1≤C′(s(n)+1)b+1=C's(n)+1\le C'(s(n)+1)であり、

τM(x)<2c(b+1)≤2cC′(s(n)+1)\tau_M(x)<2^{c(b+1)}\le 2^{cC'(s(n)+1)}

である。右辺はnnだけで定まるので、長さnnの入力全体で最大値をとって

TM(n)≤2cC′(s(n)+1)T_M(n)\le 2^{cC'(s(n)+1)}

を得る。γ\gammaをcC′cC'以上の正の整数とすればTM(n)≤2γ(s(n)+1)T_M(n)\le 2^{\gamma(s(n)+1)}であり、とくにTM(n)=O(2γ(s(n)+1))T_M(n)=O(2^{\gamma(s(n)+1)})である。関数n↦2γ(s(n)+1)n\mapsto 2^{\gamma(s(n)+1)}はN\mathbb NからN\mathbb Nへの関数であるから、L∈DTIME(2γ(s(n)+1))L\in\mathsf{DTIME}(2^{\gamma(s(n)+1)})である。▨

系 3.5.

L⊆P⊆PSPACE\mathsf L\subseteq\mathsf P\subseteq\mathsf{PSPACE}

である。

証明.OO記法では有限個のnnにおける値を無視するので、n≥1n\ge 1で一致する二つの関数から同じクラスが定められる。とくに、各k≥1k\ge 1について

DTIME(nk)=DTIME(max⁡{1,nk}),DSPACE(nk)=DSPACE(max⁡{1,nk})\mathsf{DTIME}(n^k)=\mathsf{DTIME}(\max\{1,n^k\}), \qquad \mathsf{DSPACE}(n^k)=\mathsf{DSPACE}(\max\{1,n^k\})

である。

最初にL⊆P\mathsf L\subseteq\mathsf Pを示す。s(n)=⌈log⁡2(n+2)⌉s(n)=\lceil\log_2(n+2)\rceilと置く。n+2≥2n+2\ge 2からs(n)≥1s(n)\ge 1であり、n+2>n+1n+2>n+1からs(n)≥⌈log⁡2(n+1)⌉s(n)\ge\lceil\log_2(n+1)\rceilである。よって命題 3.4を適用することができ、L∈LL\in\mathsf Lに対して正の整数γ\gammaが存在してL∈DTIME(2γ(s(n)+1))L\in\mathsf{DTIME}(2^{\gamma(s(n)+1)})である。ここでs(n)<log⁡2(n+2)+1s(n)<\log_2(n+2)+1であるから

2γ(s(n)+1)<2γ(log⁡2(n+2)+2)=4γ(n+2)γ2^{\gamma(s(n)+1)}<2^{\gamma(\log_2(n+2)+2)}=4^{\gamma}(n+2)^{\gamma}

であり、n≥1n\ge 1ではn+2≤3nn+2\le 3nなので

2γ(s(n)+1)<4γ3γnγ(n≥1)2^{\gamma(s(n)+1)}<4^{\gamma}3^{\gamma}n^{\gamma} \qquad(n\ge 1)

である。したがってLLの決定器の最悪時間はO(nγ)O(n^{\gamma})であり、L∈DTIME(nγ)⊆PL\in\mathsf{DTIME}(n^{\gamma})\subseteq\mathsf Pである。

次にP⊆PSPACE\mathsf P\subseteq\mathsf{PSPACE}を示す。L∈PL\in\mathsf Pとすると、あるk≥1k\ge 1についてL∈DTIME(nk)=DTIME(max⁡{1,nk})L\in\mathsf{DTIME}(n^k)=\mathsf{DTIME}(\max\{1,n^k\})である。関数max⁡{1,nk}\max\{1,n^k\}はすべてのnnで11以上であるから、命題 3.3により

L∈DSPACE(max⁡{1,nk})=DSPACE(nk)⊆PSPACEL\in\mathsf{DSPACE}(\max\{1,n^k\})=\mathsf{DSPACE}(n^k)\subseteq\mathsf{PSPACE}

である。▨

この二つの包含が真であるかどうかは知られていない。L=P\mathsf L=\mathsf Pであるかどうかも、P=PSPACE\mathsf P=\mathsf{PSPACE}であるかどうかも未解決である。本記事ではどちらについても結論を主張しない。

4 単テープ模倣の資源上界

計算可能性だけを比較する場合には、模倣が有限時間で終わることを示せばよい。計算量を比較する場合には、元の機械の一段を模倣するために何段と何マスが必要かを数える。

定理 4.1. 固定したk≥1k\ge 1に対し、kk本の作業テープをもつ決定性 Turing 機械MMから、一本の作業テープをもつ決定性 Turing 機械UUを構成することができる。各入力xxについて、MMが時間τ\tau、作業空間σ\sigmaで停止するなら、UUは同じ受理または拒否を

O(τ(σ+1)+1)時間、O(σ+1)作業空間O\bigl(\tau(\sigma+1)+1\bigr) \quad\text{時間、}\quad O(\sigma+1)\quad\text{作業空間}

で返す。特に、σ=O(τ+1)\sigma=O(\tau+1)であるため、時間上界はO((τ+1)2)O((\tau+1)^2)である。

証明. 各作業テープの有限な使用部分を、区切り記号を用いて

#u1#u2#⋯#uk#\#u_1\#u_2\#\cdots\#u_k\#

と一本の作業テープ上に符号化する。各uiu_iでは、走査中の一文字だけに印を付ける。まだ訪れていない右側のマスは明示せず、ヘッドが右端を越えるときに空白記号を一つ挿入する。kkとテープアルファベットは機械ごとに固定された有限集合である。

元の配置で訪問済みの作業マスが合計σ′\sigma'個であるとき、符号の長さはσ′+O(k)\sigma'+O(k)である。UUは符号を左から右へ走査し、kk個の印付き記号を有限制御に記録する。入力テープの走査記号とこれらの記号から、MMの次の状態、各書込み記号、および各ヘッドの移動方向を決定する。次の往復走査で書込みと印の移動を行う。右端への空白挿入が必要な場合には、右側の有限符号を一マスずつ移す。この移動も符号長に比例する時間で終わる。

したがって、MMの一段を模倣する時間はO(σ′+1)≤O(σ+1)O(\sigma'+1)\le O(\sigma+1)であり、τ\tau段全体はO(τ(σ+1)+1)O(\tau(\sigma+1)+1)時間で終わる。初期符号は各作業テープの左端空白を表す定数長の語であり、入力は別の読取り専用テープに残るので、初期化に入力全体の複写は要らない。

各模倣段の後の符号がMMの対応する配置を表すことは、模倣段数に関する帰納法で従う。したがって、UUはMMと同じ時点に対応する符号で同じ受理状態または拒否状態へ移る。符号が占めるマス数は、訪問済み作業マス数に区切りと印の定数倍を加えたO(σ+1)O(\sigma+1)である。

最後に、固定本数の各作業テープでは、一段につき高々一つの新しいマスを訪れる。したがってσ≤k(τ+1)\sigma\le k(\tau+1)であり、時間上界はO((τ+1)2)O((\tau+1)^2)となる。▨

逆向きには、一本の作業テープをもつ機械をkk本の作業テープをもつ機械としてそのまま実行し、残りのテープを使用しなければよい。時間と空間には定数以外の増加がない。

系 4.2. 作業テープの本数を任意の固定有限数から一本へ変更しても、P\mathsf Pは変わらない。また、s(n)≥1s(n)\ge 1を満たす各空間上界ssに対し、固定有限本の作業テープによるDSPACE(s)\mathsf{DSPACE}(s)と一本の作業テープによるDSPACE(s)\mathsf{DSPACE}(s)は、定数倍の空間差を除いて一致する。

証明.kk本の作業テープで時間O(nd)O(n^d)を要する決定器へ定理 4.1を適用すると、一本の作業テープによる時間は

O((nd+1)2)=O(n2d)O\bigl((n^d+1)^2\bigr)=O(n^{2d})

である。したがって、多テープで多項式時間なら単テープでも多項式時間である。逆向きの包含は、一本のテープを多テープ機械の第一作業テープとして使用する直接の模倣による。

空間について、同じ定理の符号はO(s(n)+1)O(s(n)+1)マスしか使用しない。OO記法では定数倍が吸収されるため、単テープと多テープで同じDSPACE(s)\mathsf{DSPACE}(s)を得る。▨

この系で主張するのは、多項式時間というクラスの不変性である。任意の時間上界ttについて、同じ言語を単テープでO(t)O(t)時間に決定することや、機械の変更だけで計算時間を任意の定数分の一に短縮することは主張しない。特に、多テープから単テープへの上の構成から得られる一般の上界は二乗時間である。

5 多項式時間の合成

帰着や前処理では、出力の長さも入力長の関数として評価する必要がある。

命題 5.1.f ⁣:Σ∗→Γ∗f\colon\Sigma^*\to\Gamma^*が決定性 Turing 機械によって多項式時間で計算され、B∈PB\in\mathsf Pであるとする。このとき

A={x∈Σ∗:f(x)∈B}A=\{x\in\Sigma^*:f(x)\in B\}

もP\mathsf Pに属する。

証明.ffの計算時間をO(nc)O(n^c)とし、BBの決定器の時間を入力長mmに対してO(md)O(m^d)とする。出力を一文字書くには少なくとも一遷移を要するため、定数C>0C>0が存在して

∣f(x)∣≤C(∣x∣c+1)|f(x)|\le C(|x|^c+1)

である。

入力xxから最初にf(x)f(x)を計算し、その出力をBBの決定器の入力として実行する。多テープによるこの合成の時間は

O(nc)+O((nc+1)d)O(n^c)+O\bigl((n^c+1)^d\bigr)

であり、多項式である。必要なら系 4.2によって一本の作業テープへ変換しても、多項式時間性は保たれる。受理条件はx∈Ax\in Aとf(x)∈Bf(x)\in Bの同値によって正しい。▨

例 5.2. 正整数NNを二進表記で入力し、O(N2)O(N^2)段を要するアルゴリズムを考える。入力長を

n=⌊log⁡2N⌋+1n=\lfloor\log_2N\rfloor+1

とすると、2n−1≤N<2n2^{n-1}\le N<2^nである。したがってN2N^2は入力長に対して2Θ(n)2^{\Theta(n)}であり、nnの多項式ではない。O(N2)O(N^2)という評価は数値NNに関しては多項式であるが、二進符号長に関しては指数的である。

6 演習

問題 6.1.

  1. 一つの決定器について、特定の入力xx上の時間τM(x)\tau_M(x)が小さくても、TM(∣x∣)T_M(|x|)が大きくなり得る例を説明せよ。
  2. O(n3)O(n^3)時間の関数ffと、入力長mmに対してO(m2)O(m^2)時間の決定器を合成したとき、合成時間の多項式上界を求めよ。出力長の上界も示せ。
  3. Σ={a,b}\Sigma=\{a,b\}上の回文の全体PAL={x∈Σ∗:x=xR}\mathsf{PAL}=\{x\in\Sigma^*:x=x^{\mathrm R}\}を、一本の作業テープをもつ決定器でO(n+1)O(n+1)時間に決定する方法を与えよ。ここでxRx^{\mathrm R}はxxを逆順に並べた語である。また、その決定器の作業空間を評価せよ。
  4. MMを二本の作業テープをもつ決定器とし、TM(n)=O(n2)T_M(n)=O(n^2)、SM(n)=O(⌈log⁡2(n+2)⌉)S_M(n)=O(\lceil\log_2(n+2)\rceil)とする。定理 4.1により、MMと同じ言語を一本の作業テープでO(n2⌈log⁡2(n+2)⌉)O(n^2\lceil\log_2(n+2)\rceil)時間に決定することができることを示せ。また、この上界が同定理の後半の上界O((τ+1)2)O((\tau+1)^2)から得られるO(n4)O(n^4)より真に小さい増大度をもつことを確かめよ。
  5. 3 のPAL\mathsf{PAL}がL\mathsf Lに属することを示せ。
  6. 命題 3.3の結論DTIME(t)⊆DSPACE(t)\mathsf{DTIME}(t)\subseteq\mathsf{DSPACE}(t)が、仮定t(n)≥1t(n)\ge1を外した任意の関数t ⁣:N≥0→N≥0t\colon\N\to\Nについても成り立つことを示せ。
  7. 補題 3.2の二つの主張が、仮定b≥⌈log⁡2(n+1)⌉b\ge\lceil\log_2(n+1)\rceilを外すと成り立たないことを、b=1b=1とした例で示せ。
  8. EXP=⋃k≥1DTIME(2nk)\mathsf{EXP}=\bigcup_{k\ge1}\mathsf{DTIME}(2^{n^k})とする。PSPACE⊆EXP\mathsf{PSPACE}\subseteq\mathsf{EXP}を示せ。
解答 (演習の要点).
  1. TM(n)T_M(n)は長さnnの入力全体にわたる最大値である。たとえば、先頭記号がaaならば直ちに拒否し、そうでなければ入力をnn回走査してから停止する決定器では、x=anx=a^nにおける時間は定数であるが、先頭記号がaaでない長さnnの入力における時間はΘ(n2)\Theta(n^2)である。したがってτM(x)\tau_M(x)が小さくてもTM(n)T_M(n)は大きい。

  2. 出力を一文字書くには少なくとも一遷移を要するので、定数CCについて∣f(x)∣≤C(n3+1)|f(x)|\le C(n^3+1)である。合成時間はO(n3)+O((n3+1)2)=O(n6)O(n^3)+O((n^3+1)^2)=O(n^6)である。

  3. 作業テープの位置00に置く記号には印を付けて区別する。第一局面では、入力ヘッドを右へ動かしながら各入力記号を作業テープへ順に書き写し、作業ヘッドも右へ動かす。入力ヘッドが位置nnの空白に達したら第二局面へ移り、入力ヘッドを一マス左へ動かして位置n−1n-1に置き、作業ヘッドを印付きの位置00まで左へ戻す。第三局面では、入力ヘッドを左へ、作業ヘッドを右へ同時に一マスずつ動かしながら、両ヘッドの下の記号を比較する。作業ヘッドが空白に達するまでの各比較で一致すれば受理し、不一致があれば拒否する。n=0n=0ならば直ちに受理する。第三局面の第ii回目の比較では、作業ヘッドは位置iiのxix_iを、入力ヘッドは位置n−1−in-1-iのxn−1−ix_{n-1-i}を読むので、受理することと、すべてのi<ni<nについてxi=xn−1−ix_i=x_{n-1-i}、すなわちx∈PALx\in\mathsf{PAL}であることは同値である。各局面の遷移数はn+1n+1以下であるから、時間はO(n+1)O(n+1)である。作業ヘッドは位置00から位置nnまでしか動かないので、作業空間はn+1n+1以下である。入力テープが作業テープと別にあるので、入力ヘッドと作業ヘッドを逆向きに同時に動かして比較することができる。

  4. 同定理により、各入力で一本の作業テープの機械UUはO(τ(σ+1)+1)O(\tau(\sigma+1)+1)時間で同じ結論を返す。定数C1,C2C_1,C_2と十分大きいnnについてτ≤C1n2\tau\leq C_1n^2、σ≤C2⌈log⁡2(n+2)⌉\sigma\leq C_2\lceil\log_2(n+2)\rceilであるから、τ(σ+1)+1≤C1n2(C2⌈log⁡2(n+2)⌉+1)+1=O(n2⌈log⁡2(n+2)⌉)\tau(\sigma+1)+1\leq C_1n^2(C_2\lceil\log_2(n+2)\rceil+1)+1=O(n^2\lceil\log_2(n+2)\rceil)である。一方、後半の上界はO((C1n2+1)2)=O(n4)O((C_1n^2+1)^2)=O(n^4)である。n≥1n\geq1で⌈log⁡2(n+2)⌉≤n+1≤2n\lceil\log_2(n+2)\rceil\leq n+1\leq2nであり、n2⌈log⁡2(n+2)⌉/n4≤2/n→0n^2\lceil\log_2(n+2)\rceil/n^4\leq2/n\to0であるから、前者の増大度は真に小さい。作業空間が時間より小さい機械では、同定理の前半の評価のほうが精密である。

  5. 二進カウンタを作業テープに置いて次の決定器を作る。まず入力を一度走査して、入力長nnを二進カウンタNNに記録する。入力ヘッドの現在位置も二進カウンタHHに保持し、ヘッドを一マス動かすたびにHHを増減する。i=0,1,…i=0,1,\ldotsについて2i+1≤n2i+1\leq nである間、次を行う。H=iH=iとなるまで入力ヘッドを動かしてxix_iを有限制御に記憶し、j=n−1−ij=n-1-iを二進で計算してH=jH=jとなるまで入力ヘッドを動かし、xjx_jと比較する。不一致ならば拒否する。すべてのiiで一致すれば受理する。受理することは、すべてのiiについてxi=xn−1−ix_i=x_{n-1-i}であること、すなわちx∈PALx\in\mathsf{PAL}と同値である。

    使用する二進カウンタはN,H,i,jN,H,i,jと比較用の作業領域の固定個数であり、いずれの値もnn以下であるから、各カウンタは⌈log⁡2(n+2)⌉\lceil\log_2(n+2)\rceil桁以下で表すことができる。よって作業空間はO(⌈log⁡2(n+2)⌉)O(\lceil\log_2(n+2)\rceil)であり、各反復は有限回の移動で終わり、反復は⌈n/2⌉\lceil n/2\rceil回であるから、決定器は全入力で停止する。したがってPAL∈L\mathsf{PAL}\in\mathsf Lである。入力テープは読取り専用で空間に数えないので、入力を書き写さずに位置だけを二進で保持することが、作業空間を対数に抑える。

  6. 資源計算量の機械の初期状態は受理状態と拒否状態のいずれとも異なるので、どの入力xxでも停止までに少なくとも一遷移を行い、τM(x)≥1\tau_M(x)\geq1、したがってTM(n)≥1T_M(n)\geq1である。

    t(n)=0t(n)=0を満たすnnが無限個ある場合、L∈DTIME(t)L\in\mathsf{DTIME}(t)の決定器MMが存在すると仮定すると、あるC,n0C,n_0についてn≥n0n\geq n_0でTM(n)≤Ct(n)T_M(n)\leq Ct(n)であり、n≥n0n\geq n_0かつt(n)=0t(n)=0を満たすnnで1≤TM(n)≤01\leq T_M(n)\leq0となって矛盾する。よってDTIME(t)=∅\mathsf{DTIME}(t)=\varnothingであり、包含は成り立つ。t(n)=0t(n)=0を満たすnnが有限個である場合、あるn1n_1についてn≥n1n\geq n_1でt(n)≥1t(n)\geq1である。命題 3.3の証明と同じくSM(n)≤k(TM(n)+1)S_M(n)\leq k(T_M(n)+1)であり、n≥max⁡{n0,n1}n\geq\max\{n_0,n_1\}でSM(n)≤k(Ct(n)+1)≤k(C+1)t(n)S_M(n)\leq k(Ct(n)+1)\leq k(C+1)t(n)である。有限個のnnはOO記法で無視されるのでSM(n)=O(t(n))S_M(n)=O(t(n))であり、L∈DSPACE(t)L\in\mathsf{DSPACE}(t)である。

  7. 入力アルファベットを{a}\{a\}、作業テープアルファベットを{a,⊔}\{a,\sqcup\}とし、状態q0,qacc,qrejq_0,q_{\mathrm{acc}},q_{\mathrm{rej}}と作業テープ一本をもつ機械M0M_0を考える。M0M_0は状態q0q_0で入力記号aaを読むと作業テープの走査記号を書き直さずに作業ヘッドを動かさず、入力ヘッドを右へ動かしてq0q_0にとどまり、入力の空白を読むと受理する。補題 3.2が∣Q∣=3|Q|=3、k=1k=1、∣Γ∣=2|\Gamma|=2に対して存在を主張する正の整数をccとする。補題はccの値を指定しないので、任意の正の整数ccについて二つの主張がb=1b=1で成り立たないことを示す。b=1b=1では2c(b+1)=22c2^{c(b+1)}=2^{2c}である。

    長さnnの入力ana^nで、状態q0q_0、作業テープ全空白、作業ヘッド位置00とし、入力ヘッド位置を0,…,n0,\ldots,nと変えた配置は、作業テープの訪問済み領域が11マスであり、互いに異なるn+1n+1個の配置である。n≥22cn\geq2^{2c}ならばn+1>2c(b+1)n+1>2^{c(b+1)}となり、第一の主張が成り立たない。またM0M_0はana^n上で訪問済み領域を11マスに保ったままn+1n+1遷移で受理して停止する。n≥22cn\geq2^{2c}ならば、最初の22c2^{2c}遷移の間は入力ヘッドが入力記号の上にあるので停止せず、それでもM0M_0は停止するので、第二の主張も成り立たない。仮定b≥⌈log⁡2(n+1)⌉b\geq\lceil\log_2(n+1)\rceilはn<2bn<2^bを保証し、入力ヘッド位置の個数n+1n+1を2b2^{b}程度に抑えるために必要である。

  8. L∈PSPACEL\in\mathsf{PSPACE}とすると、あるk≥1k\geq1についてL∈DSPACE(nk)=DSPACE(s)L\in\mathsf{DSPACE}(n^k)=\mathsf{DSPACE}(s)である。ここでs(n)=max⁡{1,nk}s(n)=\max\{1,n^k\}であり、二つのクラスが等しいことは系 3.5の証明と同じくOO記法による。n≥1n\geq1ではs(n)=nk≥n≥⌈log⁡2(n+1)⌉s(n)=n^k\geq n\geq\lceil\log_2(n+1)\rceilであり、n=0n=0ではs(0)=1s(0)=1であるから、s(n)≥max⁡{1,⌈log⁡2(n+1)⌉}s(n)\geq\max\{1,\lceil\log_2(n+1)\rceil\}である。命題 3.4により、正の整数γ\gammaが存在してL∈DTIME(2γ(s(n)+1))L\in\mathsf{DTIME}(2^{\gamma(s(n)+1)})である。n≥max⁡{2,2γ}n\geq\max\{2,2\gamma\}ではγ(nk+1)≤2γnk≤nk+1\gamma(n^k+1)\leq2\gamma n^k\leq n^{k+1}であるから2γ(s(n)+1)≤2nk+12^{\gamma(s(n)+1)}\leq2^{n^{k+1}}であり、L∈DTIME(2nk+1)⊆EXPL\in\mathsf{DTIME}(2^{n^{k+1}})\subseteq\mathsf{EXP}である。

▨

参考文献

  1. Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, Cambridge, 2009.計算量クラス、機械モデル、および多項式時間の頑健性を参考にした。
  2. Christos H. Papadimitriou, Computational Complexity, Addison-Wesley, 1994.時間・空間計算量と構成可能な資源上界を参考にした。
  3. Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, Boston, 2013.最悪時間計算量と単テープ・多テープ機械の時間オーバーヘッドを参考にした。

前提記事