§E15.2正規言語

最終更新

正規表現は、有限個の構成規則によって言語を記述する。有限オートマトンは、有限個の状態と遷移によって言語を認識する。本記事の目的は、二つの記述方法が定める言語の範囲が一致することを証明することである。

証明は二方向に分かれる。正規表現からは、式の構成に関する帰納法によってε\varepsilon-NFA を作る。DFA からは、通過を許す中間状態を一つずつ増やし、二状態間の経路のラベルを正規表現で表す。前者では新しい状態の選び方が、後者では経路についての帰納不変量が証明の中心となる。

本記事は、先行記事の§E15.1 定義 3.1と§E15.1 系 4.2を用いる。以下では、遷移p→xqp\xrightarrow{x}qのラベルxxがε\varepsilonである場合、その遷移は入力を消費しないものとする。経路のラベルは、経路上のラベルを順に連結した後、すべてのε\varepsilonを除いて得られる語である。

先行記事の§E15.1 定義 1.4が定めた受理言語を用いて、本記事が扱う言語のクラスに名前を与える。

定義 1. 言語L⊆Σ∗L\subseteq\Sigma^*が正規言語 (regular language) であるとは、L=L(A)L=L(A)を満たす DFAAAが存在することをいう。

1 正規表現とその意味

二つの言語A,B⊆Σ∗A,B\subseteq\Sigma^*に対して、連接を

AB:={uv:u∈A, v∈B}AB:=\{uv:u\in A,\ v\in B\}

と定める。また、A0:={ε}A^0:=\{\varepsilon\}、An+1:=AnAA^{n+1}:=A^nAと定める。

定義 1.1. 有限アルファベットΣ\Sigma上の正規表現 (regular expression) と、正規表現rrが表す言語L(r)L(r)を、次の規則によって同時に帰納的に定める。

  1. ∅\emptysetは正規表現であり、L(∅)=∅L(\emptyset)=\emptysetである。
  2. ε\varepsilonは正規表現であり、L(ε)={ε}L(\varepsilon)=\{\varepsilon\}である。
  3. 各a∈Σa\in\Sigmaは正規表現であり、L(a)={a}L(a)=\{a\}である。
  4. r,sr,sが正規表現ならば、(r∣s)(r\mid s)は正規表現であり、L(r∣s)=L(r)∪L(s)L(r\mid s)=L(r)\cup L(s)である。
  5. r,sr,sが正規表現ならば、(rs)(rs)は正規表現であり、L(rs)=L(r)L(s)L(rs)=L(r)L(s)である。
  6. rrが正規表現ならば、(r∗)(r^*)は正規表現であり、L(r∗)=⋃n≥0L(r)nL(r^*)=\bigcup_{n\geq 0}L(r)^nである。

ある正規表現rrが存在してL=L(r)L=L(r)となる言語L⊆Σ∗L\subseteq\Sigma^*を、正規表現で表現可能な言語 (regular-expression representable language) という。

空集合を表す∅\emptysetと、空語だけを含む言語を表すε\varepsilonは異なる。さらに、Kleene スターは反復回数として00を許すため、任意の正規表現rrについてε∈L(r∗)\varepsilon\in L(r^*)が成り立つ。

例 1.2 (式を集合として展開する).r=(ab∣b)∗r=(ab\mid b)^*とする。このとき

ε,b,ab,bb,abb,abab\varepsilon,\quad b,\quad ab,\quad bb,\quad abb,\quad abab

はすべてL(r)L(r)に属する。例えば、abb=(ab)babb=(ab)bはL(ab∣b)L(ab\mid b)に属する二語の連接である。一方、aaはababまたはbbである語の有限個の連接として表すことができないため、a∉L(r)a\notin L(r)である。

プログラミング言語やテキスト検索で用いる正規表現は、本記事の正規表現と同じ名前をもつ。両者の関係を三点に分けて述べる。

注意 1.3 (実装で用いられる正規表現との関係). 記法の対応。 実装でも、和を |、連接を並置、Kleene スターを * と書く。加えて r+、r?、r{m,n}、[a-z]、. のような記法を用いる。有限アルファベットの上では、これらはそれぞれrr∗rr^*、(r∣ε)(r\mid\varepsilon)、有限個の連接の有限和、有限個の文字の有限和、Σ\Sigmaの全文字の有限和の略記である。したがって、この範囲の記法だけで書かれた式は、有限回の書き換えによって定義 1.1の正規表現へ戻すことができ、定理 4.1 (Kleene の定理)の対象になる。実装が式を有限オートマトンへ変換して照合する場合、その変換は命題 2.1と同じ構成である。

照合の意味。 本記事のL(r)L(r)は、語wwの全体がrrの表す言語に属するかどうかという所属関係である。実装の既定の動作は、多くの場合、入力のどこかに現れる部分語の探索であり、さらに最左最長などの規則によって一つの照合位置を選ぶ。ww全体の所属を問うには、実装側で行頭と行末の指定を補う必要がある。照合位置や照合個数を返す操作は所属関係とは別の問題であり、定理 4.1 (Kleene の定理)はそれらの一致まで主張しない。

