Kleeneの定理(正規言語)

同義語:Kleeneの定理(正規言語)Kleene's theorem on regular languagesクリーネの定理(正規言語)

概要

Kleeneの定理(正規言語)(Kleene's theorem on regular languages)とは、アルファベット上の言語が有限オートマトンで受理されることと、正規表現で表されることが同値であるという定理である。正規表現からは式の組み立てに沿って有限オートマトンを組み立てられ、有限オートマトンからは、経路の途中で通ってよい状態を 1 つずつ増やす漸化式で正規表現が得られる。この定理により、有限オートマトンで受理される言語のクラスは、有限言語をすべて含み和集合・連接・Kleene 閉包で閉じた最小のクラスである。

$$\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}} $$

前提知識: 形式言語, 有限オートマトン, 正規表現, 構造的帰納法

文字列の集まり(言語)を記述する方法には、文字列を読んで受理・非受理を決める機械と、言語を組み立てる式とがある。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$ 遷移である。

  • 連接 $\alpha\beta$. 2 つを合わせて $f_\alpha\xrightarrow{\varepsilon}s_\beta$ を加え、初期状態を $s_\alpha$、受理状態を $f_\beta$ とする。$\mathcal A_\alpha$ の状態から $\mathcal A_\beta$ の状態へ移る遷移はこの 1 本だけで、逆向きの遷移はない。よって $s_\alpha$ から $f_\beta$ への経路は、$\mathcal A_\alpha$ の中の $s_\alpha$ から $f_\alpha$ への経路、加えた遷移、$\mathcal A_\beta$ の中の $s_\beta$ から $f_\beta$ への経路をこの順につないだものであり、ラベルは $uv$($u\in L(\alpha)$、$v\in L(\beta)$)である。逆にそのような $u,v$ から経路が作れる。
  • 和 $\alpha+\beta$. 新しい状態 $s,f$ と $s\xrightarrow{\varepsilon}s_\alpha$、$s\xrightarrow{\varepsilon}s_\beta$、$f_\alpha\xrightarrow{\varepsilon}f$、$f_\beta\xrightarrow{\varepsilon}f$ を加え、初期状態を $s$、受理状態を $f$ とする。$\mathcal A_\alpha$ と $\mathcal A_\beta$ の間を移る遷移はないので、$s$ から $f$ への経路は一方の部品の中の $s_\alpha$ から $f_\alpha$(または $s_\beta$ から $f_\beta$)への経路を通り、ラベルは $L(\alpha)\cup L(\beta)$ の元である。逆も成り立つ。
  • Kleene 閉包 $\alpha^{*}$. 新しい状態 $s,f$ と $s\xrightarrow{\varepsilon}s_\alpha$、$s\xrightarrow{\varepsilon}f$、$f_\alpha\xrightarrow{\varepsilon}f$、$f_\alpha\xrightarrow{\varepsilon}s_\alpha$ を加え、初期状態を $s$、受理状態を $f$ とする。$f$ から出る遷移はないので、$s$ から $f$ への経路は $f$ に着いたところで終わる。その経路は、$s\xrightarrow{\varepsilon}f$ だけか、$s\xrightarrow{\varepsilon}s_\alpha$ で入り、$f_\alpha\xrightarrow{\varepsilon}s_\alpha$ で $0$ 回以上戻り、$f_\alpha\xrightarrow{\varepsilon}f$ で出るものである。$\mathcal A_\alpha$ の状態から出る加えた遷移は $f_\alpha$ から出るものだけなので、加えた遷移で区切った各区間は $\mathcal A_\alpha$ の中の $s_\alpha$ から $f_\alpha$ への経路であり、ラベルは $L(\alpha)$ の元である。よって受理言語は $L(\alpha)^{*}$ である。逆に $u_1,\dots,u_r\in L(\alpha)$ の経路をつなげば $u_1\cdots u_r$ の経路ができる($r=0$ なら $s\xrightarrow{\varepsilon}f$)。
    どの場合も、新しい初期状態に入る遷移と新しい受理状態から出る遷移はなく、標準形である。状態の個数は、基礎では $2$、連接では増えず、和と Kleene 閉包では $2$ 増えるので、主張の上界が帰納法で従う。$\square$

有限オートマトンから正規表現へ

有限オートマトン $\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. $R^{(0)}_{ij}$ は、$(q_i,a,q_j)\in\Delta$ となる $a\in\Sigma\cup\{\varepsilon\}$ の全体に、$i=j$ のときは $\varepsilon$ を加えた有限集合である。
  2. $1\le k\le n$ について
    $$ R^{(k)}_{ij}=R^{(k-1)}_{ij}\cup R^{(k-1)}_{ik}\bigl(R^{(k-1)}_{kk}\bigr)^{*}R^{(k-1)}_{kj}. $$
  3. $L(\mathcal A)=\bigcup_{q_j\in F}R^{(n)}_{1j}$ である。

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 つの補題を合わせると、次の定理が得られる。

Kleene の定理

$\Sigma$ 上の言語 $L$ について、次は同値である。

  1. $L=L(\alpha)$ となる正規表現 $\alpha$ がある。
  2. $L=L(\mathcal A)$ となる有限オートマトン $\mathcal A$ がある。
2 つの補題をつなぐ

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 は決定性有限オートマトンについて同じ漸化式で示している)。

計算例

1 を偶数個含む文字列

$\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$ である。

補足

  • 歴史. 有限オートマトンと正規表現の同値は S. C. Kleene によって示された(HN14 §2.3.1、Example 27 の後の段落)。
  • 大きさ. lem-kl-to-automaton の構成では状態の個数は式の長さの $2$ 倍以下である。逆向きの lem-kl-paths の漸化式では、1 段ごとに式が前の段の式を $4$ つ含むので、得られる式の長さは状態の個数 $n$ について $4^{n}$ 程度の上界でしか押さえられない。
  • 代数的な見方. 正規表現 の命題「正規表現の代数法則」のような等式を公理として正規表現の等しさを論じる理論が Kleene代数 である。

関連項目

参考文献

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する