1 正規表現とその意味
二つの言語A,B⊆Σ∗に対して、連接を
AB:={uv:u∈A, v∈B}
と定める。また、A0:={ε}、An+1:=AnAと定める。
定義 1.1. 有限アルファベットΣ上の正規表現 (regular expression) と、正規表現rが表す言語L(r)を、次の規則によって同時に帰納的に定める。
- ∅は正規表現であり、L(∅)=∅である。
- εは正規表現であり、L(ε)={ε}である。
- 各a∈Σは正規表現であり、L(a)={a}である。
- r,sが正規表現ならば、(r∣s)は正規表現であり、L(r∣s)=L(r)∪L(s)である。
- r,sが正規表現ならば、(rs)は正規表現であり、L(rs)=L(r)L(s)である。
- rが正規表現ならば、(r∗)は正規表現であり、L(r∗)=⋃n≥0L(r)nである。
ある正規表現rが存在してL=L(r)となる言語L⊆Σ∗を、正規表現で表現可能な言語 (regular-expression representable language)
という。
空集合を表す∅と、空語だけを含む言語を表すεは異なる。さらに、Kleene スターは反復回数として0を許すため、任意の正規表現rについてε∈L(r∗)が成り立つ。
例 1.2 (式を集合として展開する).r=(ab∣b)∗とする。このとき
ε,b,ab,bb,abb,ababはすべてL(r)に属する。例えば、abb=(ab)bはL(ab∣b)に属する二語の連接である。一方、aはabまたはbである語の有限個の連接として表すことができないため、a∈/L(r)である。
プログラミング言語やテキスト検索で用いる正規表現は、本記事の正規表現と同じ名前をもつ。両者の関係を三点に分けて述べる。
2 正規表現から空語遷移付き非決定性有限オートマトンを構成する
正規表現からオートマトンを作る際には、部分式から得た状態集合を互いに素にする必要がある。状態名が重なる場合には、遷移関係を保ったまま状態名を変更する。状態名の変更は受理言語を変えない。
次の命題では、各正規表現rに対して、初期状態urと唯一の受理状態vrをもつε-NFANrを作る。構成と意味の一致を同じ帰納法で証明する。
命題 2.1. 任意の正規表現rに対して、次の四条件を満たす有限なε-NFANrが存在する。
- Nrの初期状態をur、唯一の受理状態をvrとすると、ur=vrである。
- urへ入る遷移は存在しない。
- vrから出る遷移は存在しない。
- L(Nr)=L(r)である。
証明. 正規表現の構成に関する帰納法を用いる。各段階で、すでに構成したオートマトンの状態集合は互いに素であるとする。以下で「新しい状態」とは、すでに用いたどの状態とも異なる状態を意味する。
空集合の場合。新しい二状態ur,vrを取り、遷移を一つも置かない。urからvrへ至る経路が存在しないため、L(Nr)=∅=L(∅)である。
空語の場合。新しい二状態ur,vrを取り、遷移urεvrだけを置く。初期状態から受理状態へ至る経路のラベルはεだけであるから、L(Nr)={ε}=L(ε)である。
一文字の場合。a∈Σに対して新しい二状態ur,vrを取り、遷移uravrだけを置く。このオートマトンはaだけを受理するため、L(Nr)={a}=L(a)である。
和の場合。r=(r1∣r2)とする。帰納法の仮定から得たNr1,Nr2に、新しい二状態ur,vrを加える。各部分オートマトンの遷移に加えて、
urεur1,urεur2,vr1εvr,vr2εvrを置く。
urからvrへ至る経路は、最初の遷移で二つの部分オートマトンのうち一方へ入り、その部分オートマトンの受理状態を経てvrへ至る。二つの部分オートマトンの状態集合は互いに素であり、それぞれの受理状態から出る既存の遷移は存在しないため、経路が途中で一方から他方へ移ることはない。したがって
L(Nr)=L(Nr1)∪L(Nr2)=L(r1)∪L(r2)=L(r1∣r2)である。
連接の場合。r=(r1r2)とする。Nr1,Nr2に新しい二状態ur,vrを加え、
urεur1,vr1εur2,vr2εvrを置く。
urからvrへ至る任意の経路は、Nr1の初期状態から受理状態へ至った後に、Nr2の初期状態から受理状態へ至る。したがって、受理経路のラベルはx∈L(Nr1)とy∈L(Nr2)の連接xyである。逆に、そのような二つの受理経路を三本の新しいε遷移によってつなぐと、ラベルxyの受理経路を得る。ゆえに
L(Nr)=L(Nr1)L(Nr2)=L(r1)L(r2)=L(r1r2)である。
Kleene スターの場合。r=(r1∗)とする。Nr1に新しい二状態ur,vrを加え、
urεvr,urεur1,vr1εur1,vr1εvrを置く。
最初の遷移としてurεvrを選ぶ経路のラベルはεである。この直接の遷移を選ばない受理経路はNr1を有限回通過し、各通過の後に次の通過を始めるかvrへ移る。したがって、Nr1をn回通過する受理経路のラベルはL(Nr1)nに属する。逆に、任意のn≥0とx1,…,xn∈L(Nr1)に対して、各xiを読む受理経路をvr1εur1で順につなぐと、ラベルx1⋯xnの受理経路を得る。したがって
L(Nr)=n≥0⋃L(Nr1)n=n≥0⋃L(r1)n=L(r1∗)である。
いずれの構成でもurとvrは異なる新しい状態であり、urへ入る遷移とvrから出る遷移を置いていない。各段階で加える状態と遷移の個数は有限である。以上により、四条件がすべて成り立つ。▨
命題 2.1が与えるε-NFA に§E15.1 系 4.2を適用すると、同じ言語を受理する DFA が得られる。したがって、正規表現で表現可能な言語は正規言語である。
3 DFA から正規表現を構成する
逆方向では、DFA の状態を
Q={q1,…,qn}
と番号づける。二状態qi,qjと0≤k≤nに対して、始点がqi、終点がqjであり、中間状態が{q1,…,qk}に属する経路のラベルを表す正規表現Rij(k)を構成する。
k=0では、中間状態を一つももたない経路だけを扱う。そのような経路は、長さ0の経路か一本の遷移である。Eij:={a∈Σ:δ(qi,a)=qj}とおき、空な有限和を∅と解釈して
Rij(0):={(∣a∈Eija)∣ε,∣a∈Eija,i=j,i=j
と定める。ここで∣は正規表現の有限和を表す。
1≤k≤nに対して、再帰的に
Rij(k):=(Rij(k−1)∣Rik(k−1)(Rkk(k−1))∗Rkj(k−1))
と定める。この式の二項は、経路がqkを中間状態として通らない場合と、少なくとも一度通る場合にそれぞれ対応する。ΣとQは有限であり、再帰はn段階で終了するため、すべてのRij(k)は有限な正規表現である。
補題 3.1. 各0≤k≤nと各1≤i,j≤nについて、L(Rij(k))は、qiからqjへ至り、すべての中間状態が{q1,…,qk}に属する経路のラベル全体に等しい。
証明.kに関する帰納法を用いる。
k=0の場合、中間状態をもたない経路は長さ0または長さ1である。長さ0の経路がqiからqjへ至るのはi=jの場合に限り、そのラベルはεである。長さ1の経路のラベルは、δ(qi,a)=qjを満たす文字aである。したがって、該当するラベル全体はL(Rij(0))に等しい。
k−1について主張が成り立つと仮定する。qiからqjへ至り、中間状態が{q1,…,qk}に属する経路πを取る。
qkがπの中間状態として現れない場合、帰納法の仮定により、πのラベルはL(Rij(k−1))に属する。
qkがπの中間状態として現れる場合、πをqkが現れる各位置で切断する。最初の部分はqiからqkへ至り、最後の部分はqkからqjへ至る。両者の間には、qkからqkへ戻る経路が有限個並ぶ。切断後の各経路はqkを中間状態として含まず、他の中間状態は{q1,…,qk−1}に属する。帰納法の仮定により、最初の部分、各中間部分、最後の部分のラベルはそれぞれ
L(Rik(k−1)),L(Rkk(k−1)),L(Rkj(k−1))に属する。よって、πのラベルは
L(Rik(k−1)(Rkk(k−1))∗Rkj(k−1))に属する。以上により、対象となる経路のすべてのラベルがL(Rij(k))に属する。
逆に、L(Rij(k−1))に属する語は、帰納法の仮定から、許される中間状態が{q1,…,qk−1}に属する経路のラベルである。また、
L(Rik(k−1)(Rkk(k−1))∗Rkj(k−1))に属する語は、帰納法の仮定が与える一つのqiからqkへの経路、有限個のqkからqkへの経路、および一つのqkからqjへの経路を連結して得られる経路のラベルである。連結後の経路の中間状態は{q1,…,qk}に属する。したがって、L(Rij(k))の各語は主張にある経路のラベルである。二つの包含が成り立つため、帰納不変量が成立する。▨
一般化経路表現をすべての状態まで拡張すると、DFA の全経路を正規表現で記述することができる。
命題 3.2. 任意の DFAA=(Q,Σ,δ,qℓ,F)に対して、L(rA)=L(A)を満たす正規表現rAが存在する。
証明.Q={q1,…,qn}と番号づけ、補題 3.1の正規表現を構成する。F=∅ならばrA:=∅とする。F=∅ならば
rA:=∣qj∈FRℓj(n)と定める。
すべての状態が{q1,…,qn}に属するため、補題 3.1により、L(Rℓj(n))はqℓからqjへ至るすべての経路のラベル全体である。DFAAが語wを受理することは、qℓからある受理状態qj∈Fへ至るラベルwの経路が存在することと同値である。したがって
L(A)=qj∈F⋃L(Rℓj(n))=L(rA)である。F=∅の場合にも両辺は空集合である。▨
4 Kleene の定理
二方向の構成と有限オートマトンの同値性を合わせると、言語の三つの特徴づけを得る。
定理 4.1 (Kleene の定理). 有限アルファベットΣ上の言語L⊆Σ∗について、次の三条件は同値である。
- Lは正規表現で表現可能である。
- Lを受理するε-NFA が存在する。
- Lは正規言語である(定義 1)。
Kleene の定理は、正規表現と有限オートマトンの一方を他方へ有限回の操作で変換する。定理は変換後の記述量が小さいことまでは主張しない。部分集合構成では状態数が指数的に増える場合があり、
DFA から得られる正規表現も長くなる場合がある。
5 正規言語の限界
ここまでの結果は、三つの記述方法が同じ言語の範囲を定めることを述べる。その範囲がすべての言語を尽くすかどうかは、まだ述べていない。ここでは、与えられた言語が正規であるための必要十分条件を言語そのものの言葉で与え、正規でない言語を一つ示す。
有限オートマトンが語xを読み終えた時点で保持している情報は、状態一つである。以降の入力zに対する受理・不受理はその状態だけで決まるから、後続の語に対する振る舞いが一致する二つの語を同一視する同値関係を考えることができる。
定義 5.1. 言語L⊆Σ∗と語x,y∈Σ∗に対して、
x∼Ly:⟺すべての z∈Σ∗ について (xz∈L⟺yz∈L)と定める。∼LはΣ∗上の同値関係である。商集合Σ∗/∼Lの濃度をLの指数 (index) という。
∼Lが反射的、対称的、推移的であることは、定義に現れる同値(xz∈L⟺yz∈L)がそれぞれ反射的、対称的、推移的であることから直ちに従う。
補題 5.2.x∼Lyかつa∈Σならばxa∼Lyaである。
証明.z∈Σ∗を任意に取る。az∈Σ∗に対してx∼Lyを適用すると、x(az)∈Lとy(az)∈Lは同値である。x(az)=(xa)zかつy(az)=(ya)zであるから、(xa)z∈Lと(ya)z∈Lは同値である。zは任意であったからxa∼Lyaである。▨
右不変性により、同値類の上で一文字の遷移を定めることができる。これが次の定理の後半の構成である。
定理 5.3 (Myhill–Nerode の定理). 言語L⊆Σ∗について、Lが正規言語であることと、Lの指数が有限であることは同値である。
証明.Lが正規であるとする。L=L(A)となる DFAA=(Q,Σ,δ,q0,F)を取り、§E15.1 定義 1.2の拡張遷移関数δを用いてφ:Σ∗→Qをφ(x):=δ(q0,x)で定める。
φ(x)=φ(y)と仮定する。語の長さに関する帰納法により、任意のz∈Σ∗についてδ(q0,xz)=δ(φ(x),z)が成り立つ。実際、z=εでは両辺ともφ(x)であり、z=z′aでは
δ(q0,xz′a)=δ(δ(q0,xz′),a)=δ(δ(φ(x),z′),a)=δ(φ(x),z′a)となる。したがって、任意のzについて
δ(q0,xz)=δ(φ(x),z)=δ(φ(y),z)=δ(q0,yz)であり、§E15.1 定義 1.4によりxz∈Lとyz∈Lは同値である。よってx∼Lyである。
いま、φの像φ(Σ∗)⊆QからΣ∗/∼Lへの対応φ(x)↦[x]を考える。前段落により、この対応は代表元の取り方によらず定まる。また、各同値類[x]はφ(x)の像であるから、この対応は全射である。ゆえに
Σ∗/∼L≤φ(Σ∗)≤∣Q∣<∞であり、指数は有限である。
逆に、Lの指数が有限であるとする。xの同値類を[x]と書き、
QL:=Σ∗/∼L,qL:=[ε],δL([x],a):=[xa],FL:={[x]:x∈L}と定める。δLが代表元の取り方によらないことは補題 5.2による。FLが代表元の取り方によらないことは、x∼Lyにz=εを適用するとx∈Lとy∈Lが同値になることによる。仮定よりQLは有限であるから、AL:=(QL,Σ,δL,qL,FL)は DFA である。
語の長さに関する帰納法によりδL(qL,w)=[w]である。実際、w=εでは両辺が[ε]であり、w=w′aでは
δL(qL,w′a)=δL(δL(qL,w′),a)=δL([w′],a)=[w′a]である。したがって
w∈L(AL)⟺[w]∈FL⟺w∈Lとなる。ここで二つ目の同値は、[w]∈FLが「あるx∈Lについてw∼Lx」を意味し、その場合にz=εを取ればw∈Lが従うことによる。よってL=L(AL)であり、Lは正規言語である。▨
証明の前半は、状態数と指数の間の不等式をそのまま与える。
証明. 前半は定理 5.3 (Myhill–Nerode の定理)の証明前半で示した不等式∣Σ∗/∼L∣≤∣Q∣そのものである。後半はALの状態集合がΣ∗/∼Lであることによる。▨
指数が無限であることを示せば、その言語が正規でないことが従う。二つの語が異なる同値類に属することは、一つの後続語を挙げれば確かめることができる。
命題 5.5.Σ={a,b}とする。言語
L={anbn:n≥0}は正規言語ではない。
証明.i=jである非負整数i,jを取り、後続語としてz=biを選ぶ。aibi∈Lである一方、ajbiはj=iであるからLに属さない。したがってai∼Lajである。
ゆえにa0,a1,a2,…は互いに異なる∼Lの同値類に属し、Lの指数は無限である。定理 5.3 (Myhill–Nerode の定理)により、Lは正規言語ではない。▨
6 ポンピング補題
定理 5.3 (Myhill–Nerode の定理)は必要十分条件であるから、非正規性の証明にはこれで足りる。一方、状態の有限性から直接得られる必要条件も広く用いられる。次の記事では、文脈自由言語に対する同種の必要条件を証明する。
定理 6.1 (正規言語のポンピング補題).Lを正規言語とする。このとき、Lだけに依存する定数N≥1が存在して、∣w∣≥Nを満たす任意のw∈Lは
w=xyz(x,y,z∈Σ∗)の形に分解することができ、次の三条件を満たす。
- ∣xy∣≤N。
- y=ε。
- すべてのi≥0についてxyiz∈L。
証明.定義 1により、L=L(A)となる DFAA=(Q,Σ,δ,q0,F)を取る。N:=∣Q∣と置く。Qは空でない有限集合であるからN≥1である。
w=a1a2⋯am∈Lがm≥Nを満たすとする。0≤k≤Nに対して
pk:=δ(q0,a1⋯ak)と置く。p0,…,pNはQの元N+1個であり、∣Q∣=Nであるから、鳩の巣原理によりpj=pkとなる0≤j<k≤Nが存在する。
x:=a1⋯aj,y:=aj+1⋯ak,z:=ak+1⋯amと置く。∣xy∣=k≤Nであるから条件 (a)が成り立ち、j<kであるからy=εであり条件 (b)が成り立つ。
条件 (c)を示す。§E15.1 補題 1.3により
δ(pj,y)=δ(δ(q0,x),y)=δ(q0,xy)=pk=pjである。したがって、iに関する帰納法により、すべてのi≥0についてδ(pj,yi)=pjが成り立つ。実際、i=0ではy0=εでありδ(pj,ε)=pjである。iで成り立つとすると、再び§E15.1 補題 1.3によりδ(pj,yi+1)=δ(δ(pj,yi),y)=δ(pj,y)=pjである。
同じ補題を二度用いると、任意のi≥0について
δ(q0,xyiz)=δ(δ(pj,yi),z)=δ(pj,z)=δ(δ(q0,xy),z)=δ(q0,w)を得る。w∈L=L(A)であるからδ(q0,w)∈Fであり、§E15.1 定義 1.4によりxyiz∈Lである。▨
命題 5.5は、有限オートマトンの表現力に真の限界があることを示す。この限界を文脈自由文法との比較で述べるには、次の記事の二つの結果を用いる。§E15.3 命題 5.1は、正規言語の全体が文脈自由言語の全体に含まれることを示す。命題 5.5とこのLを生成する文法の存在(§E15.3 例 1.4 (a の並びの後に同数の b が続く言語))は、この包含が真であることを示す。以上により、正規言語の全体は文脈自由言語の全体に真に含まれる。
8 演習
問題 8.1.
- 正規表現∅∗が表す言語を求め、命題 2.1のスターの構成が同じ言語を受理する理由を説明せよ。
- 連接r1r2のために構成したε-NFA の任意の受理経路が、Nr1の受理経路とNr2の受理経路へ分解されることを、初期状態と受理状態に関する四条件を用いて証明せよ。
- アルファベットΣ={a}上で、二状態q0,q1をもち、q0を初期状態、q1を唯一の受理状態とし、文字aを読むたびに状態を入れ替える DFA を考える。この DFA の受理言語を表す正規表現を一つ与え、語の長さを用いて正しさを証明せよ。
- 補題 3.1の帰納段階で、経路がqkをちょうどm≥1回中間状態として通る場合に、経路のラベルがL(Rik(k−1)(Rkk(k−1))∗Rkj(k−1))に属することを、切断後の経路の本数を明示して証明せよ。
- Σ={a,b}上で、aの個数が偶数である語全体の言語Eについて、∼Eの同値類をすべて決定し、指数を求めよ。
- Σ={a,b}上の回文全体P={w∈Σ∗:w=wR}が正規言語でないことを、定理 5.3 (Myhill–Nerode の定理)を用いて証明せよ。ここでwRはwの文字を逆順に並べた語である。
解答 (演習の要点).
- 任意の言語AについてA0={ε}であり、∅n=∅がすべてのn≥1について成り立つ。したがってL(∅∗)={ε}である。スターの構成では、部分オートマトンへ入らずに新しい初期状態から新しい受理状態へ進むε遷移だけが受理経路となる。
- 新しい初期状態から出る遷移はur1への遷移だけである。Nr1からNr2へ移る遷移はvr1εur2だけであり、Nr1の初期状態へ入る遷移と受理状態から出る既存の遷移は存在しない。全体の受理状態へ入る遷移はvr2εvrだけであるため、受理経路はNr2の受理状態へ至る必要がある。したがって任意の受理経路は二つの部分オートマトンの受理経路へ一意に分解される。
- 一例はa(aa)∗である。DFA は長さが奇数である語だけをq1で読み終える。一方、L(a(aa)∗)={a2m+1:m≥0}であるため、二つの言語は一致する。
- qkが現れるm個の中間位置で経路を切ると、最初のqiからqkへの経路が一つ、qkからqkへの経路がm−1個、最後のqkからqjへの経路が一つ得られる。各経路はqkを中間状態として含まないため、帰納法の仮定を適用することができる。各ラベルを順に連接すると、主張された言語への所属を得る。
- 同値類は二つであり、指数は2である。aの個数が偶数である語全体をX0、奇数である語全体をX1と置く。x,yのaの個数の偶奇が一致するなら、任意のzについてxzとyzのaの個数の偶奇も一致するためx∼Eyである。偶奇が異なるなら、z=εを取ると一方だけがEに属するためx∼Eyである。
- i=jに対してx=aib、y=ajb、z=aiと置く。xz=aibaiは回文でありPに属する。一方yz=ajbaiが回文であるのはi=jの場合に限るため、yz∈/Pである。したがってaib∼Pajbであり、a0b,a1b,a2b,…は互いに異なる同値類に属する。指数は無限であるから、定理 5.3 (Myhill–Nerode の定理)によりPは正規言語ではない。
▨