第 4 章 正規表現 39
4.4 線形再帰方程式と正規表現
補題4.3 (Ardenの補題[15][16]) X,S,Tが正規表現であり、かつε<T のとき、Xに関する線形 再帰方程式は次の一意的解を持つ。
X=S+XT に対して X=ST∗ X=S+TX に対して X=T∗S
証明 言語集合に関する命題P={X =S+XT}とQ={X=ST∗}とが同値であることをT =ϕ およびT ,ϕの場合に分けて示す[14]。
(1) T =ϕのとき。任意の言語Lと空言語ϕとの連接がLϕ=ϕL=ϕおよびϕ∗ ={ε}である ことから、XT = ϕよりP ={X =S}. 一方、ST∗ =Sε =SよりQ = {X = S}. よって、
(2) T ,ϕのとき。
まず、Q→Pを示す。Qであるとき、PのXに代入すると、X=S+ST∗T =S(ε+T∗T)=ST∗ となり、PはQに一致。
次にP →Qを示す。つまり、PであるときST∗ ⊂ X かつX ⊂ ST∗ を示すことによって X=ST∗であることを証明し、そのことからQが成立することを示す。
(a)Pであることより、S ⊂ X, XT ⊂ X である。これより、ST ⊂ XT ⊂ X. したがって ST2⊂XTとなって、ST2 ⊂XT⊂X. これを繰り返すと、ST∗⊂Xが得られる。
(b)Xに含まれST∗ に含まれない集合K ≡X−ST∗ がK,ϕと仮定する。Kに属する最 短の語をwとする(当然、w∈Xである)。w<ST∗ であることからw<S、よってP であることからw∈XT.
T ,{ε}より、wはあるu∈Xおよびv∈Tを使って w=uv ただし、|u|<|w|
と書ける。しかし一方、wはK⊂Xの最短の語であるので、|u|<|w|であるuはu<K であるので、u∈ST∗でなければならない。これより、w=uv∈(ST∗)(T)=ST∗T⊂ST∗. したがって、w ∈ ST∗ であることになって、仮定w < ST∗ に矛盾する。すなわち、
K=X =ST∗ =ϕ、X⊂ST∗ がわかった。
(a), (b)よりX=ST∗ が示され、P→Qが証明された。
■
例4.2 アルファベットΣ ={0,1}上の正規表現に関して、次のX,Y に関する線形再帰方程の解を 求めてみる[14, p.100]。
(1) X=00+11+X0+X1 (2) X=01+X0∗1
(3) X=0+X1∗01+Y1(01)∗,Y=X1
(4) X=11∗0+X01+Y1,Y =11∗+X0+Y1
補題4.3 とKleene演算に関する演習4.1 を使う。正規表現の表式は語の集合であることに注意
する。
(1) (00+11)(0+1)∗
(2) 01(0∗1)∗ =01(ε+0∗1(0∗1)∗)=01+010∗1(0∗1)∗ =01+01(0∗1)∗ =01+(0∗1)∗
(3) Y = X1 を代入すると、解くべき方程式X = 0∗ +X(1∗01+11(01)∗)を得る。これより、
X=0∗(1∗01+11(01)∗)∗,Y =0∗(1∗01+11(01)∗)∗1
(4) Y = (11∗ +X0) +Y1 として Y について解くと、Y = (11∗ +X0)1∗ = 11∗ + X01∗ を 得る. これを X の方程式に代入して、X = 11∗0+11∗1 +X(01+ 01∗1). これを解い て、X = 11∗(0+ 1)(01+01∗1)∗ = 11∗(0+1)(01∗1)∗. これを Y の式に代入して、Y =
11∗(ε+11∗(0+1)(01∗1)∗01∗).
例4.3 図4.1の有限オートマトンMa,Mb,Mc,Mdが定める正規表現を求めてみる[14, pp.101–
102]。
Ma
q0
start
q1
ε 0
1
Mb
q0
start
q1
ε 0
0,1
Mc
q0 start
q1 ε
1
0 0,1
Md
q0
start
q1
q2
ε
0 0
1 1
1
図4.1 オートマトンから正規表現を求める
有限オートマトンM =(Σ,Q, δ,q0,F)において、初期状態q0から状態qk ∈ Qに遷移する入力 x∈Σ∗語の集合Rkがすべて正規表現である。正規言語{Rk}同士に関する再帰方程式を補題4.3を 使って解いて求める正規表現を得る。
a) ここでは簡単に、受理状態q1に遷移するためには0回以上の1が続いた後に0である記号 列でなければならないと考えて、直ちに1∗0を得る。形式的には、R0=ε+R01,R1=R00 を連立させて解く(R0=ε+1R0ではないことに注意する)。補題4.3よりR0 =ε1∗ =1∗、 よってR1=R00=1∗0.
b) ここでは簡単に、受理状態q1に遷移するため1回の0の後は0または1が0回以上現れる 記号列でなければならない考えて、直ちに0(0+1)∗ を得る。R0 =ε,R1 =R00+R1(0+1) を連立させる。R1 =0R0+R1(0+1)やR1 =R00+(0+1)R1などではないことに注意す る。R1=0+R1(0+1)より、R1=0(0+1)∗.
c) 状態q0とq1に遷移するための正規表現R0およびR1は次の関係にある。
R0=ε+R00, R1=R00+R1(0+1)
補題4.3より、R0 =ε0∗ = 0∗. これをR1の式に代入して、R1 =0∗1+R1(0+1). よって、
R1=0∗1(0+1)∗ を得る。
d) 状態q0,q1,q2に遷移するための正規表現R0,R1およびR2は次の関係にある。
R0=ε, R1=R00+R11, R2=R01+R11+R21
R0をR1の式に代入して、R1=ε0+R10=0+R10.補題4.3より、R1=00∗. これらをR2 の式に代入して、R2=(1+00∗1)+R21. したがって、R2=(1+00∗1)1∗.
例4.4 有限オートマトンが受理する言語集合としての正規表現は一意には定まらない。図4.2の有 限オートマトンMeが受理する言語の正規表現を考えてみよう。
Me
q0
start
q1
ε 1
1
0 0
図4.2 正規表現の形は一意的に定まらない
状態q0とq1に遷移するための正規表現R0およびR1は次の関係にある。
R0=ε+R00+R11 (1)
R1=R01+R10 (2)
式(1)をR0=(ε+R11)+R00として、補題4.3より R0=(ε+R11)0∗
を得て、これを(2)に代入して次を得る。
R1=(ε+R11)0∗1+R10=0∗1+R1(10∗1+0) したがって、
R1=0∗1(10∗1+0)∗. (3)
一方、式(2)からR1=R010∗を得て、これを(1)に代入して R0=ε+R00+R010∗1=ε+R0(0+10∗1)
これより、R0=ε(0+10∗1)∗ =(0+10∗1)∗となる。(2)に代入して、R1=(0+10∗1)∗1+R10. よって、
R1=(0+10∗1)∗10∗ (4)
以上から、Me が受理する言語の正規表現として、式(3)および(4)の異なる表現が得られた。この ように、一般に代入に仕方には任意性があるために、得られる正規表現は様々になり、さらに、演
習4.1のようにKleene閉包の表し方もいろいろあるために一意的とはならない。