後方参照。 (a*)b\1 のように、直前に照合した部分語そのものの再出現を要求する記法は、定義 1.1の構成規則に含まれない。したがって、この記法を含む式は本記事の正規表現ではなく、定理 4.1 (Kleene の定理)を適用することができない。この記法で書くことができる集合が正規言語であるかどうかは、本記事の結果からは従わない。個々の集合について判定するには、定理 5.3 (Myhill–Nerode の定理)のように、言語そのものに対する条件を確かめる必要がある。

2 正規表現から空語遷移付き非決定性有限オートマトンを構成する

正規表現からオートマトンを作る際には、部分式から得た状態集合を互いに素にする必要がある。状態名が重なる場合には、遷移関係を保ったまま状態名を変更する。状態名の変更は受理言語を変えない。

次の命題では、各正規表現rrに対して、初期状態uru_rと唯一の受理状態vrv_rをもつε\varepsilon-NFANrN_rを作る。構成と意味の一致を同じ帰納法で証明する。

命題 2.1. 任意の正規表現rrに対して、次の四条件を満たす有限なε\varepsilon-NFANrN_rが存在する。

  1. NrN_rの初期状態をuru_r、唯一の受理状態をvrv_rとすると、ur≠vru_r\neq v_rである。
  2. uru_rへ入る遷移は存在しない。
  3. vrv_rから出る遷移は存在しない。
  4. L(Nr)=L(r)L(N_r)=L(r)である。

証明. 正規表現の構成に関する帰納法を用いる。各段階で、すでに構成したオートマトンの状態集合は互いに素であるとする。以下で「新しい状態」とは、すでに用いたどの状態とも異なる状態を意味する。

空集合の場合。新しい二状態ur,vru_r,v_rを取り、遷移を一つも置かない。uru_rからvrv_rへ至る経路が存在しないため、L(Nr)=∅=L(∅)L(N_r)=\emptyset=L(\emptyset)である。

空語の場合。新しい二状態ur,vru_r,v_rを取り、遷移ur→εvru_r\xrightarrow{\varepsilon}v_rだけを置く。初期状態から受理状態へ至る経路のラベルはε\varepsilonだけであるから、L(Nr)={ε}=L(ε)L(N_r)=\{\varepsilon\}=L(\varepsilon)である。

一文字の場合。a∈Σa\in\Sigmaに対して新しい二状態ur,vru_r,v_rを取り、遷移ur→avru_r\xrightarrow{a}v_rだけを置く。このオートマトンはaaだけを受理するため、L(Nr)={a}=L(a)L(N_r)=\{a\}=L(a)である。

和の場合。r=(r1∣r2)r=(r_1\mid r_2)とする。帰納法の仮定から得たNr1,Nr2N_{r_1},N_{r_2}に、新しい二状態ur,vru_r,v_rを加える。各部分オートマトンの遷移に加えて、

ur→εur1,ur→εur2,vr1→εvr,vr2→εvru_r\xrightarrow{\varepsilon}u_{r_1},\qquad u_r\xrightarrow{\varepsilon}u_{r_2},\qquad v_{r_1}\xrightarrow{\varepsilon}v_r,\qquad v_{r_2}\xrightarrow{\varepsilon}v_r

を置く。

uru_rからvrv_rへ至る経路は、最初の遷移で二つの部分オートマトンのうち一方へ入り、その部分オートマトンの受理状態を経てvrv_rへ至る。二つの部分オートマトンの状態集合は互いに素であり、それぞれの受理状態から出る既存の遷移は存在しないため、経路が途中で一方から他方へ移ることはない。したがって

L(Nr)=L(Nr1)∪L(Nr2)=L(r1)∪L(r2)=L(r1∣r2)L(N_r)=L(N_{r_1})\cup L(N_{r_2}) =L(r_1)\cup L(r_2)=L(r_1\mid r_2)

である。

連接の場合。r=(r1r2)r=(r_1r_2)とする。Nr1,Nr2N_{r_1},N_{r_2}に新しい二状態ur,vru_r,v_rを加え、

ur→εur1,vr1→εur2,vr2→εvru_r\xrightarrow{\varepsilon}u_{r_1},\qquad v_{r_1}\xrightarrow{\varepsilon}u_{r_2},\qquad v_{r_2}\xrightarrow{\varepsilon}v_r

を置く。

uru_rからvrv_rへ至る任意の経路は、Nr1N_{r_1}の初期状態から受理状態へ至った後に、Nr2N_{r_2}の初期状態から受理状態へ至る。したがって、受理経路のラベルはx∈L(Nr1)x\in L(N_{r_1})とy∈L(Nr2)y\in L(N_{r_2})の連接xyxyである。逆に、そのような二つの受理経路を三本の新しいε\varepsilon遷移によってつなぐと、ラベルxyxyの受理経路を得る。ゆえに

