計算の理論 I ー正則表現と FA の等価性 その 2 ー 月曜3校時 大月 美佳
連絡事項 自転車がまだ散乱してますね
今日の講義内容 1. 前回のミニテスト 1. ミニテストの解答例 2. 正則表現から DFA まで変換してみる 3. 今日の新しいこと 1. 正則表現と FA の等価性 つづき 1. 正則表現からの ε- 動作を含む NFA の作り方 → 例 2.12 (p. 42) 2.DFA からの正則表現の作り方 → 例 2.13 (p. 45)
前回のミニテスト ( 演習問題 2.12, p. 66) 次の正則表現と同値な有限オートマトン を 構成せよ。 a)10+(0+11)0*1 1. 括弧でくくってみる ((10)+(((0+(11))(0*))1) : 左優先 ((10)+((0+(11))((0*)1)) : 右優先
構文木 連接 ((10)+(((0+11)(0*))1) ((10)+((0+11)((0*)1)) 連接 01 * *
最初の組合せで考えてみる 連接 01 * r r1r1 r2r2 r3r3 r4r4 r5r5 r6r6 r7r7 r8r8 r9r9 r 10 r 11 r 12 r 13
式の分解 r=r 1 +r 2 r 1 =r 3 r 4 r 2 =r 5 r 6 r 3 =1 r 4 =0 r 5 =r 7 r 8 r 6 =1 r 7 =r 9 + r 連接 01 * r r1r1 r2r2 r3r3 r4r4 r5r5 r6r6 r7r7 r8r8 r9r9 r 10 r 11 r 12 r 13 r 8 =r 11 * r 9 =0 r 10 =r 12 r 13 r 11 =0 r 12 =1 r 13 =1
どんどん変換していこう 連接 01 * r r1r1 r2r2 r3r3 r4r4 r5r5 r6r6 r7r7 r8r8 r9r9 r 10 r 11 r 12 r 13 q1q1 q2q2 1 開始 q3q3 q4q4 1 q1q1 q2q2 1 q3q3 q4q4 1 r 12 r 13 r 10 連接 ε
q8q8 どんどん変換していこう 連接 01 * r r1r1 r2r2 r3r3 r4r4 r5r5 r6r6 r7r7 r8r8 r9r9 r 10 r 11 r 12 r 13 q5q5 q6q6 0 開始 q1q1 q2q2 1 q3q3 q4q4 1 r9r9 r 10 + q1q1 q2q2 1 q3q3 q4q4 1 r7r7 q5q5 q6q6 0 q7q7 開始 ε ε ε ε ε ε
どんどん変換していこう 連接 01 * r r1r1 r2r2 r3r3 r4r4 r5r5 r6r6 r7r7 r8r8 r9r9 r 10 r 11 r 12 r 13 q9q9 q 10 0 開始 q 11 q9q9 ε 開始 q 10 q 12 ε r 11 r8r8 * 0 ε ε
q8q8 どんどん変換していこう 4 q 11 q9q9 ε 開始 q 10 q 12 ε r8r8 0 ε ε q8q8 q1q1 q2q2 1 q3q3 q4q4 1 r7r7 q5q5 q6q6 0 q7q7 開始 ε ε ε ε ε q 11 q9q9 ε q 10 q 12 ε 0 ε ε q1q1 q2q2 1 q3q3 q4q4 1 r5r5 q5q5 q6q6 0 q7q7 開始 ε ε ε ε ε 連接 ε
q8q8 どんどん変換していこう 5 q 11 q9q9 ε q 10 q 12 ε 0 ε ε q1q1 q2q2 1 q3q3 q4q4 1 r5r5 q5q5 q6q6 0 q7q7 開始 ε ε ε ε ε 連接 ε r6r6 ε q 13 q 14 1 開始 q 13 q 14 1 q8q8 q 11 q9q9 ε q 10 q 12 ε 0 ε q1q1 q2q2 1 q3q3 q4q4 1 q5q5 q6q6 0 q7q7 開始 ε ε ε ε ε ε r2r2
どんどん変換していこう 連接 01 * r r1r1 r2r2 r3r3 r4r4 r5r5 r6r6 r7r7 r8r8 r9r9 r 10 r 11 r 12 r 13 q 15 q 16 1 開始 q 17 q 18 0 開始 q15q15 q 16 1 開始 q 17 q 18 1 r3r3 r4r4 r1r1 連接 ε
これで(やっと)完成! ε q 13 q 14 1 q8q8 q 11 q9q9 ε q 10 q 12 ε 0 ε q1q1 q2q2 1 q3q3 q4q4 1 q5q5 q6q6 0 q7q7 開始 ε ε ε ε ε ε r2r2 q15q15 q 16 1 q 17 q 18 1 r1r1 ε q19q19 q 20 ε εε ε r
オートマトンとして真面目に 書く M(Q, {0, 1}, δ, q 19, {q 20 }) Q={q 1, q 2, q 3, q 4, q 5, q 6, q 7, q 8, q 9, q 10, q 11, q 12, q 13, q 14, q 15, q 16, q 17, q 18, q 19, q 20 } δ は右表 01ε q1q1 - q2q2 - q2q2 -- q3q3 q3q3 - q4q4 - q4q4 -- q8q8 q5q5 q6q6 -- q6q6 -- q8q8 q7q7 -- q 1, q 5 q8q8 -- q 11 q9q9 q q 9, q 12 q q 13 q q 13 - q q 20 q 15 - q q 17 - q q 20 q q 7, q 15 q ε δ
前回の例 2.12 の表記 M(Q, {0, 1}, δ, q 0, {q 9 }) Q={q 1, q 2, q 3, q 4, q 5, q 6, q 7, q 8, q 9 } δ は右表 q1q1 q2q2 1 q7q7 q3q3 q4q4 0 q6q6 1 q5q5 ε q8q8 ε ε ε ε q9q9 q0q0 ε ε ε ε 01ε q0q0 --{q 1 } q1q1 -{q 2 }- q2q2 --{q 9 } q3q3 {q 4 }-- q4q4 --{q 5 } q5q5 --{q 6, q 8 } q6q6 -{q 7 }- q7q7 --{q 7, q 8 } q8q8 --{q 9 } q9q9 --- δ
ε あり NFA から ε なし NFA を生成してみる q1q1 q2q2 1 q7q7 q3q3 q4q4 0 開始 q6q6 1 q5q5 ε q8q8 ε ε ε ε q9q9 q0q0 ε ε ε ε ε-CLOSURE(q 0 )={q 0, q 1, q 3 } ε-CLOSURE(q 1 )={q 1 } ε-CLOSURE(q 2 )={q 2, q 9 } ε-CLOSURE(q 3 )={q 3 } ε-CLOSURE(q 4 )={q 4, q 5, q 6, q 8, q 9 } ε-CLOSURE(q 5 )={q 5, q 6, q 8, q 9 } ε-CLOSURE(q 6 )={q 6 } ε-CLOSURE(q 7 )={q 7, q 6, q 8, q 9 } ε-CLOSURE(q 8 )={q 8, q 9 } ε-CLOSURE(q 9 )={q 9 }
δ´ を求める q 0 について
δ´ を求める q 1 について
δ´ を求める q 2 について
δ´ を求める q 3 について
δ´ を求める q 4 について
δ´ を求める q 5 について
δ´ を求める q 6 について
δ´ を求める q 7 について
δ´ を求める q 8 について
δ´ を求める q 9 について
生成された NFA M´(Q´, {0,1},δ´,q 0,{q 9 }) Q´={q 0, q 1, q 2, q 3, q 4, q 5, q 6, q 7, q 8, q 9 } δ ´ は右表 01 q0q0 {q 4, q 5, q 6, q 8, q 9 }{q 2, q 9 } q1q1 - q2q2 -- q3q3 {q 4, q 5, q 6, q 8, q 9 }- q4q4 -{q 6, q 7, q 8, q 9 } q5q5 - q6q6 - q7q7 - q8q8 -- q9q9 -- δ´δ´
さらに DFA へ変換してみる 01 q0q0 {q 4, q 5, q 6, q 8, q 9 } {q 2, q 9 } q1q1 - q2q2 -- q3q3 {q 4, q 5, q 6, q 8, q 9 } - q4q4 -{q 6, q 7, q 8, q 9 } q5q5 - q6q6 - q7q7 - q8q8 -- q9q9 -- δ´δ´ 01 [q 0 ][q 4, q 5, q 6, q 8, q 9 ][q 2, q 9 ] [q 4, q 5, q 6, q 8, q 9 ] -[q 6, q 7, q 8, q 9 ] [q 2, q 9 ]-- [q 6, q 7, q 8, q 9 ]- δ´´ M´´ (Q´´, {0,1},δ´´,[q 0 ],F) Q´´={[q 0 ], [q 4, q 5, q 6, q 8, q 9 ], [q 2, q 9 ], [q 6, q 7, q 8, q 9 ]} δ´´ は上表 F= {[q 4, q 5, q 6, q 8, q 9 ], [q 2, q 9 ], [q 6, q 7, q 8, q 9 ]}
もとの正則表現と比べてみる [q 0 ] [q 4,q 5,q 6,q 8,q 9 ] 0 開始 01 [q 0 ][q 4, q 5, q 6, q 8, q 9 ][q 2, q 9 ] [q 4, q 5, q 6, q 8, q 9 ] -[q 6, q 7, q 8, q 9 ] [q 2, q 9 ]-- [q 6, q 7, q 8, q 9 ]- [q 4,q 5,q 6,q 8,q 9 ][q 2, q 9 ] δ´´ 01*+1
今日の新しいこと 1. 正則表現と FA の等価性 1. 正則表現からの ε- 動作を含む NFA の作り方 →NFA の生成例 ( 例 2.12, p. 42) 2. DFA からの正則表現の作り方 → 正則表現の生成例 ( 例 2.13, p. 45) NFA 正則表現 ε- 動作を含む NFA DFA 先週やった
DFA からの正則表現の作り方 考え方 1. ある状態からある状態の間の状態を 0 からひとつずつ増やしていって、 2. 途中の状態の任意の組からなる道が生 成することのできる文字列の正則表現 を再帰的に拡張していき、 3. 最後に、初期状態から最終状態への道 が生成できる文字列の正則表現を求め る。
状態を増やしていくとは? qsqs qeqe q1q1 qnqn k=0 … qsqs qeqe k=1 q1q1 qnqn … qsqs qeqe k=n q1q1 qnqn … qsqs qeqe k=2 q1q1 qnqn … q2q2
正則表現の式との対応 ↓ 証明は p.44 ~ 45
正則表現の生成例 ( 例 2.13, p. 45) q1q1 q2q2 0 開始 q3q ,10 01 q1q1 q2q2 q3q3 q2q2 q1q1 q3q3 q3q3 q2q2 q2q2 δ
どんどん進める k=1 q1q1 q2q2 0 開始 q3q ,10
どんどん進める k=2 q1q1 q2q2 0 開始 q3q ,10
最終状態への道 k=3 q1q1 q2q2 0 開始 q3q ,10
今日のミニテスト ミニテスト – 演習問題 2.13 の a – 教科書・資料を見ても良い 資料、ミニテストがない人は前へ 提出したら帰って良し 次回 – 3 章いきます。反復補題。