$$\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機械, 文脈依存言語, 句構造言語, 数学的帰納法
Turing機械は無制限に長いテープを使える。線形有界オートマトン(linear bounded automaton; LBA)は、テープのうち入力が書かれた範囲だけしか使えないように制限した非決定性の Turing 機械である。入力の両端には印が置かれ、ヘッドはその外に出られないが、範囲の中では何度でも往復して読み書きできる。記憶の量は入力の長さで抑えられるが、使い方には制限がない。この点で、記憶量に上限がないが使い方が後入れ先出しに限られるプッシュダウンオートマトンと対照的である。
この記事の中心の結果は、線形有界オートマトンで受理できる言語がちょうど文脈依存言語であり、さらに規則が文字列を縮めない文法(非収縮文法)で生成できる言語とも一致するという定理(thm-lba-csl)である。両方向をこの記事の中で証明する。文法から機械を作る向きでは、導出を一歩ずつ推測してテープの上で書き換える。機械から文法を作る向きでは、テープの各マスを一つの変数記号で表し、機械の一歩を文脈依存文法の規則の組でなぞる。あわせて、線形有界オートマトンの受理する言語では所属が判定できることを示す。
定義
以下、$\Sigma$ はアルファベット、$\Sigma^{*}$ はその上の文字列全体、$\varepsilon$ は空語、$|x|$ は文字列 $x$ の長さを表す。$\triangleright,\triangleleft$ は左端と右端の印を表す記号で、以下に現れるどのアルファベットにも属さないとする。
線形有界オートマトン
線形有界オートマトンとは、$6$ つ組 $M=(Q,\Sigma,\Gamma,\delta,q_0,F)$ であって次を満たすものをいう。
- $Q$ は空でない有限集合(状態の集合)、$q_0\in Q$(初期状態)、$F\subset Q$(受理状態の集合)
- $\Gamma$ は $\Sigma$ を含む有限集合(テープ記号の集合)。$\hat\Gamma:=\Gamma\cup\{\triangleright,\triangleleft\}$ とおく。
- $\delta$ は $Q\times\hat\Gamma\times Q\times\hat\Gamma\times\{-1,+1\}$ の有限部分集合(遷移の集合)で、各 $(q,X,p,Y,d)\in\delta$ は次を満たす:$X=\triangleright$ なら $Y=\triangleright$ かつ $d=+1$、$X=\triangleleft$ なら $Y=\triangleleft$ かつ $d=-1$、$X\in\Gamma$ なら $Y\in\Gamma$。
遷移 $(q,X,p,Y,d)$ は「状態 $q$ でヘッドの下の記号が $X$ なら、そこに $Y$ を書き、ヘッドを $d$ の向き($-1$ は左、$+1$ は右)に一マス動かし、状態 $p$ に移る」ことを表す。条件により、端の印は書き換えられず、ヘッドは印の外に出ない。
様相・計算・受理
$M=(Q,\Sigma,\Gamma,\delta,q_0,F)$ を線形有界オートマトン、$x=a_1\cdots a_n\in\Sigma^{*}$ を入力とする。テープは $0$ 番目から $n+1$ 番目までのマスからなり、$0$ 番目に $\triangleright$、$n+1$ 番目に $\triangleleft$ があり、間の $n$ マスの内容は $\Gamma^{n}$ の元である。
- $q\in Q$、$y=X_1\cdots X_n\in\Gamma^{n}$、$0\le i\le n+1$ の組 $(q,y,i)$ を(入力の長さ $n$ の)様相という。ヘッドの下の記号を、$i=0$ なら $\triangleright$、$i=n+1$ なら $\triangleleft$、それ以外なら $X_i$ とし、$\mathrm{sym}(y,i)$ と書く。
- $(q,\mathrm{sym}(y,i),p,Y,d)\in\delta$ のとき $(q,y,i)\vdash(p,y',i+d)$ と書く(一歩)。ここで $y'$ は、$1\le i\le n$ なら $y$ の $i$ 番目を $Y$ に替えたもの、$i\in\{0,n+1\}$ なら $y$ そのものである。遷移の条件から $0\le i+d\le n+1$ である。$\vdash$ を有限回($0$ 回を含む)続けた関係を $\vdash^{*}$ と書く。
- $c_0(x):=(q_0,x,0)$ を $x$ の初期様相という。ある様相 $(f,y,i)$($f\in F$)について $c_0(x)\vdash^{*}(f,y,i)$ となるとき、$M$ は $x$ を受理するという。$M$ が受理する文字列全体を $L(M)$ と書く。
一つの様相から適用できる遷移が複数あってもよく、受理は「受理状態に至る計算が少なくとも一つある」という意味である。どの $(q,X)$ についても $(q,X,p,Y,d)\in\delta$ となる $(p,Y,d)$ が高々一つのとき、$M$ は決定性であるという。
非収縮文法
句構造言語 の記事の定義「句構造文法」の意味の文法 $G=(V,\Sigma,R,S)$ で、各規則 $\alpha\to\beta$ が $|\alpha|\le|\beta|$ を満たすもの(例外として、$S$ がどの規則の右辺にも現れないときに限り $S\to\varepsilon$ を許す)を非収縮文法という。これは 文脈依存言語 の記事の定義「非収縮文法」と同じものである。
定義の流儀
テープの長さを入力の長さの定数倍まで許す流儀もあり、「線形有界」という名称はこちらに由来する。長さ $kn$ のテープは、$k$ 個の記号の組を一つのテープ記号とし、組の中のどの位置にヘッドがあるかを状態に記録すれば、長さ $n$ のテープで模倣できる。したがって受理できる言語のクラスは変わらない。端の印を置かず、端から外に出ようとする動きではヘッドがその場に留まるとする流儀もある。
直感
線形有界オートマトンは「入力の書かれた紙の上でだけ計算してよい」機械である。紙を何度も読み返し、印を付けたり消したりはできるが、新しい紙は使えない。それでも、記号に印を付けながら往復すれば、$a,b,c$ の個数を一つずつ照合したり(ex-lba-anbncn)、文字列を半分ずつに減らしたり(ex-lba-powers-of-two)できる。
文脈依存文法との対応の鍵は、文脈依存文法(より一般に非収縮文法)の規則が文字列を縮めないことである(文脈依存言語 の記事の命題「規則の非減少性」)。長さ $n$ の文字列の導出の途中に現れる文字列はどれも長さ $n$ 以下なので、導出をテープの上で一歩ずつなぞっても入力の範囲からはみ出さない。逆に、機械の様相はテープの内容・ヘッドの位置・状態からなり、その長さは入力の長さで決まっている。そこで様相を同じ長さの文字列として表し、機械の一歩を、隣り合う記号だけを見て一記号を書き換える文脈依存文法の規則でなぞることができる。
例
三つの部分の個数が等しい文字列
$\{a^{n}b^{n}c^{n}\mid n\ge1\}$ は次の線形有界オートマトンで受理できる。まず左端から右端まで一度走査し、入力が $a^{+}b^{+}c^{+}$ の形でなければ止まる。次に、左端から右へ進んで印の付いていない最初の $a$ に印を付け、続けて印の付いていない最初の $b$、最初の $c$ に印を付けて左端に戻る、という一巡を繰り返す(テープ記号に印付きの $\dot a,\dot b,\dot c$ を加える)。一巡の途中で探す記号が見つからなければ止まる。印の付いていない $a$ がなくなった時点で、印の付いていない $b,c$ も残っていなければ受理する。一巡ごとに $a,b,c$ の印のない個数がそれぞれ一つずつ減るので、受理されるのは三つの個数が等しいときに限る。この言語は文脈自由言語ではない(文脈自由言語 の記事の命題「三つの部分の個数が等しい文字列は文脈自由でない」。引用先は $n\in\mathbb{N}$ の言語を扱うが、空語を除いても、文脈自由言語のクラスが和について閉じていることから同じことが従う)。
2 の冪乗の長さの文字列
$\Sigma=\{a\}$ 上の言語 $\{a^{2^{k}}\mid k\in\mathbb{N}\}$ は次の線形有界オートマトンで受理できる。テープ記号に $\bar a$(消した $a$)を加える。左端から右端まで一回走査するあいだに、消されていない $a$ を左から数えて偶数番目のものをすべて $\bar a$ に替える。数えるのは偶奇だけでよいので状態で覚えられ、同時に「消されていない $a$ が $1$ 個だけだったか」も状態で覚えられる。右端に着いたとき、走査の前に消されていない $a$ が $1$ 個だけなら受理し、奇数個($3$ 個以上)または $0$ 個なら止まり、$2$ 以上の偶数個なら左端に戻って同じ走査を繰り返す。走査の前の個数が偶数 $m$ なら走査の後は $m/2$ 個になるので、入力の長さ $n\ge1$ について受理されるのは、$n$ を $2$ で割り続けて奇数に出会うまでの最後の値が $1$ のとき、すなわち $n$ が $2$ の冪乗のときに限る。
同じ文字列の繰り返し
$\{ww\mid w\in\{a,b\}^{+}\}$ は、まず中央の位置を推測して印を付け(非決定性を使う。決定性の機械でも、両端から一つずつ印を付けて中央を求められる)、前半の $i$ 番目と後半の $i$ 番目を一つずつ印を付けながら照合する機械で受理できる。この言語は文脈自由言語ではない(文脈自由言語 の記事の反例「三つの部分の個数が等しい文字列」の後半。空語を除いても、文脈自由言語のクラスが和について閉じていることから同じことが従う)。
性質
所属の判定
所属問題の決定可能性
線形有界オートマトン $M$ と入力 $x$ が与えられたとき、$x\in L(M)$ かどうかは有限の手続きで判定できる。
$n:=|x|$ とおく。入力の長さ $n$ の様相 $(q,y,i)$ は $q\in Q$、$y\in\Gamma^{n}$、$0\le i\le n+1$ で定まるので、その全体は有限集合であり、個数は $|Q|\cdot|\Gamma|^{n}\cdot(n+2)$ である。二つの様相 $c,c'$ について $c\vdash c'$ かどうかは $\delta$ の有限個の元を調べれば決まる。よって様相を頂点、$\vdash$ を辺とする有限の有向グラフが構成でき、$x\in L(M)$ は「このグラフで $c_0(x)$ から、状態が $F$ に属する様相のどれかに到達できる」ことと同値である。有限グラフの到達可能性は、$c_0(x)$ から到達できる頂点の集合を辺をたどって順に拡げていく(既に加えた頂点は再訪しない)ことで、有限回の操作で計算できる。
この判定は、機械が止まらない計算(同じ様相を繰り返すもの)を持っていても通用する。様相の個数が有限なので、ある様相を二度通る計算は受理の判定に不要だからである。一方、作業領域に制限のない Turing 機械では様相が無限にあり、この議論は成り立たない。
文法から機械へ
非収縮文法から線形有界オートマトンへ
非収縮文法 $G=(V,\Sigma,R,S)$ に対し、$L(M)=L(G)$ となる線形有界オートマトン $M$ が存在する。
新しい記号 $\square$(空き)をとり、$\Delta:=V\cup\Sigma\cup\{\square\}$ とおく。$\Delta$ の上の文字列 $z$ から $\square$ をすべて取り除いた文字列を $\mathrm{del}(z)$ と書く。同じ長さの空でない文字列の対 $(u,v)$ からなる有限集合 $P$ を、次の二種類の対の全体とする。
- 各 $\sigma\in V\cup\Sigma$ について $(\sigma\square,\ \square\sigma)$(空きを左へ一つ移す)。
- $S\to\varepsilon$ 以外の各規則 $\alpha\to\beta\in R$ について、$d:=|\beta|-|\alpha|\ge0$ として $(\alpha\square^{d},\ \beta)$。
機械のテープ記号の集合を $\Gamma:=\Sigma\cup(\Sigma\times\Delta)$ とする。$(a,\zeta)\in\Sigma\times\Delta$ は二段に分かれたマスを表し、上段に入力の記号 $a$、下段に作業用の記号 $\zeta$ を置く。状態は $s_0,s_1,s_2,b,m,c,f$ と、各 $(u,v)\in P$ と $2\le j\le|u|$ についての $t_{u,v,j}$ とし、初期状態を $s_0$、$F:=\{f\}$ とする。遷移は次のとおり($a\in\Sigma$、$\zeta\in\Delta$、$Z\in\Sigma\times\Delta$ は任意。$u=u_1\cdots u_k$、$v=v_1\cdots v_k$。$k=|u|$ のときは $t_{u,v,k+1}$ を $b$ と読む)。
- 準備:$(s_0,\triangleright,s_1,\triangleright,+1)$、$(s_1,a,s_2,(a,S),+1)$、$(s_2,a,s_2,(a,\square),+1)$、$(s_2,\triangleleft,b,\triangleleft,-1)$。さらに $S\to\varepsilon\in R$ のときに限り $(s_1,\triangleleft,f,\triangleleft,-1)$。
- 左端へ戻る:$(b,Z,b,Z,-1)$、$(b,\triangleleft,b,\triangleleft,-1)$、$(b,\triangleright,m,\triangleright,+1)$、$(b,\triangleright,c,\triangleright,+1)$。
- 書き換え:$(m,Z,m,Z,+1)$(読み飛ばす)。各 $(u,v)\in P$ について、$(m,(a,u_1),t_{u,v,2},(a,v_1),+1)$ と、$2\le j\le k$ について $(t_{u,v,j},(a,u_j),t_{u,v,j+1},(a,v_j),+1)$。
- 照合:$(c,(a,a),c,(a,a),+1)$、$(c,\triangleleft,f,\triangleleft,-1)$。
段階 3 は、状態 $m$ で右へ進んで任意の位置を選び、そこから $k$ マスの下段が $u$ であることを一マスずつ確かめながら $v$ に書き換え、終わったら状態 $b$ で左端へ戻るものである。途中で下段が $u$ と食い違うか右端の印に当たれば、その計算は止まる。
$x=a_1\cdots a_n$ とする。$n=0$ のとき、テープは $\triangleright\triangleleft$ であり、$f$ に至る計算は $s_1$ で $\triangleleft$ を読む遷移によるものに限るので、$\varepsilon\in L(M)$ は $S\to\varepsilon\in R$ と同値である。一方 $S\to\varepsilon$ 以外の規則は長さを減らさず、$S$ は($S\to\varepsilon$ がある場合)右辺に現れないので、$\varepsilon$ の導出は $S$ に直接 $S\to\varepsilon$ を適用するものに限り、$\varepsilon\in L(G)$ も $S\to\varepsilon\in R$ と同値である。
以下 $n\ge1$ とする。準備の段階を終えて初めて状態 $b$ になった時点のテープは $\triangleright(a_1,S)(a_2,\square)\cdots(a_n,\square)\triangleleft$ であり、以後テープの各マスは $(a_i,z_i)$ の形を保つ。下段の文字列を $z:=z_1\cdots z_n\in\Delta^{n}$ と書く。
($L(M)\subset L(G)$)状態 $b$ から状態 $m$ を経て再び状態 $b$ に戻る一巡は、ある $(u,v)\in P$ について $z=z'uz''$ を $z'vz''$ に替える。対 $(\sigma\square,\square\sigma)$ では $\mathrm{del}(z)$ は変わらない。対 $(\alpha\square^{d},\beta)$ では、$\alpha,\beta$ が $\square$ を含まないので、$\mathrm{del}(z)=\mathrm{del}(z')\,\alpha\,\mathrm{del}(z'')$ が $\mathrm{del}(z')\,\beta\,\mathrm{del}(z'')$ に替わり、これは $G$ の導出の一歩である。最初は $\mathrm{del}(z)=S$ なので、一巡の回数に関する帰納法により、状態 $b$ のときはつねに $S\Rightarrow_G^{*}\mathrm{del}(z)$ が成り立つ。$n\ge1$ では状態 $f$ に入る遷移は状態 $c$ からのものだけであり、状態 $c$ は左端から右端まですべてのマスが $(a,a)$ の形であることを確かめるので、受理されるのは $z=x$ のとき、すなわち $S\Rightarrow_G^{*}\mathrm{del}(z)=x$ のときに限る。
($L(G)\subset L(M)$)$x\in L(G)$ とし、導出 $S=\eta_0\Rightarrow\eta_1\Rightarrow\cdots\Rightarrow\eta_r=x$ をとる。$x\ne\varepsilon$ なので、文脈依存言語 の記事の命題「規則の非減少性」によりこの導出は $S\to\varepsilon$ を使わず、$|\eta_0|\le\cdots\le|\eta_r|=n$ である。各 $l$ について、下段が $\eta_l\square^{\,n-|\eta_l|}$ で状態 $b$ の様相に到達できることを $l$ に関する帰納法で示す。$l=0$ は準備の段階による。$\eta_l=\gamma\alpha\theta$、$\eta_{l+1}=\gamma\beta\theta$(規則 $\alpha\to\beta$)とし、$d:=|\beta|-|\alpha|$、$e:=n-|\eta_l|$ とおくと、$|\eta_{l+1}|\le n$ より $d\le e$ である。下段 $\gamma\alpha\theta\square^{e}$ の $\theta$ の直後の空きを、対 $(\sigma\square,\square\sigma)$ の一巡を $|\theta|$ 回行って $\alpha$ の直後まで移す。これを $d$ 回繰り返すと下段は $\gamma\alpha\square^{d}\theta\square^{e-d}$ になり、対 $(\alpha\square^{d},\beta)$ の一巡で $\gamma\beta\theta\square^{e-d}=\eta_{l+1}\square^{\,n-|\eta_{l+1}|}$ になる。$l=r$ のとき下段は $x$ であり、状態 $b$ から状態 $c$ に入って照合を通り、$f$ に至る。
機械から文法へ
線形有界オートマトンから文脈依存文法へ
線形有界オートマトン $M=(Q,\Sigma,\Gamma,\delta,q_0,F)$ に対し、$L(G)=L(M)$ となる文脈依存言語 の記事の定義「文脈依存文法」の意味の文法 $G$ が存在する。
(変数記号)ヘッドの印の集合を
$$H:=\{-\}\cup\{\,(q,\kappa)\mid q\in Q,\ \kappa\in\{\mathrm{o},\mathrm{l},\mathrm{r},\mathrm{R},\mathrm{L},\mathrm{R}',\mathrm{L}'\}\,\}$$
とする。$-$ はヘッドがないこと、$(q,\mathrm{o})$ は状態 $q$ のヘッドがそのマスにあること、$(q,\mathrm{l})$・$(q,\mathrm{r})$ はヘッドが左端・右端の印の上にあること(それぞれ最初・最後のマスにだけ付ける)を表す。$\mathrm{R},\mathrm{L},\mathrm{R}',\mathrm{L}'$ はヘッドが隣のマスへ移る途中を表す印で、$\mathrm{R}$・$\mathrm{L}$ は右・左へ出発したこと、$\mathrm{R}'$・$\mathrm{L}'$ は左・右から到着してまだ確定していないことを表す。変数記号は、開始記号 $S$、補助の $T$、および四つ組
$$\langle a,X,h,e\rangle\qquad(a\in\Sigma,\ X\in\Gamma,\ h\in H,\ e=(e_1,e_2)\in\{0,1\}^{2})$$
とする。四つ組は入力の一マスを表し、$a$ はそのマスの入力の記号、$X$ は現在のテープの記号、$h$ はヘッドの印、$e_1=1$ は最初のマス、$e_2=1$ は最後のマスであることを表す。
(規則)以下、規則の左辺と右辺に現れる文字は、その位置の条件を満たす範囲で任意にとる。
- 生成:$S\to\langle a,a,(q_0,\mathrm{l}),(1,1)\rangle$、$S\to T\langle a,a,-,(0,1)\rangle$、$T\to T\langle a,a,-,(0,0)\rangle$、$T\to\langle a,a,(q_0,\mathrm{l}),(1,0)\rangle$。
- 右への遷移 $(q,X,p,Y,+1)\in\delta$($X\in\Gamma$)について:$\langle a,X,(q,\mathrm{o}),(e_1,0)\rangle\to\langle a,Y,(p,\mathrm{R}),(e_1,0)\rangle$ と $\langle a,X,(q,\mathrm{o}),(e_1,1)\rangle\to\langle a,Y,(p,\mathrm{r}),(e_1,1)\rangle$。
- 左への遷移 $(q,X,p,Y,-1)\in\delta$($X\in\Gamma$)について:$\langle a,X,(q,\mathrm{o}),(0,e_2)\rangle\to\langle a,Y,(p,\mathrm{L}),(0,e_2)\rangle$ と $\langle a,X,(q,\mathrm{o}),(1,e_2)\rangle\to\langle a,Y,(p,\mathrm{l}),(1,e_2)\rangle$。
- 端の印の遷移 $(q,\triangleright,p,\triangleright,+1)$ について $\langle a,X,(q,\mathrm{l}),e\rangle\to\langle a,X,(p,\mathrm{o}),e\rangle$、$(q,\triangleleft,p,\triangleleft,-1)$ について $\langle a,X,(q,\mathrm{r}),e\rangle\to\langle a,X,(p,\mathrm{o}),e\rangle$。
- 右への移動(各 $p\in Q$):
$$\begin{aligned}\langle a,X,(p,\mathrm{R}),e\rangle\langle b,Z,-,e'\rangle&\to\langle a,X,(p,\mathrm{R}),e\rangle\langle b,Z,(p,\mathrm{R}'),e'\rangle,\\ \langle a,X,(p,\mathrm{R}),e\rangle\langle b,Z,(p,\mathrm{R}'),e'\rangle&\to\langle a,X,-,e\rangle\langle b,Z,(p,\mathrm{R}'),e'\rangle,\\ \langle a,X,-,e\rangle\langle b,Z,(p,\mathrm{R}'),e'\rangle&\to\langle a,X,-,e\rangle\langle b,Z,(p,\mathrm{o}),e'\rangle.\end{aligned}$$ - 左への移動(各 $p\in Q$):上の三つの規則の左右を入れ替えたもの。すなわち $\langle b,Z,-,e'\rangle\langle a,X,(p,\mathrm{L}),e\rangle\to\langle b,Z,(p,\mathrm{L}'),e'\rangle\langle a,X,(p,\mathrm{L}),e\rangle$、$\langle b,Z,(p,\mathrm{L}'),e'\rangle\langle a,X,(p,\mathrm{L}),e\rangle\to\langle b,Z,(p,\mathrm{L}'),e'\rangle\langle a,X,-,e\rangle$、$\langle b,Z,(p,\mathrm{L}'),e'\rangle\langle a,X,-,e\rangle\to\langle b,Z,(p,\mathrm{o}),e'\rangle\langle a,X,-,e\rangle$。
- 受理(各 $f\in F$、$\kappa\in\{\mathrm{o},\mathrm{l},\mathrm{r}\}$):$\langle a,X,(f,\kappa),e\rangle\to a$、$a\langle b,Z,-,e\rangle\to ab$、$\langle b,Z,-,e\rangle a\to ba$($a,b\in\Sigma$)。
- $\varepsilon\in L(M)$ のときに限り $S\to\varepsilon$。
どの規則も、左右の文脈(隣の高々一記号)を変えずに一つの変数記号を空でない文字列に書き換えるもので、$S$ はどの規則の右辺にも現れないので、$G=(V,\Sigma,R,S)$ は文脈依存文法である。
(記号列による様相の表示)$x=a_1\cdots a_n$($n\ge1$)と様相 $c=(q,X_1\cdots X_n,i)$ に対し、$\mathrm{enc}(x,c)$ を、$j$ 番目が $\langle a_j,X_j,h_j,([j=1],[j=n])\rangle$ である長さ $n$ の文字列とする。ここで $[\,\cdot\,]$ は条件が成り立てば $1$、そうでなければ $0$ とし、$h_j$ は $i=j$ なら $(q,\mathrm{o})$、$i=0$ かつ $j=1$ なら $(q,\mathrm{l})$、$i=n+1$ かつ $j=n$ なら $(q,\mathrm{r})$、それ以外は $-$ とする。
(終端記号を含まない文字列の形)$S$ から導出され終端記号を含まない文字列は、次のいずれかであることを導出の長さに関する帰納法で示す:(i) $S$、(ii) $T$ の後にヘッドの印 $-$ の四つ組が並んだ生成途中の文字列、(iii) ある $x$ と $c_0(x)\vdash^{*}c$ となる様相 $c$ についての $\mathrm{enc}(x,c)$、(iv) そのような $c$ から一歩 $c\vdash c'$ でヘッドが隣のマスへ移る途中の文字列($\mathrm{enc}(x,c)$ のヘッドのマスを $\mathrm{R}$ または $\mathrm{L}$ の印で書き換えたもの、さらに隣のマスに $\mathrm{R}'$ または $\mathrm{L}'$ の印を付けたもの、さらに元のマスの印を $-$ にしたもの、の三段階)。
(i)、(ii) に適用できるのは生成の規則だけで、結果は (ii) か、規則 $T\to\langle a,a,(q_0,\mathrm{l}),(1,0)\rangle$ または $S\to\langle a,a,(q_0,\mathrm{l}),(1,1)\rangle$ により $\mathrm{enc}(x,c_0(x))$ になる。(iii) の文字列には、ヘッドの印が $-$ でない四つ組がちょうど一つあり、その種類は $\mathrm{o},\mathrm{l},\mathrm{r}$ のどれかである。生成の規則と、終端記号を左辺に含む規則は適用できない。移動の規則は $\mathrm{R},\mathrm{L},\mathrm{R}',\mathrm{L}'$ の印を要するので適用できない。遷移の規則は、ヘッドの下の記号を読む $M$ の遷移に対応するものだけが適用でき、端の印の上への移動や端の印からの移動の場合は結果が $\mathrm{enc}(x,c')$($c\vdash c'$)であり、隣のマスへの移動の場合は結果が (iv) の第一段階である。四つ組の $e$ により、最後のマスからの右への遷移は右端の印への移動に、それ以外は隣のマスへの移動になる(左も同様)。受理の規則 $\langle a,X,(f,\kappa),e\rangle\to a$ は $c$ の状態が $F$ に属するときにだけ適用でき、終端記号を生じる。(iv) では、各段階で適用できる規則は次の段階へ進む一つだけである。たとえば右への移動の第一段階 $\ldots\langle a,Y,(p,\mathrm{R}),e\rangle\langle b,Z,-,e'\rangle\ldots$ では、ヘッドの印が $-$ でない四つ組は $(p,\mathrm{R})$ の一つだけであり、適用できるのは右への移動の最初の規則だけである(二番目の規則は右隣に $\mathrm{R}'$ の印を、三番目の規則は $\mathrm{R}'$ の印そのものを要する)。第二段階では $(p,\mathrm{R})$ の右隣が $-$ でないので最初の規則は適用できず、三番目の規則も左隣が $-$ でないので適用できない。第三段階では三番目の規則だけが適用でき、結果は $\mathrm{enc}(x,c')$ である。左も同様である。
($L(G)\subset L(M)$)$x\ne\varepsilon$ で $S\Rightarrow^{*}x$ とする。この導出で終端記号を含まない最後の文字列を $\zeta$ とする。$\zeta$ の次の一歩で初めて終端記号が現れるので、上により $\zeta=\mathrm{enc}(x',c)$($c_0(x')\vdash^{*}c$、$c$ の状態は $F$ に属する)であり、その一歩は受理の規則 $\langle a,X,(f,\kappa),e\rangle\to a$ による。以後の文字列には $S,T$ は現れず、どの規則も、四つ組をその第一成分と同じ終端記号に替えるか、四つ組の第一成分を変えずに書き換えるかなので、各四つ組を第一成分に、終端記号をそれ自身に写す写像を文字ごとに施した文字列は変わらない。$\zeta$ ではそれが $x'$、最後の $x$ ではそれが $x$ なので $x=x'$ であり、$x\in L(M)$ である。$\varepsilon$ については、$S\to\varepsilon$ 以外の規則は長さを減らさないので、$\varepsilon\in L(G)$ は $S\to\varepsilon\in R$、すなわち $\varepsilon\in L(M)$ と同値である。
($L(M)\subset L(G)$)$x=a_1\cdots a_n\in L(M)$、$n\ge1$ とし、受理に至る計算 $c_0(x)=c_0\vdash c_1\vdash\cdots\vdash c_s$($c_s$ の状態は $F$ に属する)をとる。生成の規則で $S\Rightarrow^{*}\mathrm{enc}(x,c_0)$ とし、各一歩 $c_{l}\vdash c_{l+1}$ を遷移の規則(と、必要なら移動の三つの規則)でなぞって $\mathrm{enc}(x,c_s)$ を得る。ヘッドのあるマスを受理の規則で $a_i$ に替えると、ほかのマスの印はすべて $-$ なので、規則 $a\langle b,Z,-,e\rangle\to ab$ と $\langle b,Z,-,e\rangle a\to ba$ で右へ左へと順に終端記号に替えられ、$x$ に至る。
文脈依存文法との同値
文脈依存言語との同値性
$\Sigma$ 上の言語 $L$ について、次は同値である。
- $L$ は文脈依存言語である。
- $L$ はある非収縮文法で生成される。
- ある線形有界オートマトン $M$ について $L=L(M)$ である。
この定理は 文脈依存言語 の記事の定理「線形有界オートマトンとの同値性」と同じ主張であり、1 と 2 の同値は同じ記事の定理「Kuroda の定理」の一部である。非収縮文法から作った機械を経由して文脈依存文法に戻ることで、非収縮文法の規則(たとえば二つの変数記号を入れ替える $CB\to BC$)を文脈依存文法の規則に直す一般的な方法が得られたことになる。prop-lba-decidable と合わせると、文脈依存言語の所属が判定できることも再び得られる。
仮定を外したときの反例
| 外す条件 | 反例 | 成り立たなくなること |
| ヘッドが入力の範囲(両端の印の間)に留まる | 入力の外のテープも使う Turing 機械で、所属が判定できない言語を受理するもの | 所属の判定(prop-lba-decidable) |
| 状態の集合と遷移の集合が有限 | 状態を $\Sigma^{*}$ で添字づけた「機械」 | 受理する言語が文脈依存言語であること(thm-lba-csl):任意の言語が受理できる |
| テープ記号の集合と遷移の集合が有限 | テープ記号に $[v]$($v\in\Sigma^{*}$)を加えた「機械」 | 受理する言語が文脈依存言語であること(thm-lba-csl):任意の言語が受理できる |
反例の確かめ
1 行目:Turing 機械の符号 $\langle M\rangle$ と入力 $w$ の組で「$M$ が $w$ を受理する」ものの全体 $A_{\mathrm{TM}}$ は、Turing 機械で受理できる(MSm24 Theorem 5.4.4、p. 177)が、すべての入力で停止する Turing 機械で判定することはできない(MSm24 Theorem 5.1.6、p. 162)。この記事では証明しない。$A_{\mathrm{TM}}$ を受理する線形有界オートマトンがあれば prop-lba-decidable により所属が判定できてしまうので、$A_{\mathrm{TM}}$ を受理する機械は入力の範囲の外を使う必要がある。そのような機械では様相が無限にありうるので、prop-lba-decidable の議論は成り立たない。
2 行目:任意の言語 $L\subset\Sigma^{*}$ に対し、状態の集合を $\Sigma^{*}\cup\{q_{\mathrm{acc}}\}$、初期状態を $\varepsilon$ とし、遷移を「状態 $v$ で $a\in\Sigma$ を読めば状態 $va$ に移って右へ進む」「状態 $v\in L$ で右端の印を読めば $q_{\mathrm{acc}}$ に移る」(左端の印からは右へ進むだけ)、受理状態を $q_{\mathrm{acc}}$ とすると、受理されるのはちょうど $L$ の元である。言語は非可算個あり(形式言語 の記事の命題「言語の個数」)、文脈依存言語は可算個しかない(句構造言語 の記事の命題「句構造言語の個数」)ので、文脈依存でない言語も受理される。
3 行目:状態は有限個のまま、テープ記号の集合を $\Sigma\cup\bar\Sigma\cup\{[v]\mid v\in\Sigma^{*}\}$ に広げる($\bar\Sigma$ は印を付けた記号、$[v]$ は文字列 $v$ を表す一つの記号)。最初のマスの $a_1$ を $[a_1]$ に替え、以後、印のない最も左の記号 $a$ を $\bar a$ に替え、$a$ を状態に覚えて最初のマスまで戻り、そこの $[v]$ を $[va]$ に替える、という操作を繰り返す。印のない記号がなくなったら最初のマスに戻り、その記号 $[v]$ について $v\in L$ なら受理状態に移る(空語は、左端の印の直後が右端の印かどうかで別に扱う)。$\Sigma$ は有限なので状態は有限個で済み、遷移は無限個になる。最初のマスには最後に $[x]$ が書かれるので、受理されるのはちょうど $L$ の元である。
2 行目と 3 行目の「機械」は遷移が無限個あり、有限個のデータでは書けない。遷移の集合を有限に保ったまま状態やテープ記号の集合だけを無限にしても、遷移に現れる状態と記号は有限個なので、受理する言語は変わらない。線形有界オートマトンの限界は、有限の制御と、作業領域が入力の長さで抑えられることの両方から来ている。
補足
決定性と LBA 問題
決定性の線形有界オートマトンで受理できる言語のクラスが、非決定性の線形有界オートマトンで受理できる言語のクラス(文脈依存言語のクラス)と一致するかどうかは LBA 問題と呼ばれ、未解決である(文脈依存言語 の記事の注意「線形有界オートマトンとの同値性の証明の所在」)。これに対し、文脈依存言語のクラスが補集合について閉じていることは示されている(文脈依存言語 の記事の定理「閉包性」とその注意)。prop-lba-decidable の判定は様相のグラフ全体をたどるので、記憶量は入力の長さについて指数的に増え、それ自身は線形有界オートマトンによる判定ではない。
階層における位置
線形有界オートマトンは Chomsky階層 のタイプ 1、すなわち文脈依存言語に対応する計算モデルである。入力を左から一度読むだけの機械、記憶を一本のスタックに限った機械、作業領域に制限のない機械が、それぞれ有限オートマトン(正規言語)、プッシュダウンオートマトン(文脈自由言語)、Turing機械(句構造言語)である。文脈依存言語のクラスは、所属の判定できる言語のクラスに真に含まれる(Chomsky階層 の記事の定理「階層定理」)。
歴史
非決定性の線形有界オートマトンが文脈依存言語をちょうど受理することは S.-Y. Kuroda(Kur64)による。
関連項目