L(Nr)=L(Nr1)L(Nr2)=L(r1)L(r2)=L(r1r2)L(N_r)=L(N_{r_1})L(N_{r_2})=L(r_1)L(r_2)=L(r_1r_2)

である。

Kleene スターの場合。r=(r1∗)r=(r_1^*)とする。Nr1N_{r_1}に新しい二状態ur,vru_r,v_rを加え、

ur→εvr,ur→εur1,vr1→εur1,vr1→εvru_r\xrightarrow{\varepsilon}v_r,\qquad u_r\xrightarrow{\varepsilon}u_{r_1},\qquad v_{r_1}\xrightarrow{\varepsilon}u_{r_1},\qquad v_{r_1}\xrightarrow{\varepsilon}v_r

を置く。

最初の遷移としてur→εvru_r\xrightarrow{\varepsilon}v_rを選ぶ経路のラベルはε\varepsilonである。この直接の遷移を選ばない受理経路はNr1N_{r_1}を有限回通過し、各通過の後に次の通過を始めるかvrv_rへ移る。したがって、Nr1N_{r_1}をnn回通過する受理経路のラベルはL(Nr1)nL(N_{r_1})^nに属する。逆に、任意のn≥0n\geq 0とx1,…,xn∈L(Nr1)x_1,\ldots,x_n\in L(N_{r_1})に対して、各xix_iを読む受理経路をvr1→εur1v_{r_1}\xrightarrow{\varepsilon}u_{r_1}で順につなぐと、ラベルx1⋯xnx_1\cdots x_nの受理経路を得る。したがって

L(Nr)=⋃n≥0L(Nr1)n=⋃n≥0L(r1)n=L(r1∗)L(N_r)=\bigcup_{n\geq 0}L(N_{r_1})^n =\bigcup_{n\geq 0}L(r_1)^n=L(r_1^*)

である。

いずれの構成でもuru_rとvrv_rは異なる新しい状態であり、uru_rへ入る遷移とvrv_rから出る遷移を置いていない。各段階で加える状態と遷移の個数は有限である。以上により、四条件がすべて成り立つ。▨

命題 2.1が与えるε\varepsilon-NFA に§E15.1 系 4.2を適用すると、同じ言語を受理する DFA が得られる。したがって、正規表現で表現可能な言語は正規言語である。

3 DFA から正規表現を構成する

逆方向では、DFA の状態を

Q={q1,…,qn}Q=\{q_1,\ldots,q_n\}

と番号づける。二状態qi,qjq_i,q_jと0≤k≤n0\leq k\leq nに対して、始点がqiq_i、終点がqjq_jであり、中間状態が{q1,…,qk}\{q_1,\ldots,q_k\}に属する経路のラベルを表す正規表現Rij(k)R_{ij}^{(k)}を構成する。

k=0k=0では、中間状態を一つももたない経路だけを扱う。そのような経路は、長さ00の経路か一本の遷移である。Eij:={a∈Σ:δ(qi,a)=qj}E_{ij}:=\{a\in\Sigma:\delta(q_i,a)=q_j\}とおき、空な有限和を∅\emptysetと解釈して

