# 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 1 計算の理論 I 正則表現と FA との等価性 火曜３校時 大月 美佳.

## Παρουσίαση με θέμα: "平成 16 年 6 月 15 日佐賀大学知能情報システム学科 1 計算の理論 I 正則表現と FA との等価性 火曜３校時 大月 美佳."— Μεταγράφημα παρουσίασης:

1 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 1 計算の理論 I 正則表現と FA との等価性 火曜３校時 大月 美佳    


2 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 2 今日の講義内容 1. 前回ミニテストについて 2. 正則表現補足 3. 正則表現と FA の等価性 1. 正則表現 →ε-NFA 2. DFA(NFA)→ 正則表現 4. ミニテスト    


3 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 3 正規表現補足 慣れるためには、訓練が必要。 1.(00+1)* のバリエーション (000+1)* : 0 の個数が 3 の倍数連続 (0000+1)* : 0 の個数が 4 の倍数連続 2. 記号の連続の制限 (1+01)*(ε+0) : 2 個以上続く 0 を含まない 3. いろいろと当たってみる 教科書 3.1.4 p.98 ～ 99    


4 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 4 今日の新しいこと 1. 正則表現と FA の等価性 1. 正則表現からの ε- 動作を含む NFA の作り方 →p.111 ～ 116 3.2.3 項 ( 例 3.8, p. 115) 2. DFA からの正則表現の作り方 →p.100 ～ 111 3.2.1, 3.2.2 項 ( 例 3.5, p. 103, 例 3.6, p.109) NFA 正則表現 ε- 動作を含む NFA DFA    


5 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 5 正則表現からの ε- 動作を含む NFA の作り方 1.括弧つきに書き換える (00+1)* → ((00)+1)* 2.分解していく 1. r = r 1 * 2. r 1 = r 2 +r 3, r 3 =1 3. r 2 = r 4 +r 5, r 4 =0, r 5 =0 * + 1 連接 00    


6 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 6 NFA の作り方 ( 定理 3.7 図 3.16 p.113) 3.末端（最小構成)をFAに変換する 1. r =ε 2. r =φ 3. r = a * + 1 連接 00 q0q0 開始 q0q0 qfqf a q0q0 qfqf    


7 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 7 3.末端から根に向かってどんどん変換 する 1. r =r 1 +r 2 → 図3.17 (a) 2. r =r 1 r 2 → 図3.17 (b) 3. r = r 1 * → 図3.17 (c) NFA の作り方 ( 定理 3.7 図 3.17 p.113) * + 1 連接 00    


8 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 8 図 3.17(a) q1q1 f1f1 開始 q2q2 f2f2 + q1q1 f1f1 q2q2 f2f2 f0f0 q0q0 r 1 のNFA r 2 のNFA ε εε ε 最終状態が 1 個だけ    


9 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 9 図 3.17(b) q1q1 f1f1 開始 q2q2 f2f2 連接 q1q1 f1f1 開始 q2q2 f2f2 r 1 のNFA r 2 のNFA 最終状態が 1 個だけ    


10 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 10 図 3.17(c) q1q1 f1f1 開始 q1q1 f1f1 f0f0 q0q0 r 1 のNFA * ε ε ε ε 最終状態が 1 個だけ    


11 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 11 どんどんやってみる * + 1 連接 00 q１q１ q２q２ 0 開始 q3q3 q4q4 0 q5q5 q6q6 1 q１q１ q２q２ 0 q3q3 q4q4 0 ε q5q5 q6q6 1 q8q8 q7q7 q１q１ q２q２ 0 q3q3 q4q4 0 ε やって みてね    


12 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 12 NFA の生成例 正規表現 : 01*+1 1.括弧つきに書き換える 01*+1 → ((0(1*))+1) 2.分解していく 1. r=r 1 +r 2, r 1 =0(1*), r 2 =1 2. r 1 =r 3 r 4, r 3 =0 3. r 4 =r 5 *, r 5 =1 + 連接 1 * 0 1 r r1r1 r2r2 r3r3 r4r4 r5r5    


13 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 13 NFA の生成例 ( つづき 1) 正規表現 : 01*+1 3.最小構成をFAに変換する 4.FAを組みあげていく 1. r 4 =r 5 *, r 5 =1 2. r 1 =r 3 r 4, r 3 =0 3. r=r 1 +r 2, r 2 =1 q5q5 q6q6 1 開始 q3q3 q4q4 0 q1q1 q2q2 1 + 連接 1 * 0 1 r r1r1 r2r2 r4r4 r5r5 r3r3    


14 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 14 NFA の生成例 ( つづき 2) 4.1. r 4 =r 5 * q6q6 q5q5 1 r 5 =1 q7q7 ε q8q8 ε ε ε + 連接 1 * 0 1 r r1r1 r2r2 r4r4 r5r5 r3r3    


15 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 15 NFA の生成例 ( つづき 3) 4.2. r 1 =r 3 r 4 q6q6 q3q3 q4q4 0 開始 q5q5 1 r 3 =0 r 5 =1 q7q7 ε q8q8 ε ε ε ε r 4 =r 5 * + 連接 1 * 0 1 r r1r1 r2r2 r4r4 r5r5 r3r3    


16 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 16 NFA の生成例 ( つづき 4) 4.3. r=r 1 +r 2 r 2 =1 q1q1 q2q2 1 q6q6 q3q3 q4q4 0 開始 q5q5 1 r 5 =1 q7q7 ε q8q8 ε ε ε ε r 4 =r 5 * q 10 q9q9 ε ε ε ε + 連接 1 * 0 1 r r1r1 r2r2 r4r4 r5r5 r3r3    


