第 5 章 オートマトンの等価性 52
5.2 到達可能状態の検出
到達不可能状態はFAの動作に関与しないため、与えられたFAから到達不可能な状態とそれか ら遷移を取り除いて得られるFAは元のFAとは等価である。
初期状態q0を到達可能状態検出木の根の名前とし、各入力記号によって根から遷移する状態を 付け加え、既出の名前を持つ頂点からは伸ばさないようにして到達可能状態検出木を構成する。有 限状態機械であるため、この検出木の構成は有限個の頂点を有する木として完了する。
到達不可能状態は、FAの状態集合Qから到達可能状態を逐次的に取り出した集合R(Q)を決定 し、残余Q\R(Q)の状態として検出できる。このことを保証するの次の命題が成立する。
命題5.1 初期状態q0から任意の入力x∈Σに対しq0
⇒x∗
M pによって一意的に状態pへ到達可能で あるDFAMについて、Mの到達可能状態はすべて検出できる。この命題は以下の主張と同等で
|x|≦nである任意の入力x∈Σに対して、p0
⇒x∗
M pである状態pは到達可能状態検出木内に名前 pを持つ頂点として存在している。
証明 数 nに関する帰納法によって、命題が成立することを証明する。n = 0の場合、状態 p=q0は到達可能木の根として存在している。
n=k≧0のときに成立していると仮定してk+1での成立を示す。|x|=kなるx∈Σによって 遷移した状態をpとしたとき、帰納法の仮定から、名前pを持つ頂点は到達可能状態検出木の頂点 として登場している。長さがk+1の入力列y=xa∈Σに対してδ(p,a)=p′とすると、名前p′を 持つ頂点は名前pを持つ検出木の子頂点として検出木に登場していなければならない。したがっ て、長さk+1の任意の入力列についての命題が成立していることが示された。
例5.1 図5.1左の機械Mにおいて、状態sには初期状態q0からはいかなる入力によっても到達す ることができない。このためにMから状態sを除去してもMが受理する言語が変わることはな い。図5.1右の機械M′は、Mから到達不可能状態sを取り去って得られる等価な機械である。
M
q0
start
r s
t
0
0
0 1
0
1 0
1
≡ M′
q0
start
r
t 0
0
0 1
0 1
図5.1 Mの到達不可能状態sを見いだし除去して得られる同じ言語を受理するM′
実際に機械Mの到達不可能状態がsであることを検出するための到達可能状態検出木は図5.2 のように構成できる。初期状態q0を検出木の根として⓪番目に決定し、入力0によって遷移する 状態q0を①番目、入力1によって遷移する状態rを②番目として決定する。これを続けて、②番 目の状態rから1で遷移する④番目のrは既に②で登場しているため、④番目から検出木の枝は伸 びない。また、③番目の状態tから0で遷移する⑤番目のtと,1で遷移する⑥番目のrも検出木に 既出であるので、これ以上の枝を伸ばすことができずに到達可能状態検出木が完成する。この検出 木の頂点から定まる集合が到達可能状態R(Q)={q0,r,t}となる。到達不可能状態はQ={q0,r,s,t}
から到達可能状態を差し引いたQ\R(Q)={s}として求めることができる。
⓪q0
①q0 ②r
③t ④r
⑤t ⑥r 0
1
0 1
0 1
図5.2 図5.1の機械Mの到達可能状態検出木。初期状態q0を0番目の根として、 入力0,1に よって遷移する状態を下方に伸ばして到達可能状態検出木を構成。0番目から6番目以降では 新たな状態遷移パターンp⇒x
M qとなる頂点は存在せず、到達可能状態検出木が完成して、この 検出木の頂点からなる集合として到達可能状態R(Q)={q0,r,t}が定まる。
5.3 2 つの機械の等価性判定
2つのDFAM1とM2が等価であることを判定するアルゴリズムを考えよう。定義5.1から、同 じ入力アルファベットΣを持つ2つのDFAM1=(Q1,Σ, δ1,q01,F1)とM2=(Q2,Σ, δ2,q02,F2)が 等価M1≡M2で同じ言語を受理するL(M1)=L(M2)であるためには、任意の入力列x∈Σ∗ に対 して
q01⇒x M1
p1 かつ q02 ⇒x M2
p2
である状態p1 ∈Q1とp2 ∈Q2が、共に受理状態p1 ∈F1,p2∈ F2であるか、または共に非受理状 態p1 <F1,p2 <F2であらねばならない。もし遷移先の状態p1,p2で片方が受理状態で他方が非受 理状態となるような入力列xが存在すれば、L(M1),L(M2)となってしまう。M1 ≡M2であると き、定義5.2より共通の入力列による遷移先の状態p1とp2は等価p1≡p2である。
機械M1 とM2の等価性判定は、共通の入力列によって到達する状態対について片方が受理状 態、もう一方が非受理状態であるような状況が生じないことを確認すればよい。
このために、例5.1で到達可能状態検出木を構成したように、以下のようにして等価性判定木 (comparision tree)を構成する。確認すべき状態対は高々|Q1| × |Q2|個と有限であることから、こ の手続きは常に完了する。
まず初期状態q01 とq02 とは等価q01 ≡q02 として等価性判定木の根の名前とする。各入力記号 によって根の2状態q01およびq02 から遷移する2状態が等価であることを調べて≡記号で書く。
この手続きを続けて新たに遷移した2状態が等価であることを調べながら等価性判定木を伸ばして
ばさないようにすると、それ以上新たな2状態の等価式が生じないような木として等価性判定木が 完成する。
例5.2 図5.3で与えられる機械M1とM2の等価性を判定してみよう。
M1
q0
start
q2
q1 q3
0
0 0
0
1 1
1
1
≡ M2
r0
start
r1
0
1
0 1
図5.3 M1とM2は入力記号0,1からなる同じ言語を受理する同等な機械
まず、状態qiに到達する言語の正規表現Ri に関する連立線形再帰式を考えて、M1とM2で受 理される言語の正規表現を求めておこう。M1については
R0=ε
R1=R01+R10+R21+R31 R2=R00+R20
R3=R11+R30.
R0 =εを使って、R2について解くことができてR2 =00∗、これよりR3 =R110∗ を得る。よっ て、R1 = 1+R10+00∗1+R110∗1. これを解いて、R1 = (1+00∗1)(0+10∗1)∗ を得る。した がって、R3 = (1+00∗1)(0+10∗1)∗10∗. これよりM1 が受理する言語の正規表現はR1+R3 = (1+00∗1)(0+10∗1)∗(ε+10∗)で与えられる。
M2については R0=ε+R00
R1=R01+R1(0+1).
これを解いて、M2が受理する言語の正規表現は0∗1(0+1)∗ となる。
正規表現に関する関係式、特にKleeneの閉包演算の性質(演習4.1)に注目すると、この2つ の機械が受理する言語の正規表現が一致することを示すことができるが、見通しが芳しくない。こ れについては、節5.7の有限オートマトンの最小化で、統一的な方法を考えることにする。
さて、図5.4にあるように、⓪番目の等価式q0≡r0から入力によって遷移した状態の等価性(共 に受理状態であるか、または共に非受理状態になっている)を調べてみると①番目、②番目の等価 式を得る。この操作は、以降③番目から⑧番目まで続けられるが、③、④番目や⑦,⑧番目からは
新たな等価式を生じないことが確認でき、等価性判定木は⓪番目から⑧番目の頂点を持つ木として 構成できる。その結果、機械M1とM2の等価性が示される。
⓪q0≡r0
①q2≡r0 ②q1≡r1
③q2≡r0 ④q1≡r1 ⑤q1≡r1 ⑥q3≡r1
⑦q3≡r1 ⑧q1≡r1
0
1
0 1
0 1
0 1
図5.4 等価性判定木。図5.3の機械M1の初期状態q0とM2の初期状態r0を0番目の等価性 q0≡r0として根とし、入力から遷移する等価式を以降同様にして1番目から8番目として得ら れる木からは新たな等価式は生じず、等価性判定木が得られる。
例5.3 M2(図5.3右)は、次のM3(図5.5右)とは等価ではないM2.M3ことを示すことがで きる。
M2
r0
start
r1
0
1
0 1
.
M3
s0
start
s1
0 1
0 1
図5.5 M2とM3は入力記号0,1からなる異なる言語を受理する機械
図5.6 のように、機械 M2 の初期状態r0 とM3 の初期状態s0 を0 番目の等価式 r0 ≡ s0 を 根として、入力に応じた遷移状態を考える。δ2(r0,0) = r0 < F1 と非受理状態に遷移する一方、
δ3(s0,0)s1 ∈F3と受理状態に遷移することがわかり、r0.s1である。したがって、M2.M3であ ることが判定できる。
⓪r0≡s0
①r0.s1 ②r1≡s1 0
1
図5.6 非等価性の判定木。図5.5の機械M2の初期状態r0とM3の初期状態s0を0番目の等 価式r0≡s0を根とし、0,1入力からの遷移状態についての等価性を調べてみる。1番目の頂点の 等価性はr0.s1であることから、M2.M3であることが判定できる。
実際、M2が受理する言語の正規表現R2は0∗1(0+1)∗である。一方、M3の各状態で遷移する 言語の正規表現は、節4.4の線形再帰方程式の方法に従って
S0=ε, S1=S0(0+1)+S1(0+1)
の関係にあることから、M3が受理する言語の正規表現は(0+1)(0+1)∗ =0(0+1)∗+1(0+1)∗と なる。したがって、0∗1(0+1)∗ ,(0+1)(0+1)∗、つまりM2 .M3である。たとえば、1個以上 の0からなる言語0†はM2では受理されないが(1が入力されて受理状態r1に遷移する必要があ る)、M3では受理される(1つ以上の0または1が入力されれば受理状態s1に遷移する)。
演習5.3 図5.1の機械MとM′ が等価であることを等価性判定木を構成することによって確かめ なさい。