Rij(0):={(∣a∈Eija)∣ε,i=j,∣a∈Eija,i≠jR_{ij}^{(0)} := \begin{cases} \left(\mathop{\mid}_{a\in E_{ij}}a\right)\mid\varepsilon,&i=j,\\ \mathop{\mid}_{a\in E_{ij}}a,&i\neq j \end{cases}

と定める。ここで∣\mathop{\mid}は正規表現の有限和を表す。

1≤k≤n1\leq k\leq nに対して、再帰的に

Rij(k):=(Rij(k−1)∣Rik(k−1)(Rkk(k−1))∗Rkj(k−1))R_{ij}^{(k)} := \left( R_{ij}^{(k-1)} \mathbin{\mid} R_{ik}^{(k-1)} \left(R_{kk}^{(k-1)}\right)^* R_{kj}^{(k-1)} \right)

と定める。この式の二項は、経路がqkq_kを中間状態として通らない場合と、少なくとも一度通る場合にそれぞれ対応する。Σ\SigmaとQQは有限であり、再帰はnn段階で終了するため、すべてのRij(k)R_{ij}^{(k)}は有限な正規表現である。

補題 3.1. 各0≤k≤n0\leq k\leq nと各1≤i,j≤n1\leq i,j\leq nについて、L(Rij(k))L(R_{ij}^{(k)})は、qiq_iからqjq_jへ至り、すべての中間状態が{q1,…,qk}\{q_1,\ldots,q_k\}に属する経路のラベル全体に等しい。

証明.kkに関する帰納法を用いる。

k=0k=0の場合、中間状態をもたない経路は長さ00または長さ11である。長さ00の経路がqiq_iからqjq_jへ至るのはi=ji=jの場合に限り、そのラベルはε\varepsilonである。長さ11の経路のラベルは、δ(qi,a)=qj\delta(q_i,a)=q_jを満たす文字aaである。したがって、該当するラベル全体はL(Rij(0))L(R_{ij}^{(0)})に等しい。

k−1k-1について主張が成り立つと仮定する。qiq_iからqjq_jへ至り、中間状態が{q1,…,qk}\{q_1,\ldots,q_k\}に属する経路π\piを取る。

qkq_kがπ\piの中間状態として現れない場合、帰納法の仮定により、π\piのラベルはL(Rij(k−1))L(R_{ij}^{(k-1)})に属する。

qkq_kがπ\piの中間状態として現れる場合、π\piをqkq_kが現れる各位置で切断する。最初の部分はqiq_iからqkq_kへ至り、最後の部分はqkq_kからqjq_jへ至る。両者の間には、qkq_kからqkq_kへ戻る経路が有限個並ぶ。切断後の各経路はqkq_kを中間状態として含まず、他の中間状態は{q1,…,qk−1}\{q_1,\ldots,q_{k-1}\}に属する。帰納法の仮定により、最初の部分、各中間部分、最後の部分のラベルはそれぞれ

L(Rik(k−1)),L(Rkk(k−1)),L(Rkj(k−1))L(R_{ik}^{(k-1)}),\qquad L(R_{kk}^{(k-1)}),\qquad L(R_{kj}^{(k-1)})

に属する。よって、π\piのラベルは

L(Rik(k−1)(Rkk(k−1))∗Rkj(k−1))L\left( R_{ik}^{(k-1)} \left(R_{kk}^{(k-1)}\right)^* R_{kj}^{(k-1)} \right)

に属する。以上により、対象となる経路のすべてのラベルがL(Rij(k))L(R_{ij}^{(k)})に属する。

逆に、L(Rij(k−1))L(R_{ij}^{(k-1)})に属する語は、帰納法の仮定から、許される中間状態が{q1,…,qk−1}\{q_1,\ldots,q_{k-1}\}に属する経路のラベルである。また、

L(Rik(k−1)(Rkk(k−1))∗Rkj(k−1))L\left( R_{ik}^{(k-1)} \left(R_{kk}^{(k-1)}\right)^* R_{kj}^{(k-1)} \right)

に属する語は、帰納法の仮定が与える一つのqiq_iからqkq_kへの経路、有限個のqkq_kからqkq_kへの経路、および一つのqkq_kからqjq_jへの経路を連結して得られる経路のラベルである。連結後の経路の中間状態は{q1,…,qk}\{q_1,\ldots,q_k\}に属する。したがって、L(Rij(k))L(R_{ij}^{(k)})の各語は主張にある経路のラベルである。二つの包含が成り立つため、帰納不変量が成立する。▨

一般化経路表現をすべての状態まで拡張すると、DFA の全経路を正規表現で記述することができる。

命題 3.2. 任意の DFAA=(Q,Σ,δ,qℓ,F)A=(Q,\Sigma,\delta,q_\ell,F)に対して、L(rA)=L(A)L(r_A)=L(A)を満たす正規表現rAr_Aが存在する。

証明.Q={q1,…,qn}Q=\{q_1,\ldots,q_n\}と番号づけ、補題 3.1の正規表現を構成する。F=∅F=\emptysetならばrA:=∅r_A:=\emptysetとする。F≠∅F\neq\emptysetならば

rA:=∣qj∈FRℓj(n)r_A:=\mathop{\mid}_{q_j\in F}R_{\ell j}^{(n)}

と定める。

すべての状態が{q1,…,qn}\{q_1,\ldots,q_n\}に属するため、補題 3.1により、L(Rℓj(n))L(R_{\ell j}^{(n)})はqℓq_\ellからqjq_jへ至るすべての経路のラベル全体である。DFAAAが語wwを受理することは、qℓq_\ellからある受理状態qj∈Fq_j\in Fへ至るラベルwwの経路が存在することと同値である。したがって

L(A)=⋃qj∈FL(Rℓj(n))=L(rA)L(A) =\bigcup_{q_j\in F}L(R_{\ell j}^{(n)}) =L(r_A)

である。F=∅F=\emptysetの場合にも両辺は空集合である。▨

4 Kleene の定理

二方向の構成と有限オートマトンの同値性を合わせると、言語の三つの特徴づけを得る。

定理 4.1 (Kleene の定理). 有限アルファベットΣ\Sigma上の言語L⊆Σ∗L\subseteq\Sigma^*について、次の三条件は同値である。

  1. LLは正規表現で表現可能である。
  2. LLを受理するε\varepsilon-NFA が存在する。
  3. LLは正規言語である(定義 1)。

証明.(1)⇒\Rightarrow(2)は命題 2.1によって従う。(2)⇒\Rightarrow(3)は、§E15.1 系 4.2によって従う。(3)⇒\Rightarrow(1)は命題 3.2によって従う。したがって三条件は同値である。▨

Kleene の定理は、正規表現と有限オートマトンの一方を他方へ有限回の操作で変換する。定理は変換後の記述量が小さいことまでは主張しない。部分集合構成では状態数が指数的に増える場合があり、 DFA から得られる正規表現も長くなる場合がある。

5 正規言語の限界

ここまでの結果は、三つの記述方法が同じ言語の範囲を定めることを述べる。その範囲がすべての言語を尽くすかどうかは、まだ述べていない。ここでは、与えられた言語が正規であるための必要十分条件を言語そのものの言葉で与え、正規でない言語を一つ示す。

有限オートマトンが語xxを読み終えた時点で保持している情報は、状態一つである。以降の入力zzに対する受理・不受理はその状態だけで決まるから、後続の語に対する振る舞いが一致する二つの語を同一視する同値関係を考えることができる。

定義 5.1. 言語L⊆Σ∗L\subseteq\Sigma^*と語x,y∈Σ∗x,y\in\Sigma^*に対して、

x∼Ly:⟺すべての z∈Σ∗ について (xz∈L  ⟺  yz∈L)x\sim_L y \quad:\Longleftrightarrow\quad \text{すべての }z\in\Sigma^*\text{ について } (xz\in L\iff yz\in L)

と定める。∼L\sim_LはΣ∗\Sigma^*上の同値関係である。商集合Σ∗/∼L\Sigma^*/{\sim_L}の濃度をLLの指数 (index) という。

∼L\sim_Lが反射的、対称的、推移的であることは、定義に現れる同値(xz∈L  ⟺  yz∈L)(xz\in L\iff yz\in L)がそれぞれ反射的、対称的、推移的であることから直ちに従う。

補題 5.2.x∼Lyx\sim_L yかつa∈Σa\in\Sigmaならばxa∼Lyaxa\sim_L yaである。

証明.z∈Σ∗z\in\Sigma^*を任意に取る。az∈Σ∗az\in\Sigma^*に対してx∼Lyx\sim_L yを適用すると、x(az)∈Lx(az)\in Lとy(az)∈Ly(az)\in Lは同値である。x(az)=(xa)zx(az)=(xa)zかつy(az)=(ya)zy(az)=(ya)zであるから、(xa)z∈L(xa)z\in Lと(ya)z∈L(ya)z\in Lは同値である。zzは任意であったからxa∼Lyaxa\sim_L yaである。▨

右不変性により、同値類の上で一文字の遷移を定めることができる。これが次の定理の後半の構成である。

定理 5.3 (Myhill–Nerode の定理). 言語L⊆Σ∗L\subseteq\Sigma^*について、LLが正規言語であることと、LLの指数が有限であることは同値である。

証明.LLが正規であるとする。L=L(A)L=L(A)となる DFAA=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)を取り、§E15.1 定義 1.2の拡張遷移関数δ^\widehat{\delta}を用いてφ:Σ∗→Q\varphi:\Sigma^*\to Qをφ(x):=δ^(q0,x)\varphi(x):=\widehat{\delta}(q_0,x)で定める。

