Chomsky階層(Chomsky hierarchy)とは、形式文法を生成規則の形の制限によってタイプ 0 から 3 に分け、それぞれが生成する句構造言語・文脈依存言語・文脈自由言語・正規言語のクラスを並べた入れ子の系列のことである。各クラスはそれぞれ Turing 機械・線形有界オートマトン・プッシュダウンオートマトン・有限オートマトンで受理できる言語のクラスと一致する。二文字以上のアルファベットでは、所属の判定できる帰納的言語のクラスを間に挟んで包含はすべて真であり、文脈依存でない帰納的言語は対角線論法で得られる。一方、一文字のアルファベットでは正規言語と文脈自由言語のクラスが一致し、階層の一段が潰れる。
文字列の集合(形式言語)を有限個の規則で指定する方法として、N. Chomsky は生成規則の形を段階的に制限した四種類の文法を導入した(Cho59)。制限の最も弱いタイプ 0 から最も強いタイプ 3 まで、それぞれの文法が生成する言語のクラスは入れ子になり、各クラスはちょうど一種類の計算モデル(オートマトン)で受理できる言語のクラスと一致する。この入れ子の系列を Chomsky 階層(Chomsky hierarchy)という。
各クラスの定義と性質はそれぞれの記事(正規言語、文脈自由言語、文脈依存言語、句構造言語)が扱う。この記事では階層全体を見渡し、包含がすべて真であることを示す定理(thm-ch-hierarchy)を、所属の判定できる言語のクラスを間に挟んだ形で証明する。そのうち、文脈依存言語でない判定可能な言語の存在(prop-ch-diagonal)は対角線論法によってこの記事で証明する。さらに、アルファベットが一文字のときには正規言語と文脈自由言語のクラスが一致し、階層の一段が潰れることを示す(thm-ch-unary)。
以下、$\Sigma$ はアルファベット、$\Sigma^{*}$ はその上の文字列全体、$\varepsilon$ は空語を表す。文法 $G=(V,\Sigma,R,S)$ と導出 $\Rightarrow^{*}$、生成される言語 $L(G)$ は 句構造言語 の記事の定義「句構造文法」「導出と生成される言語」のとおりとする。
句構造文法 $G=(V,\Sigma,R,S)$ を、生成規則の形によって次のように分類する。
言語 $L\subset\Sigma^{*}$ が帰納的言語(recursive language。判定可能な言語ともいう)であるとは、すべての入力で停止する Turing機械 であって、$w\in L$ なら受理し、$w\notin L$ なら拒否するものが存在することをいう。$\Sigma$ 上の帰納的言語全体を $\mathcal{R}(\Sigma)$ または $\mathcal{R}$ と書く。言語を受理する Turing 機械(受理しない入力では停止しなくてもよい)が存在するとき、その言語を帰納的可算言語という。ここでの Turing 機械は、受理状態と拒否状態を持ち、受理状態で停止したときに入力を受理し、拒否状態で停止したときに拒否するものとする(MSm24 Definition 4.1.1、p. 139。判定可能性は同 Definition 5.1.1、p. 157)。
タイプ 1 の文法を、規則が文字列を縮めないこと $|\alpha|\le|\beta|$ だけで定める流儀(非収縮文法)もある。生成される言語のクラスは同じである(線形有界オートマトン の記事の定理「文脈依存言語との同値性」)。タイプ 3 についても、左線形文法を用いる流儀があるが、生成される言語のクラスは変わらない(正規言語 の記事の命題「左線形文法との同値性」)。$\mathcal{L}_2\subset\mathcal{L}_1$ を「文法の形の包含」として読むことはできない点に注意する(rem-ch-nonexample-grammar)。
四つのタイプは、規則の形の制限と、文法と同じ言語を受理する機械の記憶の制限が、きれいに対応している。
| タイプ | 文法 | 言語のクラス | 受理する機械 | 機械の記憶 | 所属の判定 |
|---|---|---|---|---|---|
| 0 | 句構造文法 | 句構造言語 | Turing機械 | 制限のないテープ | 一般にはできない |
| 1 | 文脈依存文法 | 文脈依存言語 | 線形有界オートマトン | 入力の長さのテープ | できる |
| 2 | 文脈自由文法 | 文脈自由言語 | プッシュダウンオートマトン | スタック一本 | できる |
| 3 | 右線形文法 | 正規言語 | 有限オートマトン | 状態だけ | できる |
文法と機械の対応は、それぞれ 句構造言語 の記事の定理「Turing 機械との同値性」、線形有界オートマトン の記事の定理「文脈依存言語との同値性」、プッシュダウンオートマトン の記事の定理「文脈自由言語との同値性」、正規言語 の記事の命題「右線形文法と有限オートマトンの同値性」による。
下の段ほど記憶の使い方が制限され、扱える言語が少なくなる。有限個の状態だけでは個数を数えられないので $\{0^{n}1^{n}\}$ は正規でなく、スタック一本では三つの個数を同時に比べられないので $\{a^{n}b^{n}c^{n}\}$ は文脈自由でない。テープを入力の範囲に限ると様相が有限個になるので所属が判定でき、判定できない言語を受理するには制限のないテープが要る。こうして各段の間に「上の段にあって下の段にない」言語が見つかる。
$\Sigma=\{0,1\}$ または $\{a,b,c\}$ として、次の言語が隣り合う段を分ける。
$\Sigma=\{a\}$ とする。$\{a^{2k}\mid k\in\mathbb{N}\}$ は正規言語である($(aa)^{*}$)。$\{a^{2^{k}}\mid k\in\mathbb{N}\}$ と $\{a^{q}\mid q\text{ は素数}\}$ は文脈自由言語でない(cor-ch-unary-examples)。前者はタイプ 1 である(線形有界オートマトン の記事の例「2 の冪乗の長さの文字列」と同じ記事の定理「文脈依存言語との同値性」)。一文字の上では正規と文脈自由の区別がなくなる(thm-ch-unary)ので、文脈自由でないことは「長さの集合が周期的でない」ことから従う。
タイプ 3 の文法はタイプ 2 の文法であり、タイプ 1 の文法はタイプ 0 の文法である。しかしタイプ 2 の文法はタイプ 1 の文法とは限らない。たとえば $S\to0S1\mid\varepsilon$ はタイプ 2 だが、規則 $S\to\varepsilon$ を持ち、しかも $S$ が規則 $S\to0S1$ の右辺に現れるので、タイプ 1 で許される空語の例外に当たらない。この文法は「文法の形がタイプ 1 である」という性質を満たさない。それでも言語のクラスの包含 $\mathcal{L}_2\subset\mathcal{L}_1$ は成り立つ。空語規則を除いた等価な文法に直せる(文脈自由言語 の記事の命題「空語規則の除去」)からである。言語のクラスの包含は、文法の形の包含から直ちに従うとは限らない。
$\Sigma=\{0,1\}$ 上に、帰納的言語であって文脈依存言語でないもの $D$ が存在する。
(文法の符号化)終端記号が $0,1$ の文脈依存文法は、変数記号の名前を $A_1,\ldots,A_k$(開始記号を $A_1$)と付け替えれば、次の七個の記号からなる文字列として書ける:$0$、$1$、$\mathtt{A}$、$\mathtt{i}$、$\mathtt{e}$、$\mathtt{>}$、$\mathtt{;}$。変数記号 $A_j$ を $\mathtt{A}\mathtt{i}^{j}$、空語を $\mathtt{e}$ と書き、規則 $\alpha\to\beta$ を「$\alpha$ の表記、$\mathtt{>}$、$\beta$ の表記」と書き、規則を $\mathtt{;}$ で区切って並べる。七個の記号に長さ $3$ の $0,1$ の列を一つずつ割り当てて置き換えれば、文法は $\{0,1\}^{*}$ の文字列として表される。これを文法の符号という。名前の付け替えは導出を一対一に移すので生成言語を変えず、したがって終端記号が $0,1$ のどの文脈依存文法 $G$ についても、$L(G')=L(G)$ となる文法 $G'$ の符号が存在する。
文字列 $w\in\{0,1\}^{*}$ が符号であるかどうかは、長さが $3$ の倍数かを見て三文字ずつ七個の記号に戻し、上の書式に合っているか、各規則が 文脈依存言語 の記事の定義「文脈依存文法」の形をしているか(左辺と右辺の共通の文脈を除いて一つの変数記号が空でない列に置き換わっているか、$A_1\to\varepsilon$ があるなら $A_1$ が右辺に現れないか)を調べれば、有限回の操作で判定できる。$w$ が符号のとき、それが表す文法を $G_w$ と書く。
(対角線論法)
$$D:=\{\,w\in\{0,1\}^{*}\mid w\text{ は符号でない}\ \text{または}\ \bigl(w\text{ は符号で }w\notin L(G_w)\bigr)\,\}$$
とおく。
$D$ は文脈依存言語でない:$D=L(G)$ となる文脈依存文法 $G$ があったとすると、上により $L(G_{w_0})=L(G)=D$ となる符号 $w_0$ がある。$w_0$ は符号なので、$D$ の定義により $w_0\in D\iff w_0\notin L(G_{w_0})=D$ となり、矛盾する。
$D$ は帰納的である:入力 $w$ に対し、まず $w$ が符号かどうかを判定し、符号でなければ受理する。符号なら、文脈依存言語 の記事の命題「所属問題の決定可能性」の手続き(長さ $|w|$ 以下の文字列を頂点とする有限グラフの到達可能性を調べる)で $w\in L(G_w)$ かどうかを判定し、属するなら拒否、属さないなら受理する。どの段階も有限の探索であり、文法と入力を入力として受け取って一様に実行できるので、すべての入力で停止する Turing 機械として実現できる。有限で一様な手続きを Turing 機械として書けることは、アルゴリズムを Turing 機械と同一視する Church–Turing のテーゼの立場(MSm24 §4.4、pp. 151–152)による。機械の構成はこの記事では証明しない。
$\Sigma$ を $2$ 文字以上のアルファベットとすると、
$$\mathcal{L}_3\subsetneq\mathcal{L}_2\subsetneq\mathcal{L}_1\subsetneq\mathcal{R}\subsetneq\mathcal{L}_0$$
が成り立つ。すなわち、正規言語・文脈自由言語・文脈依存言語・帰納的言語・句構造言語のクラスは、この順に真に大きくなる。
$\Sigma$ の相異なる二文字を $0,1$ と書き、$\{0,1\}$ 上の言語を $\Sigma$ 上の言語ともみなす。
(包含)$\mathcal{L}_3\subset\mathcal{L}_2$ は 文脈自由言語 の記事の命題「正規言語は文脈自由言語である」、$\mathcal{L}_2\subset\mathcal{L}_1$ は 文脈依存言語 の記事の命題「文脈自由言語は文脈依存言語である」による。$\mathcal{L}_1\subset\mathcal{R}$ は 文脈依存言語 の記事の命題「所属問題の決定可能性」の手続きが Turing 機械で実現できることによる(線形有界オートマトン の記事の命題「所属問題の決定可能性」も同じ議論)。この「実現できる」は prop-ch-diagonal の証明と同じく Church–Turing のテーゼの立場(MSm24 §4.4、pp. 151–152)によるもので、機械の構成はこの記事では証明しない。$\mathcal{L}_1\subset\mathcal{R}$ と $\mathcal{L}_1\ne\mathcal{R}$ はこの立場に依存している。$\mathcal{R}\subset\mathcal{L}_0$ は、帰納的言語を判定する機械はその言語を受理する Turing 機械でもあるので、句構造言語 の記事の定理「Turing 機械との同値性」による。
(真の包含)$\mathcal{L}_3\ne\mathcal{L}_2$:$\{0^{n}1^{n}\mid n\in\mathbb{N}\}$ は文脈自由だが正規でない(ex-ch-separating の一つ目)。$\mathcal{L}_2\ne\mathcal{L}_1$:$P_2:=\{0^{2^{k}}\mid k\in\mathbb{N}\}$ は文脈依存だが文脈自由でない。文脈依存であることは、線形有界オートマトン の記事の例「2 の冪乗の長さの文字列」の機械($a$ を $0$ と読み替える)に「$0$ 以外の文字を読んだら止まる」ことを加えたものが $P_2$ を受理することと、同じ記事の定理「文脈依存言語との同値性」による。文脈自由でないことを示す。$P_2=L(G)$ となる $\Sigma$ 上の文脈自由文法 $G$ があったとする。文脈自由文法の導出では一度現れた終端記号は消えないので、$P_2$ の元の導出は右辺に $0$ 以外の終端記号を含む規則を使わない。そこでそのような規則を除いた $\{0\}$ 上の文脈自由文法 $G'$ をとると $L(G')=P_2$ となり、cor-ch-unary-examples に反する。アルファベットが三文字以上なら、ex-ch-separating の二つ目の $\{a^{n}b^{n}c^{n}\mid n\ge1\}$ も使える。$\mathcal{L}_1\ne\mathcal{R}$:prop-ch-diagonal の $D$ は $\Sigma$ 上でも帰納的である($0,1$ 以外の文字を含む入力は拒否すればよい)。$\Sigma$ 上の文脈依存文法 $G$ で $L(G)=D$ となるものがあったとすると、文脈依存文法の規則は変数記号だけを書き換えるので一度現れた終端記号は消えず、$D$ の元の導出には $0,1$ 以外の終端記号は現れない。そこで $0,1$ 以外の終端記号を左辺か右辺に含む規則を除けば、$\{0,1\}$ 上の文脈依存文法で $D$ を生成するものが得られ、prop-ch-diagonal に反する。$\mathcal{R}\ne\mathcal{L}_0$:$\{0,1\}$ 上に符号化した $A_{\mathrm{TM}}$ は Turing 機械で受理できる(MSm24 Theorem 5.4.4、p. 177)ので句構造言語であるが、帰納的でない(MSm24 Theorem 5.1.6、p. 162)。
prop-ch-diagonal の対角線論法は、文脈依存文法の所属が「一様に」判定できること、すなわち文法と文字列の両方を入力とする一つの手続きで判定できることを本質的に使っている。文法ごとに別々の判定手続きがあるだけでは、$D$ の判定手続きは作れない。
$\Sigma=\{a\}$ のとき、言語 $L\subset\{a\}^{*}$ は長さの集合 $N(L):=\{n\in\mathbb{N}\mid a^{n}\in L\}$ で決まる。自然数の集合 $N$ が終局的に周期的であるとは、ある $n_0\in\mathbb{N}$ と正の整数 $P$ が存在して、すべての $n\ge n_0$ について $n\in N\iff n+P\in N$ が成り立つことをいう。
$L\subset\{a\}^{*}$ について、次は同値である。
1 から 2 は 文脈自由言語 の記事の命題「正規言語は文脈自由言語である」による。
2 から 3:$N:=N(L)$ とし、文脈自由言語 の記事の命題「文脈自由言語の反復補題」の反復定数を $p$ とする。$P:=p!$ とおく。まず「$n\ge p$ かつ $n\in N$ ならば、すべての $t\in\mathbb{N}$ について $n+tP\in N$」を示す。$a^{n}\in L$、$n\ge p$ なので、$a^{n}=uvxyz$、$1\le|vy|\le|vxy|\le p$、すべての $m$ について $uv^{m}xy^{m}z\in L$ となる分解がある。$k:=|vy|$ とおくと $uv^{m}xy^{m}z=a^{n+(m-1)k}$ である。$1\le k\le p$ なので $k$ は $P=p!$ を割り切り、$m:=1+tP/k$ とおけば $a^{n+tP}\in L$ を得る。
次に、$P$ を法とする各剰余類 $r\in\{0,1,\ldots,P-1\}$ について、$C_r:=\{n\in N\mid n\ge p,\ n\equiv r\pmod P\}$ を考える。$C_r\ne\emptyset$ ならその最小元を $m_r$ とおくと、前段により $C_r=\{m_r+tP\mid t\in\mathbb{N}\}$ である($m_r$ より小さい同じ剰余類の元は最小性により $C_r$ に属さず、$m_r$ 以上の元は $m_r+tP$ の形なので前段により $N$ に属する)。$n_0$ を $p$ と、空でない $C_r$ の $m_r$ すべてのうちの最大値とする。$n\ge n_0$ とし、$n\equiv r$ とする。$C_r\ne\emptyset$ なら $n\ge m_r$ なので $n,n+P$ はともに $C_r\subset N$ に属し、$C_r=\emptyset$ なら $n,n+P$ はともに $N$ に属さない。よって $n\in N\iff n+P\in N$ である。
3 から 1:$n_0,P$ を 3 のとおりとする。$n\ge n_0$ について、$n$ と同じ剰余類に属する $[n_0,n_0+P)$ の元を $r(n)$ とおくと、$n=r(n)+tP$($t\in\mathbb{N}$)であり、3 を $t$ 回使って $n\in N\iff r(n)\in N$ である。したがって
$$L=\{a^{n}\mid n< n_0,\ n\in N\}\ \cup\bigcup_{r\in N,\ n_0\le r< n_0+P}a^{r}\bigl(a^{P}\bigr)^{*}$$
である。右辺の第一項は有限言語、各 $\{a^{r}\}$ と $\{a^{P}\}$ も有限言語なので正規言語であり(正規言語 の記事の例「有限言語」)、正規言語のクラスは和・連接・Kleene 閉包について閉じている(正規言語 の記事の命題「和・連接・Kleene 閉包に関する閉包性」)ので、$L$ は正規言語である。
$\{a^{2^{k}}\mid k\in\mathbb{N}\}$ と $\{a^{q}\mid q\text{ は素数}\}$ は文脈自由言語でない。
thm-ch-unary により、長さの集合が終局的に周期的でないことを示せばよい。$N=\{2^{k}\mid k\in\mathbb{N}\}$ が $n_0,P$ について 3 を満たすとすると、$2^{k}\ge n_0$ かつ $2^{k}> P$ となる $k$ をとれば、$2^{k}\in N$ から $2^{k}+P\in N$ が従うが、$2^{k}< 2^{k}+P< 2^{k+1}$ なので $2^{k}+P$ は $2$ の冪乗でなく、矛盾する。素数の集合 $N$ が $n_0,P$ について 3 を満たすとすると、$n_0$ 以上の素数 $q$ をとって 3 を $q$ 回使えば $q+qP=q(1+P)\in N$ となるが、$1+P\ge2$ なのでこれは素数でなく、矛盾する。
thm-ch-unary は、Chomsky 階層の段がアルファベットによっては潰れることを示している。一方、タイプ 2 とタイプ 1 は一文字の上でも分かれる(ex-ch-unary)。文脈自由言語と正規言語の違いは、一文字の上では「長さの集合の周期性」という数論的な性質に帰着する。反復補題で伸ばせる量 $|vy|$ が $p$ 以下に限られることが、周期 $p!$ を生んでいる。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| アルファベットが一文字(thm-ch-unary) | $\{0^{n}1^{n}\mid n\in\mathbb{N}\}\subset\{0,1\}^{*}$ | 文脈自由ならば正規であること |
| 文脈自由(タイプ 2)であること(thm-ch-unary) | $\{a^{2^{k}}\mid k\in\mathbb{N}\}$(タイプ 1) | 正規であること、長さの集合が終局的に周期的であること |
| 規則が文字列を縮めないこと(タイプ 1 の規則の形) | タイプ 0 の文法で生成される $A_{\mathrm{TM}}$ | 所属が判定できること($\mathcal{L}_1\subset\mathcal{R}$) |
1 行目:$\{0^{n}1^{n}\}$ は文脈自由だが正規でない(ex-ch-separating)。二文字あれば $0$ の個数と $1$ の個数を別々に数える必要が生じ、長さの集合の周期性だけでは言語が決まらない。
2 行目:$\{a^{2^{k}}\}$ はタイプ 1(ex-ch-unary)だが、長さの集合は終局的に周期的でない(cor-ch-unary-examples)。thm-ch-unary の 2 から 3 の証明は文脈自由言語の反復補題の結論だけを使っているので、$\{a^{2^{k}}\}$ は反復補題の結論を満たさない。タイプ 1 の言語に対しては反復補題が成り立たないのである。
3 行目:$A_{\mathrm{TM}}$ は句構造言語(thm-ch-hierarchy の証明)なので、ある句構造文法で生成される。その文法には文字列を縮める規則が必ず含まれる。含まれなければ非収縮文法になり、線形有界オートマトン の記事の定理「文脈依存言語との同値性」により文脈依存言語、したがって帰納的言語になるが、$A_{\mathrm{TM}}$ は帰納的でないからである。
各クラスの閉包性と決定問題は、それぞれの記事で述べられている。正規言語のクラスは和・連接・Kleene 閉包・補集合・共通部分のすべてで閉じている(正規言語 の記事の命題「和・連接・Kleene 閉包に関する閉包性」「補集合・共通部分・差に関する閉包性」)。文脈自由言語のクラスは和・連接・Kleene 閉包で閉じているが、共通部分と補集合では閉じていない(文脈自由言語 の記事の命題「和・連接・Kleene 閉包・鏡像に関する閉包性」「共通部分と補集合に関しては閉じていない」)。ただし正規言語との共通部分では閉じている(プッシュダウンオートマトン の記事の命題「正規言語との共通部分」)。文脈依存言語のクラスは補集合を含む基本演算で閉じている(文脈依存言語 の記事の定理「閉包性」)。句構造言語のクラスは補集合で閉じていない(句構造言語 の記事の反例「句構造言語でない言語」)。
所属の判定は、タイプ 1 までは可能で、タイプ 0 では一般に不可能である(thm-ch-hierarchy)。空性($L(G)=\emptyset$ か)はタイプ 3 とタイプ 2 で判定できる(正規言語 の記事の節「個数と決定問題」、文脈自由言語 の記事の節「プッシュダウンオートマトンと決定問題」)。二つの文法の等価性は、タイプ 3 では判定できる(正規言語 の記事の節「個数と決定問題」)が、タイプ 2 では判定できない(文脈自由言語 の記事の節「プッシュダウンオートマトンと決定問題」)。
Chomsky は自然言語の統語論のモデルとして文法を形式化し、規則の形の制限による四段階の分類を与えた(Cho59)。各段と機械の対応、階層の真の包含は、その後の形式言語理論の基本的な枠組みになった。線形有界オートマトンと文脈依存言語の対応は S.-Y. Kuroda によって完成された(線形有界オートマトン の記事の補足「歴史」)。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する