17 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 17 DFA→ 正則表現 (3.2.1 項 p.100 ～ ) 考え方 1. ある状態からある状態の間の状態を 0 からひとつずつ増やしていって、 2. 状態の任意の組からなる道が生成する ことのできる文字列の正則表現を再帰 的に拡張していき、 3. 最後に、初期状態から最終状態への道 が生成できる文字列の正則表現を求め る。    


18 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 18 数学的に定義  M の状態を q i から途中 q j より大きな番号 の状態を通らずに、 q j にたどり着くこ とのできる入力列の集合    


19 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 19 正則表現の式との対応 ↓    


20 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 20 正則表現の生成例その 1 q1q1 q2q2 0 開始 q3q3 1 1 0,10 01 q1q1 q2q2 q3q3 q2q2 q1q1 q3q3 q3q3 q2q2 q2q2 δ    


21 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 21 どんどん進める k=1 q1q1 q2q2 0 開始 q3q3 1 1 0,10    


22 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 22 どんどん進める k=2 q1q1 q2q2 0 開始 q3q3 1 1 0,10    


23 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 23 最終状態への道 k=3 q1q1 q2q2 0 開始 q3q3 1 1 0,10    


24 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 24 まとめ方が難しい？ 以下のルールを活用せよ    


25 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 25 正則表現の生成例その 2 下の状態図に対応する正則表現を求めよ。 A 0 開始 C 1 0 B 1 0 1    


26 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 26 とりあえず番号をつける A → 1 B → 2 C → 3 開始 A 0 C 1 0 B 1 0 1 BBBCBACBCCCAABACAA １から！    


27 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 27 状態 A が加わった k=1 その 1 ε ABAAAAAB εε ε ε AA AA AA AA εε ε ε AA AA AA εε ε AA AA AB εε ε    


28 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 28 状態 A が加わった k=1 その 2 ε BABAAAAA εε ε ε AC AA AA AC εε ε ε AA AA AC εε ε BA AA AA εε ε    


29 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 29 状態 A が加わった k=1 その 3 ε BCBAAAAC εε ε ε BB BA AA AB εε ε ε BA AA AB εε ε BA AA AC εε ε ε    


30 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 30 状態 A が加わった k=1 その 4 ε BCBAAAAC εε ε ε CA CA AA AA εε ε ε CA AA AA εε ε BA AA AC εε ε ε    


31 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 31 状態 A が加わった k=1 その 5 ε CC CA AA AC εε ε ε CA AA AC εε ε    


32 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 32 さらに状態 B が加わった k=2 例 1 ε AA AA AA εε ε ε AA AA AB εε ε ε BAAAAB εε ε ε BA AA AA εε ε εε ε ε    


33 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 33 どんどん進める k=2    


34 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 34 最終状態への道 k=3    


35 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 35 最終解 k=3    


36 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 36 状態消去法 (3.2.2 項 p.105 ～ )  状態を正則表現に順次置き換えていく 1. オートマトンの全ての辺のラベルを正則表現に 書き改める 2. 受理状態 q と開始状態 q 0 のみを残して、後は消去 する ( 消去法 : p.106-107, 図 3.7→ 図 3.8) 3. q≠q 0 の場合には、この 2 状態オートマトンに図 3.9(p. 108) のようなラベル付けをする 4. q=q 0 の場合には、この 1 状態オートマトンに図 3.10(p. 109) のようなラベル付けをする 5. 3 と 4 の和から全体を求める    


37 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 37 消去後の FA と正則表現 q0q0 開始 q S R T U →(R+SU*T)*SU* 図 3.9 p.108 開始 q0q0 R →R* 図 3.10 p.109    


38 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 38 状態消去法の例 ( 例 3.6 p.109)  末尾から 2 文字目か 3 文字目に 1 がある列 の全体を受理する FA A 0,1 開始 CD 0,1 1 B    


39 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 39 ラベルの書き換え  正則表現に書き換える A 0+1 開始 CD 0+1 1 B    


40 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 40 状態 B の消去  繰り返し作業を省くためこの時点で消 去 0+1 CD 1(0+1) 0+1 A 開始 AC 0+11 B φ+1φ*(0+1) =1(0+1) φ φ    


41 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 41 状態 C の消去  (A, D) の組用 D 1(0+1)(1+0) 0+1 A 開始 ((0+1)+1(0+1)(1+0)φ*φ)*(1(0+1)(0+1))φ* =(0+1)*1(0+1)(1+0) 0+1 CD 1(0+1) φ A φ φ+1(0+1)φ*(0+1) =1(0+1)(0+1)    


42 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 42 状態 D の消去  (A, C) の組用 C 1(0+1) 0+1 A ((0+1)+1(0+1)φ*φ)*(1(0+1))φ* =(0+1)*1(0+1) 開始 0+1 CD 後続状態がない！    


43 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 43 最終的な正則表現  (A, C) と (A, D) の正則表現の和 → (0+1)*1(0+1)+(0+1)*1(0+1)(0+1)    


44 平成 16 年 6 月 15 日佐賀大学知能情報システム学科 44 ミニテストと次回内容  ミニテスト 教科書・資料を見ても、友達と相談しても 良い 15 分後に指名された人は板書  ミニテストを提出すること 出したら帰って良し  次回 (6/22) 内容 DFA の最小化