φ(x)=φ(y)\varphi(x)=\varphi(y)と仮定する。語の長さに関する帰納法により、任意のz∈Σ∗z\in\Sigma^*についてδ^(q0,xz)=δ^(φ(x),z)\widehat{\delta}(q_0,xz)=\widehat{\delta}(\varphi(x),z)が成り立つ。実際、z=εz=\varepsilonでは両辺ともφ(x)\varphi(x)であり、z=z′az=z'aでは

δ^(q0,xz′a)=δ(δ^(q0,xz′),a)=δ(δ^(φ(x),z′),a)=δ^(φ(x),z′a)\widehat{\delta}(q_0,xz'a) =\delta\bigl(\widehat{\delta}(q_0,xz'),a\bigr) =\delta\bigl(\widehat{\delta}(\varphi(x),z'),a\bigr) =\widehat{\delta}(\varphi(x),z'a)

となる。したがって、任意のzzについて

δ^(q0,xz)=δ^(φ(x),z)=δ^(φ(y),z)=δ^(q0,yz)\widehat{\delta}(q_0,xz)=\widehat{\delta}(\varphi(x),z) =\widehat{\delta}(\varphi(y),z)=\widehat{\delta}(q_0,yz)

であり、§E15.1 定義 1.4によりxz∈Lxz\in Lとyz∈Lyz\in Lは同値である。よってx∼Lyx\sim_L yである。

いま、φ\varphiの像φ(Σ∗)⊆Q\varphi(\Sigma^*)\subseteq QからΣ∗/∼L\Sigma^*/{\sim_L}への対応φ(x)↦[x]\varphi(x)\mapsto[x]を考える。前段落により、この対応は代表元の取り方によらず定まる。また、各同値類[x][x]はφ(x)\varphi(x)の像であるから、この対応は全射である。ゆえに

∣Σ∗/∼L∣≤∣φ(Σ∗)∣≤∣Q∣<∞\bigl|\Sigma^*/{\sim_L}\bigr|\le\bigl|\varphi(\Sigma^*)\bigr|\le|Q|<\infty

であり、指数は有限である。

逆に、LLの指数が有限であるとする。xxの同値類を[x][x]と書き、

QL:=Σ∗/∼L,qL:=[ε],δL([x],a):=[xa],FL:={[x]:x∈L}Q_L:=\Sigma^*/{\sim_L},\qquad q_L:=[\varepsilon],\qquad \delta_L([x],a):=[xa],\qquad F_L:=\{[x]:x\in L\}

と定める。δL\delta_Lが代表元の取り方によらないことは補題 5.2による。FLF_Lが代表元の取り方によらないことは、x∼Lyx\sim_L yにz=εz=\varepsilonを適用するとx∈Lx\in Lとy∈Ly\in Lが同値になることによる。仮定よりQLQ_Lは有限であるから、AL:=(QL,Σ,δL,qL,FL)A_L:=(Q_L,\Sigma,\delta_L,q_L,F_L)は DFA である。

語の長さに関する帰納法によりδL^(qL,w)=[w]\widehat{\delta_L}(q_L,w)=[w]である。実際、w=εw=\varepsilonでは両辺が[ε][\varepsilon]であり、w=w′aw=w'aでは

δL^(qL,w′a)=δL(δL^(qL,w′),a)=δL([w′],a)=[w′a]\widehat{\delta_L}(q_L,w'a) =\delta_L\bigl(\widehat{\delta_L}(q_L,w'),a\bigr) =\delta_L([w'],a)=[w'a]

である。したがって

w∈L(AL)  ⟺  [w]∈FL  ⟺  w∈Lw\in L(A_L) \iff[w]\in F_L \iff w\in L

となる。ここで二つ目の同値は、[w]∈FL[w]\in F_Lが「あるx∈Lx\in Lについてw∼Lxw\sim_L x」を意味し、その場合にz=εz=\varepsilonを取ればw∈Lw\in Lが従うことによる。よってL=L(AL)L=L(A_L)であり、LLは正規言語である。▨

証明の前半は、状態数と指数の間の不等式をそのまま与える。

系 5.4. 正規言語LLを受理する任意の DFA の状態数は、LLの指数以上である。また、定理 5.3 (Myhill–Nerode の定理)の構成が与える DFAALA_Lの状態数は、LLの指数にちょうど等しい。

証明. 前半は定理 5.3 (Myhill–Nerode の定理)の証明前半で示した不等式∣Σ∗/∼L∣≤∣Q∣|\Sigma^*/{\sim_L}|\le|Q|そのものである。後半はALA_Lの状態集合がΣ∗/∼L\Sigma^*/{\sim_L}であることによる。▨

指数が無限であることを示せば、その言語が正規でないことが従う。二つの語が異なる同値類に属することは、一つの後続語を挙げれば確かめることができる。

命題 5.5.Σ={a,b}\Sigma=\{a,b\}とする。言語

L={anbn:n≥0}L=\{a^nb^n:n\ge 0\}

は正規言語ではない。

証明.i≠ji\ne jである非負整数i,ji,jを取り、後続語としてz=biz=b^iを選ぶ。aibi∈La^ib^i\in Lである一方、ajbia^jb^iはj≠ij\ne iであるからLLに属さない。したがってai̸∼Laja^i\not\sim_L a^jである。

ゆえにa0,a1,a2,…a^0,a^1,a^2,\ldotsは互いに異なる∼L\sim_Lの同値類に属し、LLの指数は無限である。定理 5.3 (Myhill–Nerode の定理)により、LLは正規言語ではない。▨

6 ポンピング補題

定理 5.3 (Myhill–Nerode の定理)は必要十分条件であるから、非正規性の証明にはこれで足りる。一方、状態の有限性から直接得られる必要条件も広く用いられる。次の記事では、文脈自由言語に対する同種の必要条件を証明する。

定理 6.1 (正規言語のポンピング補題).LLを正規言語とする。このとき、LLだけに依存する定数N≥1N\ge 1が存在して、∣w∣≥N|w|\ge Nを満たす任意のw∈Lw\in Lは

w=xyz(x,y,z∈Σ∗)w=xyz \qquad(x,y,z\in\Sigma^*)

の形に分解することができ、次の三条件を満たす。

  1. ∣xy∣≤N|xy|\le N。
  2. y≠εy\ne\varepsilon。
  3. すべてのi≥0i\ge 0についてxyiz∈Lxy^iz\in L。

証明.定義 1により、L=L(A)L=L(A)となる DFAA=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)を取る。N:=∣Q∣N:=|Q|と置く。QQは空でない有限集合であるからN≥1N\ge 1である。

