スライド 1

形式言語とオートマトン
Formal Languages and Automata
第4日目
Tokyo University of Technology
School of Computer Science
Hiroyuki KAMEDA
今日の内容
これと同等なDFAを求める.
教科書p.59問題2.4より
これと同等なmin-FAを求める.
教科書p.59問題2.5より
課題:これ同等なDFAを求めよ.
まずは,復習から
• (皆さんも一緒にやってみましょう!)
復習
DFA Md からmin-DFA Ms を求める
1. Md の状態を,Fの状態と非Fの状態とに分
割する.
2. 各グループの状態について,各入力におけ
る遷移先が同じグループに行くものとそうで
ないものとに分割する.
3. どのグループもこれ以上分割することがで
きなくなるまで2を繰り返す.
4. 最終的に得られた各グループをそれぞれ
Ms の状態とみなして得られるものがMs .
例による解説
このオートマトンM=<Q,Σ,δ,q0, F>
を詳しく分析してみよう
• 状態の集合
Q
• 入力アルファベット
Σ
• 初期状態:
• 最終状態 F
• 状態遷移関数δ:
このオートマトンM=<Q,Σ,δ,q0, F>
を詳しく分析してみよう
• 状態の集合
Q = { q0, q1, q2, q3, q4, q5 }
• 入力アルファベット
Σ = { 0, 1 }
• 初期状態: q0
• 最終状態 F = { q3, q5 }
• 状態遷移関数δ:
入力記号
0
1
q0 q4
q1
内 q1
部 q
2
状 q
3
態
q4
q2
q4
q1
q3
q5
q2
q0
q1
q5 q3
q2
状態集合Qを分割してみよう
1. QをFと非Fとに分割:
Q = { q0, q1, q2, q3, q4, q5 }
=> Q1 = { { q0, q1, q2, q4 }, { q3, q5 } }
手順1はこれでおしまい.
手順2(1)
• Q11 = { q0, q1, q2, q4 } と Q12= { q3, q5 } を調べ
ていく.
手順2(2)
内
部
状
態
q0
q1
q2
q3
q4
q5
入力記号
0
1
q4
q1
q2
q4
q1
q3
q5
q2
q0
q1
q3
q2
内
部
状
態
q0
q1
q2
q4
q3
q5
入力記号
0
1
q4
q1
q2
q4
q1
q3
q0
q1
q5
q2
q3
q2
手順2(3)
2.
Q = { q0, q1, q2, q3, q4, q5 }
=> Q1 = { { q0, q1, q2, q4 }, { q3, q5 } }
=> Q2 = { { q0, q1, q4 }, { q2 }, { q3, q5 } }
手順2(4)
内
部
状
態
q0
q1
q2
q3
q4
q5
入力記号
0
1
q4
q1
q2
q4
q1
q3
q5
q2
q0
q1
q3
q2
内
部
状
態
q0
q1
q4
q2
q3
q5
入力記号
0
1
q4
q1
q2
q4
q0
q1
q1
q3
q5
q2
q3
q2
手順2(3)
2.
Q = { q0, q1, q2, q3, q4, q5 }
=> Q1 = { { q0, q1, q2, q4 }, { q3, q5 } }
=> Q2 = { { q0, q1, q4 }, { q2 }, { q3, q5 } }
=> Q3 = { { q0, q4 }, { q1 }, { q2 }, { q3, q5 } }
手順2(5)
内
部
状
態
q0
q1
q2
q3
q4
q5
入力記号
0
1
q4
q1
q2
q4
q1
q3
q5
q2
q0
q1
q3
q2
内
部
状
態
q0
q4
q1
q2
q3
q5
入力記号
0
1
q4
q1
q0
q1
q2
q4
q1
q3
q5
q2
q3
q2
これで収束したね!
手順2(3)
2.
Q = { q0, q1, q2, q3, q4, q5 }
=> Q1 = { { q0, q1, q2, q4 }, { q3, q5 } }
=> Q2 = { { q0, q1, q4 }, { q2 }, { q3, q5 } }
=> Q3 = { { q0, q4 }, { q1 }, { q2 }, { q3, q5 } }
(4つに分けることができた!)
手順3(1)
• min-DFAの内部状態は4つ.
qA  { q0, q4 }
qB  { q1 }
qC  { q2 }
qD  { q3, q5 }
手順3(2)
• min-DFAの内部状態は3つ.
qA  { q0, q4 }
内
qB  { q1 }
部
qC  { q2 }
qD  { q3, q5 }
状
態
q0
q4
q1
q2
q3
q5
0
1
入力記号
0
1
q4
q1
q0
q1
q2
q4
q1
q3
q5
q2
q3
q2
1
qA
0
qC
qB
0
1
次の話題
問:これと同等なDFAを求めよ.
教科書p.59問題2.4より
最後の話題
• 正規表現を最簡系オートマトンで表現する.
正規表現 α => NFA => min-DFA
例:α=a(a|b)*bb のNFA,min-DFAを求める.