Post on 14-Jan-2016
description
形式言語 と オートマトン
第 4 回鳥取大学工学研究科
情報エレクトロニクス専攻田中美栄子
形式言語とオートマトン
本日の予定
• DFA と NFA の同等性 ( 後編 )
• 最簡形の DFA
形式言語とオートマトン
NFA (非決定性 FSA ) DFA (決定性 FSA )
𝑑𝑓𝑎𝑀𝑑から を構成する方法を学ぶ !!
(𝜀)𝑛𝑓𝑎𝑀𝑛-
形式言語とオートマトン
アルゴリズム 2.1の
復習
形式言語とオートマトン
アルゴリズム 2.1
a
aasr
b
t
𝑄𝑛={𝑟 ,𝑠 ,𝑡 }Σ𝑛={𝑎 ,𝑏}𝛿𝑛:𝑄𝑛×Σ𝑛→2
𝑄𝑛
𝛿𝑛 (𝑟 ,𝑎 )={𝑟 ,𝑠 } ,𝛿𝑛 (𝑟 ,𝑏)={𝑟 } ,𝛿𝑛 (𝑠 ,𝑎 )= {𝑡 } ,𝛿𝑛 (𝑡 ,𝑎)=,
𝛿𝑛 (𝑠 ,𝑏 )=,𝛿𝑛 (𝑡 ,𝑏 )=¿
𝑞0𝑛=𝑟𝐹 𝑛={𝑡 }
説明しやすいため,遷移図を 5 字組化
形式言語とオートマトン
𝑄𝑑={{𝑟 ,𝑠 , 𝑡 } , {𝑟 ,𝑠 } , {𝑠 ,𝑡 } , {𝑡 ,𝑟 } , {𝑟 } , {𝑠} , {𝑡 }, }
{r,s,t}
{r,s}
{s,t}
{t,r}
{r}
{s}
{t}
1. の状態の集合の部分集合に全体で、の状態 () をつくる
形式言語とオートマトン
𝑞0𝑑={𝑟 }
{r,s,t}
{r,s}
{s,t}
{t,r}
{r}
{s}
{t}
2. において入力を読まずに遷移できる状態の集合を 初期状態 () とする
形式言語とオートマトン
{r,s,t}
{r,s}
{s,t}
{t,r}
{r}
{s}
{t}
𝐹 𝑑={{𝑟 ,𝑠 , 𝑡 }, {𝑠 , 𝑡 }, {𝑡 ,𝑟 }, {𝑡 }}
3. の受理状態を 1 つでも含む部分集合に対する状態をの受理状態とする
形式言語とオートマトン
{r,s,t}
{r,s}
{s,t}
{t,r}
{r}
{s}
{t}a
b
𝛿𝑑 ({𝑟 ,𝑠 , 𝑡 },𝑎)=¿ 𝛿𝑑 ({𝑟 ,𝑠 , 𝑡 },𝑏)=¿{𝑟 ,𝑠 , 𝑡 } {𝑟 }
4. の動作関数 () を決める
形式言語とオートマトン
アルゴリズム 2.1 の 4
{r,s,t}
{r,s}
{s,t}
{t,r}
{r}
{s}
{t}a
b
a
ba
ba,b
b
a
a,baba
b
全ての動作関数を求める
形式言語とオートマトン
{r,s,t}
{r,s} {r}
a
b
a
ba
b
a
{s,t}
{t,r}
{s}
{t}
∅
a a
𝑏𝑏
𝑏
𝑎 ,𝑏
𝑎 ,𝑏
5. の初期状態から到達できない状態 ( 遷移 ) をすべて削除
形式言語とオートマトン
アルゴリズム 2.1
{r,s,t}
{r,s} {r}
a
b
a
ba
b
a
{r,s}a ab
b
{r,s,t}{r}
b
整理
形式言語とオートマトン
NFA (非決定性 FSA )a
aasr
b
t
DFA (決定性 FSA )
する理由は?
a
{r,s}a ab
b
{r,s,t}{r}
b
NFA DFA
形式言語とオートマトン
NFA DFA遷移先がなかったり複数あったり… 遷移先が唯一
a b
{r} {r,s} {r}{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
a br r, s rs t --t -- --
a
aasr
b
t
a
{r,s}a ab
b
{r,s,t}{r}
b
形式言語とオートマトン
アルゴリズム 2.2 を学ぶ
NEW
形式言語とオートマトン
NEW
0
qp
1
r
アルゴリズム 2.2
{p,q,r}
{r}
{q}1
0,1
0
0
1
0
1
空動作がある
NFA (非決定性 FSA ) DFA (決定性 FSA )
),()0,(},{)1,(
,),()1,(},{)0,(
,)1,()0,(},,{),(
rrrr
qqqq
pprqp
nnn
nnn
nnn
nQnnn Q 2}){(:
形式言語とオートマトン
nnnnnn FqQM ,,,, 0},,{ rqpQn
}1,0{n
pq n 0
},{ rqFn
まず、 NFA を五字組化
0
qp
1
r
形式言語とオートマトン
入力を読まなくても q, r に遷移可能 初期状態
1. において初期状態から入力を読まずに遷移できる状態の集合に対応して、 初期状態 () とする
0
p
1
εε
q
r
形式言語とオートマトン
{p,q,r}
形式言語とオートマトン
2. 初期状態 () について、各入力記号における状態遷移を決める
}1,0{
),()0,(},{)1,(
,),()1,(},{)0,(
,)1,()0,(},,{),(
rrrr
qqqq
pprqp
nnn
nnn
nnn
さらに
から入力を読まずに遷移できる状態はない𝛿𝑑 ( {𝑝 ,𝑞 ,𝑟 } ,0 )={𝑞}
さらに
から入力を読まずに遷移できる状態はない𝛿𝑑 ( {𝑝 ,𝑞 ,𝑟 } ,1 )={𝑟 }
新状態
新状態
形式言語とオートマトン
{p,q,r}
{r}
{q}0
1
新状態つくり 𝛿𝑑 ( {𝑝 ,𝑞 ,𝑟 } ,0 )={𝑞}𝛿𝑑 ( {𝑝 ,𝑞 ,𝑟 } ,1 )={𝑟 }
形式言語とオートマトン
手順 2. をまた実行する、新状態の状態遷移を決める𝛿𝑑 ( {𝑞 } ,0 )=𝛿𝑛(𝑞 ,0)={𝑞}𝛿𝑑 ( {𝑞 } ,1 )=𝛿𝑛 (𝑞 ,1 )=∅
),()0,(},{)1,(
,),()1,(},{)0,(
,)1,()0,(},,{),(
rrrr
qqqq
pprqp
nnn
nnn
nnn
新状態𝛿𝑑 ( {𝑟 } ,0 )=𝛿𝑛 (𝑟 ,0 )=∅𝛿𝑑 ( {𝑟 } ,1 )=𝛿𝑛 (𝑟 ,1 )={𝑟 }
形式言語とオートマトン
{p,q,r}
{r}
{q}1
0
0
1
0
1
新状態 つくり
形式言語とオートマトン
手順 2. をまた実行する、新状態の状態遷移を決める𝛿𝑑 (∅ ,0 )=∅𝛿𝑑 (∅ ,1 )=∅
これ以上、新たに状態が作られなかったので、手順2. を終わる
形式言語とオートマトン
{p,q,r}
{r}
{q}1
0,1
0
0
1
0
1
形式言語とオートマトン
𝐹 𝑑={{𝑝 ,𝑞 ,𝑟 } , {𝑞 }, {𝑟 }}
3. の受理状態を 1 つでも含む部分集合に対する状態をの受理状態とする
},{ rqFn
形式言語とオートマトン
{q}1
0,1
0
0
1
0
1{p,q,r}
{r}
𝐹 𝑑={{𝑝 ,𝑞 ,𝑟 } , {𝑞 }, {𝑟 }}
形式言語とオートマトン
5 ステップ 3 ステップ
アルゴリズム 2.1 と アルゴリズム 2.2 の比較
使いやすい
DFA と NFA の同等性まとめ
形式言語とオートマトン
・決定性有限オートマトン (DFA)
同等(同じ仕事をする)
・非決定性有限オートマトン (NFA) ・空動作を許す非決定性有限オートマトン(NFA)
アルゴリズム 2.1や 2.2を使って書き換えられる
形式言語とオートマトン
• 最簡形の DFA
形式言語とオートマトン
定義
同じ言語を受理する DFAの中でも状態数の一番少ない DFA を最簡形の DFAという
形式言語とオートマトン
から最簡形の を構成する
アルゴリズム 2.3 を学ぶ
形式言語とオートマトン
お疲れ様
小テストです