• 検索結果がありません。

線形再帰方程式と正規表現

ドキュメント内 version 0.9 (ページ 46-50)

第 4 章 正規表現 39

4.4 線形再帰方程式と正規表現

補題4.3 (Ardenの補題[15][16]) X,S,Tが正規表現であり、かつε<T のとき、Xに関する線形 再帰方程式は次の一意的解を持つ。

X=S+XT に対して X=ST X=S+TX に対して X=TS

証明 言語集合に関する命題P={X =S+XT}Q={X=ST}とが同値であることをT =ϕ およびTの場合に分けて示す[14]

(1) Tのとき。任意の言語Lと空言語ϕとの連接が=ϕL=ϕおよびϕ ={ε}である ことから、XT = ϕよりP ={X =S}. 一方、ST =Sε =SよりQ = {X = S}. よって、

(2) Tのとき。

まず、QPを示す。Qであるとき、PXに代入すると、X=S+STT =S(ε+TT)=ST となり、PQに一致。

次にPQを示す。つまり、PであるときSTX かつXST を示すことによって X=STであることを証明し、そのことからQが成立することを示す。

(aPであることより、SX, XTX である。これより、STXTX. したがって ST2XTとなって、ST2XTX. これを繰り返すと、STXが得られる。

(bXに含まれST に含まれない集合KXST Kと仮定する。Kに属する最 短の語をwとする(当然、wXである)。w<ST であることからw<S、よってP であることからwXT.

T ,{ε}より、wはあるuXおよびvTを使って w=uv ただし、|u|<|w|

と書ける。しかし一方、wKXの最短の語であるので、|u|<|w|であるuu<K であるので、uSTでなければならない。これより、w=uv∈(ST)(T)=STTST. したがって、wST であることになって、仮定w < ST に矛盾する。すなわち、

K=X =STXST がわかった。

(a), (b)よりX=ST が示され、PQが証明された。

4.2 アルファベットΣ ={0,1}上の正規表現に関して、次のX,Y に関する線形再帰方程の解を 求めてみる[14, p.100]

(1) X=00+11+X0+X1 (2) X=01+X01

(3) X=0+X101+Y1(01),Y=X1

(4) X=110+X01+Y1,Y =11+X0+Y1

補題4.3 Kleene演算に関する演習4.1 を使う。正規表現の表式は語の集合であることに注意

する。

(1) (00+11)(0+1)

(2) 01(01) =01(ε+01(01))=01+0101(01) =01+01(01) =01+(01)

(3) Y = X1 を代入すると、解くべき方程式X = 0 +X(101+11(01))を得る。これより、

X=0(101+11(01)),Y =0(101+11(01))1

(4) Y = (11 +X0) +Y1 として Y について解くと、Y = (11 +X0)1 = 11 + X01 得る. これを X の方程式に代入して、X = 110+111 +X(01+ 011). これを解い て、X = 11(0+ 1)(01+011) = 11(0+1)(011). これを Y の式に代入して、Y =

11(ε+11(0+1)(011)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から状態qkQに遷移する入力 x∈Σ語の集合Rkがすべて正規表現である。正規言語{Rk}同士に関する再帰方程式を補題4.3 使って解いて求める正規表現を得る。

a) ここでは簡単に、受理状態q1に遷移するためには0回以上の1が続いた後に0である記号 列でなければならないと考えて、直ちに10を得る。形式的には、R0=ε+R01,R1=R00 を連立させて解く(R0=ε+1R0ではないことに注意する)。補題4.3よりR0 =ε1 =1 よってR1=R00=10.

b) ここでは簡単に、受理状態q1に遷移するため1回の0の後は0または10回以上現れる 記号列でなければならない考えて、直ちに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) 状態q0q1に遷移するための正規表現R0およびR1は次の関係にある。

R0=ε+R00, R1=R00+R1(0+1)

補題4.3より、R0 =ε0 = 0. これをR1の式に代入して、R1 =01+R1(0+1). よって、

R1=01(0+1) を得る。

d) 状態q0,q1,q2に遷移するための正規表現R0,R1およびR2は次の関係にある。

R0=ε, R1=R00+R11, R2=R01+R11+R21

R0R1の式に代入して、R1=ε0+R10=0+R10.補題4.3より、R1=00. これらをR2 の式に代入して、R2=(1+001)+R21. したがって、R2=(1+001)1.

4.4 有限オートマトンが受理する言語集合としての正規表現は一意には定まらない。図4.2の有 限オートマトンMeが受理する言語の正規表現を考えてみよう。

Me

q0

start

q1

ε 1

1

0 0

4.2 正規表現の形は一意的に定まらない

状態q0q1に遷移するための正規表現R0およびR1は次の関係にある。

R0=ε+R00+R11 (1)

R1=R01+R10 (2)

式(1)R0=(ε+R11)+R00として、補題4.3より R0=(ε+R11)0

を得て、これを(2)に代入して次を得る。

R1=(ε+R11)01+R10=01+R1(101+0) したがって、

R1=01(101+0). (3)

一方、式(2)からR1=R010を得て、これを(1)に代入して R0=ε+R00+R0101=ε+R0(0+101)

これより、R0=ε(0+101) =(0+101)となる。(2)に代入して、R1=(0+101)1+R10. よって、

R1=(0+101)10 (4)

以上から、Me が受理する言語の正規表現として、式(3)および(4)の異なる表現が得られた。この ように、一般に代入に仕方には任意性があるために、得られる正規表現は様々になり、さらに、演

習4.1のようにKleene閉包の表し方もいろいろあるために一意的とはならない。

ドキュメント内 version 0.9 (ページ 46-50)

関連したドキュメント