w=a1a2⋯am∈Lw=a_1a_2\cdots a_m\in Lがm≥Nm\ge Nを満たすとする。0≤k≤N0\le k\le Nに対して

pk:=δ^(q0,a1⋯ak)p_k:=\widehat{\delta}(q_0,a_1\cdots a_k)

と置く。p0,…,pNp_0,\ldots,p_NはQQの元N+1N+1個であり、∣Q∣=N|Q|=Nであるから、鳩の巣原理によりpj=pkp_j=p_kとなる0≤j<k≤N0\le j<k\le Nが存在する。

x:=a1⋯aj,y:=aj+1⋯ak,z:=ak+1⋯amx:=a_1\cdots a_j,\qquad y:=a_{j+1}\cdots a_k,\qquad z:=a_{k+1}\cdots a_m

と置く。∣xy∣=k≤N|xy|=k\le Nであるから条件 (a)が成り立ち、j<kj<kであるからy≠εy\ne\varepsilonであり条件 (b)が成り立つ。

条件 (c)を示す。§E15.1 補題 1.3により

δ^(pj,y)=δ^(δ^(q0,x),y)=δ^(q0,xy)=pk=pj\widehat{\delta}(p_j,y) =\widehat{\delta}\bigl(\widehat{\delta}(q_0,x),y\bigr) =\widehat{\delta}(q_0,xy)=p_k=p_j

