もどくんちゃんねる ガジェット部

自転車、ガジェット、映像制作、CG、Blender など

【オートマトン解説】ε動作のない非決定性有限オートマトンに変換する方法 ε動作除去

f:id:KANSONINGEN:20210712225648p:plain

今日はε動作を除去して、ε動作のない非決定性有限オートマトンに変換する方法を解説します。

今回は少し複雑ですが、仕組みをわかってしまえば簡単ですので、そう構えずに行きましょう

 目次

 

Q.そもそもε動作って何?

f:id:KANSONINGEN:20210712230011p:plain

図1と図2 二つの受理する言語は同じ

図1と図2の二つの非決定性有限オートマトンを例にしてみました。

図1がε動作ありで、図2がε動作なしです。

 

ε動作とは、

入力(0,1)関係なく、次の状態に遷移することができる機能です。逆流防止の効果もあります。

 

まあ、簡単に言えば、好きな時に次の状態に移れるようになってるよ

といった感じです。

 

また、あとで重要になってくるのですが、

ε動作でしか到達できない状態の集合をε閉包といいます。

図1の例だと、q1とq2がε閉包です。

 

 

ε動作を除去する方法

f:id:KANSONINGEN:20210712230728p:plain

図3 ε動作を含む非決定性有限オートマトン

今回はこのオートマトンのε動作を取り除いていきます。

 

ステップ1:ε動作を含む状態遷移表をかこう

f:id:KANSONINGEN:20210712231023p:plain

図4 ε動作を含むオートマトンの状態遷移表


はい書きました。

0の矢印の行き先、1の矢印の行き先、εの矢印の行き先を書くだけです。

 

ステップ2:ε動作で到達できる場所に着目した状態遷移表をかこう

f:id:KANSONINGEN:20210712231728p:plain

図5 ε動作で到達できる場所に着目した状態遷移表

ここが少しややこしいので慎重に聞いてください。

 

まずはεの列に着目します。ここでは、

εで到達できるすべての状態を書きます

ちなみに、自分自身の状態にもεで遷移することができます。

 

状態「q0」を例にすると、まず自分自身「q0」を書きます。

次に、εで移動できる「q1」を書きます。

さらに、q1から、εで「q2」に到達できるので「q2」を書きます。

結果「q0、q1,q2」を書きます。

f:id:KANSONINGEN:20210712232618p:plain

図6

ただし、図6の状態「q3」に着目した場合は

p4からq5へはε動作でいけないので、結果は「q3,q4」だけになるので注意してください。

 

次にいつも通り「0」と「1」の遷移先を書いていきます。

「q0」の状態を見ていくと、q0の遷移先は「q0」だけですが、「q0」のε動作で到達できるのは先ほど求めた「q0,q1,q2」なので、それを書きます。

 

同様に、「q1」が遷移先の場合、「q1」がε動作で到達できるのは「q1,q2」なので、「q1,q2」とします。

 

また、最後に、元のε動作を含むオートマトンの受理状態が

ε動作でしか到達できない(つまりε閉包) かつ Ø

の時、

初期状態も受理状態にします。

 

これで、状態遷移表の完成です。

 

ステップ3:ステップ2の状態遷移表から状態遷移図をかこう

f:id:KANSONINGEN:20210712234359p:plain

図7 完成したε動作を除去した状態遷移図


ステップ2の表をもとに、状態遷移図を書いていきます。

状態「q0」を例にすると、「0」での遷移先は「q0,q1,q2」なので、それらの状態に3つの矢印を向けます。

 

こんな感じですべてに対してやっていけば、

ε動作を除去した非決定性有限オートマトンの完成です!

お疲れ様でした。

 

ここから、さらに非決定性有限オートマトンを決定性有限オートマトンに変換したいところですが、その方法はこちらの記事で紹介しているので、読んでください。

 

deziowata.hateblo.jp

 

まとめ

今日はε動作を除去する方法を解説しました。

今回は少しむずかしかったかもしれないので、わからないことがあれば気軽にコメントください。

今後の記事作成にも役立てたいと思います。

 

それとぼくが使っているこのオートマトンの教科書かなりおすすめです