今日はε動作を除去して、ε動作のない非決定性有限オートマトンに変換する方法を解説します。
今回は少し複雑ですが、仕組みをわかってしまえば簡単ですので、そう構えずに行きましょう
目次
Q.そもそもε動作って何?
図1と図2の二つの非決定性有限オートマトンを例にしてみました。
図1がε動作ありで、図2がε動作なしです。
ε動作とは、
入力(0,1)関係なく、次の状態に遷移することができる機能です。逆流防止の効果もあります。
まあ、簡単に言えば、好きな時に次の状態に移れるようになってるよ
といった感じです。
また、あとで重要になってくるのですが、
ε動作でしか到達できない状態の集合をε閉包といいます。
図1の例だと、q1とq2がε閉包です。
ε動作を除去する方法
今回はこのオートマトンのε動作を取り除いていきます。
ステップ1:ε動作を含む状態遷移表をかこう
はい書きました。
0の矢印の行き先、1の矢印の行き先、εの矢印の行き先を書くだけです。
ステップ2:ε動作で到達できる場所に着目した状態遷移表をかこう
ここが少しややこしいので慎重に聞いてください。
まずはεの列に着目します。ここでは、
εで到達できるすべての状態を書きます
ちなみに、自分自身の状態にもεで遷移することができます。
状態「q0」を例にすると、まず自分自身「q0」を書きます。
次に、εで移動できる「q1」を書きます。
さらに、q1から、εで「q2」に到達できるので「q2」を書きます。
結果「q0、q1,q2」を書きます。
ただし、図6の状態「q3」に着目した場合は
p4からq5へはε動作でいけないので、結果は「q3,q4」だけになるので注意してください。
次にいつも通り「0」と「1」の遷移先を書いていきます。
「q0」の状態を見ていくと、q0の遷移先は「q0」だけですが、「q0」のε動作で到達できるのは先ほど求めた「q0,q1,q2」なので、それを書きます。
同様に、「q1」が遷移先の場合、「q1」がε動作で到達できるのは「q1,q2」なので、「q1,q2」とします。
また、最後に、元のε動作を含むオートマトンの受理状態が
ε動作でしか到達できない(つまりε閉包) かつ Ø
の時、
初期状態も受理状態にします。
これで、状態遷移表の完成です。
ステップ3:ステップ2の状態遷移表から状態遷移図をかこう
ステップ2の表をもとに、状態遷移図を書いていきます。
状態「q0」を例にすると、「0」での遷移先は「q0,q1,q2」なので、それらの状態に3つの矢印を向けます。
こんな感じですべてに対してやっていけば、
ε動作を除去した非決定性有限オートマトンの完成です!
お疲れ様でした。
ここから、さらに非決定性有限オートマトンを決定性有限オートマトンに変換したいところですが、その方法はこちらの記事で紹介しているので、読んでください。
まとめ
今日はε動作を除去する方法を解説しました。
今回は少しむずかしかったかもしれないので、わからないことがあれば気軽にコメントください。
今後の記事作成にも役立てたいと思います。
それとぼくが使っているこのオートマトンの教科書かなりおすすめです