である。したがって、iiに関する帰納法により、すべてのi≥0i\ge 0についてδ^(pj,yi)=pj\widehat{\delta}(p_j,y^i)=p_jが成り立つ。実際、i=0i=0ではy0=εy^0=\varepsilonでありδ^(pj,ε)=pj\widehat{\delta}(p_j,\varepsilon)=p_jである。iiで成り立つとすると、再び§E15.1 補題 1.3によりδ^(pj,yi+1)=δ^(δ^(pj,yi),y)=δ^(pj,y)=pj\widehat{\delta}(p_j,y^{i+1})=\widehat{\delta}(\widehat{\delta}(p_j,y^i),y)=\widehat{\delta}(p_j,y)=p_jである。

同じ補題を二度用いると、任意のi≥0i\ge 0について

δ^(q0,xyiz)=δ^(δ^(pj,yi),z)=δ^(pj,z)=δ^(δ^(q0,xy),z)=δ^(q0,w)\widehat{\delta}(q_0,xy^iz) =\widehat{\delta}\bigl(\widehat{\delta}(p_j,y^i),z\bigr) =\widehat{\delta}(p_j,z) =\widehat{\delta}\bigl(\widehat{\delta}(q_0,xy),z\bigr) =\widehat{\delta}(q_0,w)

を得る。w∈L=L(A)w\in L=L(A)であるからδ^(q0,w)∈F\widehat{\delta}(q_0,w)\in Fであり、§E15.1 定義 1.4によりxyiz∈Lxy^iz\in Lである。▨

注意 6.2 (二つの手段の関係).定理 6.1 (正規言語のポンピング補題)は正規言語が満たす必要条件を述べる。条件を満たすことから正規性を結論することはできない。一方定理 5.3 (Myhill–Nerode の定理)は必要十分条件であるから、非正規性を示すことにも正規性を示すことにも用いることができる。本記事では、指数が無限であることを示す命題 5.5の証明が前者の例である。

命題 5.5は、有限オートマトンの表現力に真の限界があることを示す。この限界を文脈自由文法との比較で述べるには、次の記事の二つの結果を用いる。§E15.3 命題 5.1は、正規言語の全体が文脈自由言語の全体に含まれることを示す。命題 5.5とこのLLを生成する文法の存在(§E15.3 例 1.4 (a の並びの後に同数の b が続く言語))は、この包含が真であることを示す。以上により、正規言語の全体は文脈自由言語の全体に真に含まれる。

注意 7.1 (構成で区別する事項). 本記事の構成では、次の事項を区別する必要がある。

  • ∅\emptysetは語を一つも含まない言語を表し、ε\varepsilonは空語だけを含む言語を表す。
  • L(r∗)L(r^*)はL(r)0={ε}L(r)^0=\{\varepsilon\}を含む。スターのオートマトンに置くur→εvru_r\xrightarrow{\varepsilon}v_rは、反復回数00に対応する。
  • 和、連接、スターの構成では、部分オートマトンの状態集合を互いに素にし、外側の初期状態と受理状態を新しい状態として取る。状態を無条件に共有すると、意図しない経路が生じる場合がある。
  • 一般化経路表現の上付き添字kkは経路の長さの上限ではなく、使用を許す中間状態の範囲を表す。
  • 有限アルファベットと有限状態性により、Rij(0)R_{ij}^{(0)}の和とrAr_Aの受理状態に関する和は有限な正規表現になる。
  • ∼L\sim_Lの同値類は語の集合であり、DFA の状態そのものではない。定理 5.3 (Myhill–Nerode の定理)の構成では同値類を状態として採用するが、一般の DFA では複数の状態が同じ同値類に対応する場合がある。
  • 指数が無限であることを示すには、互いに異なる同値類に属する語の無限列を一つ挙げれば足りる。すべての語の対を調べる必要はない。

8 演習

