Kleeneの定理(正規言語)(Kleene's theorem on regular languages)とは、アルファベット上の言語が有限オートマトンで受理されることと、正規表現で表されることが同値であるという定理である。正規表現からは式の組み立てに沿って有限オートマトンを組み立てられ、有限オートマトンからは、経路の途中で通ってよい状態を 1 つずつ増やす漸化式で正規表現が得られる。この定理により、有限オートマトンで受理される言語のクラスは、有限言語をすべて含み和集合・連接・Kleene 閉包で閉じた最小のクラスである。
文字列の集まり(言語)を記述する方法には、文字列を読んで受理・非受理を決める機械と、言語を組み立てる式とがある。Kleeneの定理(Kleene's theorem)は、この 2 つが同じ力をもつことを述べる。すなわち、アルファベット $\Sigma$ 上の言語が 有限オートマトン で受理されることと、正規表現 で表されることは同値である(MSm24 §2.8 Theorem 2.8.1、p. 57)。
証明は 2 方向の構成からなる。正規表現から有限オートマトンへは、式の組み立てに沿って部品をつなぐ。有限オートマトンから正規表現へは、経路の途中で通ってよい状態を 1 つずつ増やしながら、経路のラベルの集まりを式で書く。後者の漸化式は、ラベルを忘れれば関係の推移閉包を計算する漸化式と同じ形をしている。この記事では両方向を証明し、連立方程式による別の方法、計算例、帰結として正規言語のクラスの特徴づけを述べる。
| 結果 | 内容 |
|---|---|
| thm-kl-main | 正規表現で表されること $\iff$ 有限オートマトンで受理されること |
| lem-kl-to-automaton | 正規表現から有限オートマトンを組み立てる |
| lem-kl-paths | 経路のラベルの集まりの漸化式 |
| prop-kl-equation | 言語の方程式 $X=BX\cup C$ の解 |
| cor-kl-smallest | 有限言語を含み和・連接・Kleene 閉包で閉じた最小のクラス |
$\Sigma$ は空でない有限集合(アルファベット)、$\Sigma^{*}$ はその上の文字列全体、$\varepsilon$ は空語とする(形式言語 の定義「アルファベットと文字列」)。言語 $L,M\subset\Sigma^{*}$ の連接を $LM:=\{uv\mid u\in L,\ v\in M\}$、冪を $L^{0}:=\{\varepsilon\}$、$L^{n+1}:=L^{n}L$、Kleene 閉包を $L^{*}:=\bigcup_{n\ge0}L^{n}$ とする(同記事の定義「言語の連接と Kleene 閉包」)。$\varepsilon$ は $\Sigma$ の元ではないものとする。
有限オートマトン とは、組 $\mathcal A=(Q,\Sigma,\Delta,q_0,F)$ であって、$Q$ が空でない有限集合(状態の集合)、$\Delta\subset Q\times(\Sigma\cup\{\varepsilon\})\times Q$(遷移の集合)、$q_0\in Q$(初期状態)、$F\subset Q$(受理状態の集合)であるものをいう。$(p,a,q)\in\Delta$ を $p\xrightarrow{a}q$ とも書く。状態の列 $p_0,\dots,p_m$ とラベル $a_1,\dots,a_m\in\Sigma\cup\{\varepsilon\}$ で各 $(p_{i-1},a_i,p_i)$ が遷移であるものを、$p_0$ から $p_m$ への 経路 といい、連接 $a_1\cdots a_m$($\varepsilon$ は記号として数えない)をその ラベル という。$m=0$ の経路のラベルは $\varepsilon$ である。$q_0$ から $F$ の元への経路のラベル全体を $L(\mathcal A)$ と書き、$\mathcal A$ の 受理言語 という。
これは 有限オートマトン の記事の定義「有限オートマトン」「受理と受理言語」と同じもので、$\varepsilon$ 遷移を許す。$\varepsilon$ 遷移を許さない形や決定性の形に限っても、受理できる言語の範囲は変わらない(同記事の命題「$\varepsilon$ 遷移の除去」「部分集合構成」)。
$\Sigma$ 上の 正規表現 とは、記号 $\emptyset$、$\varepsilon$、$a\in\Sigma$ から出発し、$\alpha,\beta$ から $(\alpha\beta)$、$(\alpha+\beta)$、$(\alpha)^{*}$ を作る操作を有限回施して得られる記号列である。正規表現 $\alpha$ が 表す言語 $L(\alpha)$ を、組み立てに沿って
$$
L(\emptyset)=\emptyset,\quad L(\varepsilon)=\{\varepsilon\},\quad L(a)=\{a\},\quad L((\alpha\beta))=L(\alpha)L(\beta),\quad L((\alpha+\beta))=L(\alpha)\cup L(\beta),\quad L((\alpha)^{*})=L(\alpha)^{*}
$$
で定める。$L(\alpha)=L(\beta)$ のとき $\alpha\equiv\beta$ と書く。
括弧は、Kleene 閉包、連接、和の順に強く結びつくとして省く(正規表現 の定義「略記と優先順位」)。
初期状態 $s$ と、それと異なるただ 1 つの受理状態 $f$ をもち、$s$ に入る遷移も $f$ から出る遷移もない有限オートマトンを 標準形 とよぶ。
任意の正規表現 $\alpha$ について、$L(\mathcal A_\alpha)=L(\alpha)$ となる標準形の有限オートマトン $\mathcal A_\alpha$ がある。その状態の個数は、$\alpha$ に現れる記号 $\emptyset$、$\varepsilon$、$\Sigma$ の元、$+$、$*$ の個数の $2$ 倍以下にとれる。
$\alpha$ の組み立てに関する帰納法(構造的帰納法)で示す。
基礎. 状態を $s,f$ の 2 つとし、$\emptyset$ には遷移なし、$\varepsilon$ には $s\xrightarrow{\varepsilon}f$、$a\in\Sigma$ には $s\xrightarrow{a}f$ だけを置く。受理言語はそれぞれ $\emptyset$、$\{\varepsilon\}$、$\{a\}$ で、どれも標準形である。
帰納. 標準形の $\mathcal A_\alpha$(初期状態 $s_\alpha$、受理状態 $f_\alpha$)と $\mathcal A_\beta$(同じく $s_\beta,f_\beta$)があるとし、状態の名前を付け替えて状態の集合を交わらないようにする。以下の構成で加える遷移はすべて $\varepsilon$ 遷移である。
有限オートマトン $\mathcal A=(Q,\Sigma,\Delta,q_0,F)$ の状態に番号を付けて $Q=\{q_1,\dots,q_n\}$、$q_0=q_1$ とする。$0\le k\le n$ について、$q_i$ から $q_j$ への経路で、途中で通る状態(両端を除く)の番号がすべて $k$ 以下であるものを $k$ 経路 とよび、$k$ 経路のラベル全体を $R^{(k)}_{ij}\subset\Sigma^{*}$ とおく。
1:途中の状態をもたない経路は、長さ $0$ の経路($i=j$ のときだけあり、ラベル $\varepsilon$)と 1 本の遷移 $(q_i,a,q_j)$ からなる経路(ラベル $a$)である。長さ $2$ 以上の経路は番号 $1$ 以上の状態を途中で通るので、$0$ 経路ではない。
2:右辺 $\subset$ 左辺:$(k-1)$ 経路は $k$ 経路である。$q_i$ から $q_k$ への $(k-1)$ 経路、$q_k$ から $q_k$ への $(k-1)$ 経路を $0$ 個以上、$q_k$ から $q_j$ への $(k-1)$ 経路をこの順につなぐと、途中の状態は各区間の途中の状態(番号 $k-1$ 以下)とつなぎ目の $q_k$ なので、$k$ 経路になる。そのラベルは各区間のラベルの連接である。
左辺 $\subset$ 右辺:$k$ 経路が途中で $q_k$ を通らなければ $(k-1)$ 経路である。通るなら、途中で $q_k$ が現れる位置で経路を切る。最初の区間は $q_i$ から $q_k$ へ、間の区間は $q_k$ から $q_k$ へ、最後の区間は $q_k$ から $q_j$ への経路で、どの区間も途中で $q_k$ を通らないので $(k-1)$ 経路である。よってラベルは $R^{(k-1)}_{ik}\bigl(R^{(k-1)}_{kk}\bigr)^{*}R^{(k-1)}_{kj}$ に属する。
3:$n$ 経路はすべての経路なので、定義の受理言語そのものである。$\square$
ラベルを忘れて「経路があるか」だけを見る。$q_i$ から $q_j$ への遷移があるとき $i\,E\,j$ とおいて $\{1,\dots,n\}$ 上の関係 $E$ を定めると、長さ $1$ 以上の $k$ 経路は、途中の元が $\{1,\dots,k\}$ に属する $E$ 鎖にほかならない。したがって、推移閉包(二項関係) の定理「中継点を増やす計算」の $R_k$($R:=E$ とする)について、$R^{(k)}_{ij}\ne\emptyset$ は「$i=j$ または $(i,j)\in R_k$」と同値である。実際、lem-kl-paths の 2 で各集合が空でないかどうかだけを見ると、和は「または」、連接は「かつ」になり、$\bigl(R^{(k-1)}_{kk}\bigr)^{*}$ はつねに $\varepsilon$ を含んで空でないので条件から消える($q_k$ での回り道は、到達できるかどうかに効かない)。残るのは、同定理の漸化式を $E$ に対角 $\{(i,i)\mid 1\le i\le n\}$ を加えた関係に当てたものである(対角を加えると、鎖による特徴づけから各 $R_k$ にもちょうど対角が加わるので、上の同値と合う)。Kleene の漸化式は、到達可能性の計算に経路のラベルの記録を加えたものといえる。とくに $L(\mathcal A)\ne\emptyset$ は、$q_1$ から $F$ のある元へ $E$ の反射推移閉包でたどれることと同値である(同記事の定理「推移閉包の鎖による表示」)。
2 つの補題を合わせると、次の定理が得られる。
$\Sigma$ 上の言語 $L$ について、次は同値である。
1 から 2 は lem-kl-to-automaton である。
2 から 1 を示す。$\mathcal A$ を $L=L(\mathcal A)$ となる有限オートマトンとし、上のとおり $R^{(k)}_{ij}$ を定める。$k$ に関する帰納法で、$R^{(k)}_{ij}=L(\rho^{(k)}_{ij})$ となる正規表現 $\rho^{(k)}_{ij}$ を作る。$k=0$ では、lem-kl-paths の 1 の有限集合の元($\Sigma$ の元と $\varepsilon$)を $+$ でつないだ式を $\rho^{(0)}_{ij}$ とし、元がなければ $\rho^{(0)}_{ij}:=\emptyset$ とする。$k\ge1$ では
$$
\rho^{(k)}_{ij}:=\rho^{(k-1)}_{ij}+\rho^{(k-1)}_{ik}\bigl(\rho^{(k-1)}_{kk}\bigr)^{*}\rho^{(k-1)}_{kj}
$$
とすれば、lem-kl-paths の 2 と正規表現の言語の定義から $L(\rho^{(k)}_{ij})=R^{(k)}_{ij}$ である。lem-kl-paths の 3 により、$F=\{q_{j_1},\dots,q_{j_r}\}$ のとき $\alpha:=\rho^{(n)}_{1j_1}+\cdots+\rho^{(n)}_{1j_r}$($F=\emptyset$ なら $\alpha:=\emptyset$)が $L(\alpha)=L$ を満たす。$\square$
正規言語 の記事は正規言語を右線形文法で生成される言語として定め、同記事の命題「右線形文法と有限オートマトンの同値性」で 2 と同値であることを示している。この定理と合わせると、右線形文法・正規表現・有限オートマトンの 3 つが同じ言語のクラスを定める。
この証明は、有限オートマトンから正規表現を 計算する手順 を与えている。$n^2$ 個の式を $n$ 段にわたって作るので、式は長くなりやすいが、手順は機械的である(HN14 §2.3.1 Theorem 6 は決定性有限オートマトンについて同じ漸化式で示している)。
$\Sigma=\{0,1\}$ とし、状態 $q_1$(初期状態かつ受理状態。それまでに読んだ $1$ が偶数個)と $q_2$(奇数個)をもち、遷移が $q_1\xrightarrow{0}q_1$、$q_1\xrightarrow{1}q_2$、$q_2\xrightarrow{1}q_1$、$q_2\xrightarrow{0}q_2$ である有限オートマトン $\mathcal A$ を考える。$L(\mathcal A)$ は $1$ を偶数個含む文字列の全体である。lem-kl-paths の漸化式を順に計算すると次の表になる(右の列は表す言語が等しい簡単な式)。
| 式 | 漸化式で得る式 | 簡単にした式 |
|---|---|---|
| $\rho^{(0)}_{11},\ \rho^{(0)}_{22}$ | $\varepsilon+0$ | $\varepsilon+0$ |
| $\rho^{(0)}_{12},\ \rho^{(0)}_{21}$ | $1$ | $1$ |
| $\rho^{(1)}_{11}$ | $(\varepsilon+0)+(\varepsilon+0)(\varepsilon+0)^{*}(\varepsilon+0)$ | $0^{*}$ |
| $\rho^{(1)}_{12}$ | $1+(\varepsilon+0)(\varepsilon+0)^{*}1$ | $0^{*}1$ |
| $\rho^{(1)}_{21}$ | $1+1(\varepsilon+0)^{*}(\varepsilon+0)$ | $10^{*}$ |
| $\rho^{(1)}_{22}$ | $(\varepsilon+0)+1(\varepsilon+0)^{*}1$ | $\varepsilon+0+10^{*}1$ |
| $\rho^{(2)}_{11}$ | $\rho^{(1)}_{11}+\rho^{(1)}_{12}\bigl(\rho^{(1)}_{22}\bigr)^{*}\rho^{(1)}_{21}$ | $0^{*}+0^{*}1(0+10^{*}1)^{*}10^{*}$ |
受理状態は $q_1$ だけなので、$L(\mathcal A)=L(\rho^{(2)}_{11})$ である。簡単にするときは $L\bigl((\varepsilon+0)^{*}\bigr)=\{0\}^{*}$ と、$\varepsilon\in M$ なら $M^{*}=(M\setminus\{\varepsilon\})^{*}$ であることを使った。$\rho^{(1)}_{11}$ が $0^{*}$ になるのは、$q_1$ から $q_1$ へ途中で $q_1$ だけを通ってよい経路が $0$ の繰り返しだからである。
有限オートマトンから正規表現を得る別の方法として、各状態から受理状態へ至る経路のラベルの集まりを未知数とする方程式を解く方法がある(MSm24 §2.8.2、pp. 61–67)。鍵は次の命題である。
言語 $B,C\subset\Sigma^{*}$ について $\varepsilon\notin B$ とする。言語 $X\subset\Sigma^{*}$ が $X=BX\cup C$ を満たすのは、$X=B^{*}C$ のときちょうどである。
$X=B^{*}C$ が方程式を満たすこと:$B^{*}=\{\varepsilon\}\cup BB^{*}$ なので $B^{*}C=C\cup B(B^{*}C)$ である。
逆に $X=BX\cup C$ とする。$X\supset B^{*}C$:$n$ についての帰納法で $X\supset B^{n}C$ を示す。$n=0$ では $X\supset C$ である。$X\supset B^{n}C$ なら $X\supset BX\supset B^{n+1}C$ である。$X\subset B^{*}C$:$w\in X$ の長さについての帰納法で示す。$w\in C$ なら $w\in B^{*}C$ である。そうでなければ $w\in BX$ なので $w=bv$($b\in B$、$v\in X$)と書ける。$\varepsilon\notin B$ から $\lvert b\rvert\ge1$、$\lvert v\rvert< \lvert w\rvert$ であり、帰納法の仮定から $v\in B^{*}C$、よって $w\in BB^{*}C\subset B^{*}C$ である。$\square$
ex-kl-even-ones の $\mathcal A$ で、状態 $q_i$ から受理状態へ至る経路のラベルの全体を $X_i$ とする。$q_i$ からの経路は、長さ $0$($q_i$ が受理状態のときラベル $\varepsilon$)か、最初の遷移 $q_i\xrightarrow{a}q_j$ の後に $q_j$ からの経路が続くものなので
$$
X_1=\{0\}X_1\cup\{1\}X_2\cup\{\varepsilon\},\qquad X_2=\{0\}X_2\cup\{1\}X_1
$$
である。第 2 式に prop-kl-equation($B=\{0\}$、$C=\{1\}X_1$)を使うと $X_2=\{0\}^{*}\{1\}X_1$ であり、第 1 式に代入すると $X_1=L(0+10^{*}1)X_1\cup\{\varepsilon\}$ となる。$\varepsilon\notin L(0+10^{*}1)$ なので、再び命題により $X_1=L\bigl((0+10^{*}1)^{*}\bigr)$ である。$L(\mathcal A)=X_1$ なので、$(0+10^{*}1)^{*}$ は ex-kl-even-ones の $\rho^{(2)}_{11}$ と同じ言語を表す。
一般の有限オートマトンでも、状態の個数だけの方程式を 1 つずつ prop-kl-equation で消去すれば正規表現が得られる(MSm24 Lemma 2.8.3、p. 67。$\varepsilon$ 遷移がないとき、各方程式の係数は $\Sigma$ の元の和で $\varepsilon$ を含まない)。
有限オートマトンで受理される $\Sigma$ 上の言語の全体を $\mathcal R$ とする。$\mathcal R$ は、有限言語をすべて含み、和集合・連接・Kleene 閉包で閉じた言語のクラスのうち最小のものである。
thm-kl-main により、$\mathcal R$ は正規表現で表される言語の全体に等しい。有限言語 $\{w_1,\dots,w_m\}$ は、各 $w_i=a_1\cdots a_l$ を式 $a_1\cdots a_l$($l=0$ なら $\varepsilon$)として $w_1+\cdots+w_m$($m=0$ なら $\emptyset$)で表される。$L(\alpha)\cup L(\beta)=L(\alpha+\beta)$、$L(\alpha)L(\beta)=L(\alpha\beta)$、$L(\alpha)^{*}=L(\alpha^{*})$ なので、$\mathcal R$ は 3 つの演算で閉じている。逆に、有限言語を含み 3 つの演算で閉じたクラス $\mathcal C$ は、$\alpha$ の組み立てに関する帰納法により、すべての $L(\alpha)$ を含む($\emptyset$、$\{\varepsilon\}$、$\{a\}$ は有限言語である)。よって $\mathcal R\subset\mathcal C$ である。$\square$
正規言語 の記事の命題「補集合・共通部分・差に関する閉包性」により、$\mathcal R$ は補集合と共通部分でも閉じている。thm-kl-main を通して読むと、正規表現 $\alpha,\beta$ に対して $\Sigma^{*}\setminus L(\alpha)$ や $L(\alpha)\cap L(\beta)$ を表す正規表現がつねにあることになる。ただし、それは有限オートマトンを経由して作るもので、$\alpha,\beta$ から直接書き下す簡単な規則があるわけではない。
有限オートマトンは有限個の状態の間を移る機械であり、受理される文字列は状態のグラフの上の経路のラベルである。経路は「並べる」「どちらかを選ぶ」「同じところを回る」の 3 つの組み合わせで書き尽くせ、それぞれが連接・和・Kleene 閉包にあたる。逆に、3 つの演算は直列・並列・ループの部品として機械に組み込める。Kleene の定理は、この「経路の言葉」と「式の言葉」の対応を正確に述べたものである。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 状態の集合が有限 | 状態が無限個の「オートマトン」で $\{0^{m}1^{m}\mid m\ge0\}$ を受理するもの | 受理言語が正規表現で表されること |
| 正規表現が有限の記号列 | 無限個の項の和 $\sum_{m\ge0}0^{m}1^{m}$ | 表す言語が有限オートマトンで受理されること |
| 正規表現で Kleene 閉包が使える | 和と連接だけからなる式 | 受理言語が式で表されること |
| prop-kl-equation の $\varepsilon\notin B$ | $B=\{\varepsilon\}$、$C=\emptyset$ | 解が $B^{*}C$ だけであること |
まず $P:=\{0^{m}1^{m}\mid m\ge0\}$ はどの有限オートマトンでも受理されない。受理する有限オートマトンがあれば、有限オートマトン の命題「$\varepsilon$ 遷移の除去」により、同じ状態の個数 $k$ で $\varepsilon$ 遷移のないものがとれる。$0^{k}1^{k}$ の受理経路を $p_0,\dots,p_{2k}$ とすると、$0^{k}$ を読む間の状態 $p_0,\dots,p_k$ は $k+1$ 個なので $p_i=p_j$($i< j\le k$)となる。$p_i$ から $p_j$ までを除くと $0^{k-(j-i)}1^{k}$ の受理経路が残るが、これは $P$ に属さない。
1 行目:状態の集合を $\mathbb{N}\times\{\mathrm A,\mathrm B\}$ とし、遷移を $(m,\mathrm A)\xrightarrow{0}(m+1,\mathrm A)$、$(m+1,\mathrm A)\xrightarrow{1}(m,\mathrm B)$、$(m+1,\mathrm B)\xrightarrow{1}(m,\mathrm B)$、初期状態を $(0,\mathrm A)$、受理状態を $(0,\mathrm A),(0,\mathrm B)$ とする。$0$ を読むと数が増え、$1$ を読み始めると $0$ は読めなくなり、$1$ ごとに数が減るので、受理されるのは $0^{m}1^{m}$ の形の文字列だけであり、受理言語は $P$ である。$P$ は有限オートマトンで受理されないので、thm-kl-main により正規表現で表されない。
2 行目:無限個の項の和を許して表す言語を和集合で定めると、$P$ が表せる。どの言語も単元集合の可算個の和集合なので、この拡張ではすべての言語が表せる。$P$ は有限オートマトンで受理されない。
3 行目:和と連接だけからなる式の表す言語は、組み立てに関する帰納法で有限集合である。一方、状態 $q$ 1 つを初期状態かつ受理状態とし、遷移 $q\xrightarrow{0}q$ だけをもつ有限オートマトンの受理言語は無限集合 $\{0\}^{*}$ である。
4 行目:$X=\{\varepsilon\}X\cup\emptyset$ はすべての言語 $X$ について成り立つので、$X=\Sigma^{*}$ も解である。一方 $B^{*}C=\emptyset$ である。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する