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

到達可能状態の検出

ドキュメント内 version 0.9 (ページ 58-63)

第 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

q0r

t r

t r 0

1

0 1

0 1

5.2 5.1の機械Mの到達可能状態検出木。初期状態q00番目の根として、 入力0,1 よって遷移する状態を下方に伸ばして到達可能状態検出木を構成。0番目から6番目以降では 新たな状態遷移パターンpx

M qとなる頂点は存在せず、到達可能状態検出木が完成して、この 検出木の頂点からなる集合として到達可能状態R(Q)={q0,r,t}が定まる。

5.3 2 つの機械の等価性判定

2つのDFAM1M2が等価であることを判定するアルゴリズムを考えよう。定義5.1から、同 じ入力アルファベットΣを持つ2つのDFAM1=(Q1,Σ, δ1,q01,F1)M2=(Q2,Σ, δ2,q02,F2) 等価M1M2で同じ言語を受理するL(M1)=L(M2)であるためには、任意の入力列x∈Σ に対 して

q01x M1

p1 かつ q02x M2

p2

である状態p1Q1p2Q2が、共に受理状態p1F1,p2F2であるか、または共に非受理状 態p1 <F1,p2 <F2であらねばならない。もし遷移先の状態p1,p2で片方が受理状態で他方が非受 理状態となるような入力列xが存在すれば、L(M1),L(M2)となってしまう。M1M2であると き、定義5.2より共通の入力列による遷移先の状態p1p2は等価p1p2である。

機械M1 M2の等価性判定は、共通の入力列によって到達する状態対について片方が受理状 態、もう一方が非受理状態であるような状況が生じないことを確認すればよい。

このために、例5.1で到達可能状態検出木を構成したように、以下のようにして等価性判定木 (comparision tree)を構成する。確認すべき状態対は高々|Q1| × |Q2|個と有限であることから、こ の手続きは常に完了する。

まず初期状態q01q02 とは等価q01q02 として等価性判定木の根の名前とする。各入力記号 によって根の2状態q01およびq02 から遷移する2状態が等価であることを調べて≡記号で書く。

この手続きを続けて新たに遷移した2状態が等価であることを調べながら等価性判定木を伸ばして

ばさないようにすると、それ以上新たな2状態の等価式が生じないような木として等価性判定木が 完成する。

5.2 5.3で与えられる機械M1M2の等価性を判定してみよう。

M1

q0

start

q2

q1 q3

0

0 0

0

1 1

1

1

M2

r0

start

r1

0

1

0 1

5.3 M1M2は入力記号0,1からなる同じ言語を受理する同等な機械

まず、状態qiに到達する言語の正規表現Ri に関する連立線形再帰式を考えて、M1M2で受 理される言語の正規表現を求めておこう。M1については

R0

R1=R01+R10+R21+R31 R2=R00+R20

R3=R11+R30.

R0を使って、R2について解くことができてR2 =00、これよりR3 =R110 を得る。よっ て、R1 = 1+R10+001+R1101. これを解いて、R1 = (1+001)(0+101) を得る。した がって、R3 = (1+001)(0+101)10. これよりM1 が受理する言語の正規表現はR1+R3 = (1+001)(0+101)(ε+10)で与えられる。

M2については R0=ε+R00

R1=R01+R1(0+1).

これを解いて、M2が受理する言語の正規表現は01(0+1) となる。

正規表現に関する関係式、特にKleeneの閉包演算の性質(演習4.1)に注目すると、この2 の機械が受理する言語の正規表現が一致することを示すことができるが、見通しが芳しくない。こ れについては、節5.7の有限オートマトンの最小化で、統一的な方法を考えることにする。

さて、図5.4にあるように、⓪番目の等価式q0r0から入力によって遷移した状態の等価性(共 に受理状態であるか、または共に非受理状態になっている)を調べてみると①番目、②番目の等価 式を得る。この操作は、以降③番目から⑧番目まで続けられるが、③、④番目や⑦,⑧番目からは

新たな等価式を生じないことが確認でき、等価性判定木は⓪番目から⑧番目の頂点を持つ木として 構成できる。その結果、機械M1M2の等価性が示される。

q0r0

q2r0q1r1

q2r0q1r1q1r1q3r1

q3r1q1r1

0

1

0 1

0 1

0 1

5.4 等価性判定木。図5.3の機械M1の初期状態q0M2の初期状態r00番目の等価性 q0r0として根とし、入力から遷移する等価式を以降同様にして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 M2M3は入力記号0,1からなる異なる言語を受理する機械

図5.6 のように、機械 M2 の初期状態r0M3 の初期状態s0 を0 番目の等価式 r0s0 を 根として、入力に応じた遷移状態を考える。δ2(r0,0) = r0 < F1 と非受理状態に遷移する一方、

δ3(s0,0)s1F3と受理状態に遷移することがわかり、r0.s1である。したがって、M2.M3であ ることが判定できる。

r0s0

r0.s1r1s1 0

1

5.6 非等価性の判定木。図5.5の機械M2の初期状態r0M3の初期状態s00番目の等 価式r0s0を根とし、0,1入力からの遷移状態についての等価性を調べてみる。1番目の頂点の 等価性はr0.s1であることから、M2.M3であることが判定できる。

実際、M2が受理する言語の正規表現R201(0+1)である。一方、M3の各状態で遷移する 言語の正規表現は、節4.4の線形再帰方程式の方法に従って

S0=ε, S1=S0(0+1)+S1(0+1)

の関係にあることから、M3が受理する言語の正規表現は(0+1)(0+1) =0(0+1)+1(0+1) なる。したがって、01(0+1) ,(0+1)(0+1)、つまりM2 .M3である。たとえば、1個以上 の0からなる言語0M2では受理されないが(1が入力されて受理状態r1に遷移する必要があ る)、M3では受理される(1つ以上の0または1が入力されれば受理状態s1に遷移する)。

演習5.3 5.1の機械MM が等価であることを等価性判定木を構成することによって確かめ なさい。

ドキュメント内 version 0.9 (ページ 58-63)

関連したドキュメント