問題 8.1.

  1. 正規表現∅∗\emptyset^*が表す言語を求め、命題 2.1のスターの構成が同じ言語を受理する理由を説明せよ。
  2. 連接r1r2r_1r_2のために構成したε\varepsilon-NFA の任意の受理経路が、Nr1N_{r_1}の受理経路とNr2N_{r_2}の受理経路へ分解されることを、初期状態と受理状態に関する四条件を用いて証明せよ。
  3. アルファベットΣ={a}\Sigma=\{a\}上で、二状態q0,q1q_0,q_1をもち、q0q_0を初期状態、q1q_1を唯一の受理状態とし、文字aaを読むたびに状態を入れ替える DFA を考える。この DFA の受理言語を表す正規表現を一つ与え、語の長さを用いて正しさを証明せよ。
  4. 補題 3.1の帰納段階で、経路がqkq_kをちょうどm≥1m\geq 1回中間状態として通る場合に、経路のラベルがL(Rik(k−1)(Rkk(k−1))∗Rkj(k−1))L(R_{ik}^{(k-1)}(R_{kk}^{(k-1)})^*R_{kj}^{(k-1)})に属することを、切断後の経路の本数を明示して証明せよ。
  5. Σ={a,b}\Sigma=\{a,b\}上で、aaの個数が偶数である語全体の言語EEについて、∼E\sim_Eの同値類をすべて決定し、指数を求めよ。
  6. Σ={a,b}\Sigma=\{a,b\}上の回文全体P={w∈Σ∗:w=wR}P=\{w\in\Sigma^*:w=w^{\mathrm{R}}\}が正規言語でないことを、定理 5.3 (Myhill–Nerode の定理)を用いて証明せよ。ここでwRw^{\mathrm{R}}はwwの文字を逆順に並べた語である。
解答 (演習の要点).
  1. 任意の言語AAについてA0={ε}A^0=\{\varepsilon\}であり、∅n=∅\emptyset^n=\emptysetがすべてのn≥1n\geq 1について成り立つ。したがってL(∅∗)={ε}L(\emptyset^*)=\{\varepsilon\}である。スターの構成では、部分オートマトンへ入らずに新しい初期状態から新しい受理状態へ進むε\varepsilon遷移だけが受理経路となる。
  2. 新しい初期状態から出る遷移はur1u_{r_1}への遷移だけである。Nr1N_{r_1}からNr2N_{r_2}へ移る遷移はvr1→εur2v_{r_1}\xrightarrow{\varepsilon}u_{r_2}だけであり、Nr1N_{r_1}の初期状態へ入る遷移と受理状態から出る既存の遷移は存在しない。全体の受理状態へ入る遷移はvr2→εvrv_{r_2}\xrightarrow{\varepsilon}v_rだけであるため、受理経路はNr2N_{r_2}の受理状態へ至る必要がある。したがって任意の受理経路は二つの部分オートマトンの受理経路へ一意に分解される。
  3. 一例はa(aa)∗a(aa)^*である。DFA は長さが奇数である語だけをq1q_1で読み終える。一方、L(a(aa)∗)={a2m+1:m≥0}L(a(aa)^*)=\{a^{2m+1}:m\geq 0\}であるため、二つの言語は一致する。
  4. qkq_kが現れるmm個の中間位置で経路を切ると、最初のqiq_iからqkq_kへの経路が一つ、qkq_kからqkq_kへの経路がm−1m-1個、最後のqkq_kからqjq_jへの経路が一つ得られる。各経路はqkq_kを中間状態として含まないため、帰納法の仮定を適用することができる。各ラベルを順に連接すると、主張された言語への所属を得る。
  5. 同値類は二つであり、指数は22である。aaの個数が偶数である語全体をX0X_0、奇数である語全体をX1X_1と置く。x,yx,yのaaの個数の偶奇が一致するなら、任意のzzについてxzxzとyzyzのaaの個数の偶奇も一致するためx∼Eyx\sim_E yである。偶奇が異なるなら、z=εz=\varepsilonを取ると一方だけがEEに属するためx̸∼Eyx\not\sim_E yである。
  6. i≠ji\ne jに対してx=aibx=a^ib、y=ajby=a^jb、z=aiz=a^iと置く。xz=aibaixz=a^iba^iは回文でありPPに属する。一方yz=ajbaiyz=a^jba^iが回文であるのはi=ji=jの場合に限るため、yz∉Pyz\notin Pである。したがってaib̸∼Pajba^ib\not\sim_P a^jbであり、a0b,a1b,a2b,…a^0b,a^1b,a^2b,\ldotsは互いに異なる同値類に属する。指数は無限であるから、定理 5.3 (Myhill–Nerode の定理)によりPPは正規言語ではない。

▨

参考文献

  1. John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2007.正規表現と有限オートマトンの相互変換を参考にした。
  2. Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, Boston, 2013.正規表現から有限オートマトンへの帰納構成と、一般化非決定性有限オートマトンによる逆向きの構成を参考にした。
  3. Dexter C. Kozen, Automata and Computability, Springer, 1997.Nerode 同値関係、Myhill–Nerode の定理、および同値類による最小オートマトンの構成を参考にした。

前提記事