形式言語とオートマトン Formal Languages and Automata 第5日目 Tokyo University of Technology School of Computer Science Hiroyuki KAMEDA There is no genius that bests hard work. 今日の内容 • 前回の復習も混ぜながら話をします。 • 最簡型DFAの求め方とその練習 • 正規表現を最簡型オートマトンで表現 など 確認問題: 1. 最簡型DFAとは何だったでしょうか? 2. 正規表現ってどんなものでしたでしょうか? 2 ©東京工科大学 2015年5月19日 亀田弘之 今日の修得内容目標 1. ε-NFAが与えられたとき,それと能力的に 等価なFAを構築できる。 2. 任意のFAが与えられたとき,それと能力的 に等価でかつ状態数が最小のFAを構築で きる。 今日でこれらを身に付けてしまいましょう! 3 ©東京工科大学 2015年5月19日 亀田弘之 今日の目標 これと同等なDFAを求める. 教科書p.59問題2.4より 【ポイント】 「非決定性の有限オートマトン」と 能力的に等価な「決定性の有限オートマトン」を求める。 4 ©東京工科大学 2015年5月19日 亀田弘之 今日の目標 これと同等なmin-FAを求める. 教科書p.59問題2.5より 【ポイント】 能力的に等価な 決定性の有限オートマトンのうち、 状態数が最も少ないものを求める。 5 ©東京工科大学 2015年5月19日 亀田弘之 今日の目標 課題:これと同等なDFAを求めよ. 6 ©東京工科大学 2015年5月19日 亀田弘之 重要 DFA Md からmin-DFA Ms を求める 1. Md の状態を,F状態と非F状態の 2グループに分割する. 2. 各グループの各状態について,入力におけ る遷移先が同じグループに行くものとそうで ないものとに分割する. 3. どのグループもこれ以上分割することがで きなくなるまで2を繰り返す. 4. 最終的に得られる各グループそれぞれを新 たな状態とみなすことで得られるDFAがMs . 7 ©東京工科大学 2015年5月19日 亀田弘之 重要 DFA Md からmin-DFA Ms を求める 1. Md の状態を,F状態と非F状態の 2グループに分割する. 2. 各グループの各状態について,入力におけ る遷移先が同じグループに行くものとそうで ないものとに分割する. 3. どのグループもこれ以上分割することがで きなくなるまで2を繰り返す. 4. 最終的に得られる各グループそれぞれを新 たな状態とみなすことで得られるDFAがMs . 問 上記の青丸○の付いた用語の意味を 自分の言葉で説明しなさい。 ©東京工科大学 2015年5月19日 亀田弘之 8 例による解説 9 ©東京工科大学 2015年5月19日 亀田弘之 このオートマトン M = <Q, Σ, δ, q0, F> を詳しく分析してみよう! • 状態の集合 Q • 入力アルファベット Σ • 初期状態: • 最終状態 F • 状態遷移関数δ: 10 ©東京工科大学 2015年5月19日 亀田弘之 このオートマトン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 ©東京工科大学 2015年5月19日 亀田弘之 11 状態集合Qを分割してみよう 1. QをFと非Fとに分割: Q = { q0, q1, q2, q3, q4, q5 } => Q1 = { { q0, q1, q2, q4 }, { q3, q5 } } 手順1はこれでおしまい. 12 ©東京工科大学 2015年5月19日 亀田弘之 手順2(1) • Q11 = { q0, q1, q2, q4 } と Q12= { q3, q5 } をそれ ぞれ調べる。 ©東京工科大学 2015年5月19日 亀田弘之 13 手順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 ©東京工科大学 2015年5月19日 亀田弘之 入力記号 0 1 q4 q1 q2 q4 q1 q3 q0 q1 q5 q2 q3 q2 14 手順2(3) 2. Q = { q0, q1, q2, q3, q4, q5 } => Q1 = { { q0, q1, q2, q4 }, { q3, q5 } } => Q2 = { { q0, q1, q4 }, { q2 }, { q3, q5 } } 15 ©東京工科大学 2015年5月19日 亀田弘之 手順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 ©東京工科大学 2015年5月19日 亀田弘之 入力記号 0 1 q4 q1 q2 q4 q0 q1 q1 q3 q5 q2 q3 q2 16 手順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 } } 17 ©東京工科大学 2015年5月19日 亀田弘之 手順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 これで収束しました! 18 ©東京工科大学 2015年5月19日 亀田弘之 手順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つに分けること(分割)ができた!) 19 ©東京工科大学 2015年5月19日 亀田弘之 手順3(1) • min-DFAの内部状態は4つ. qA { q0, q4 } qB { q1 } qC { q2 } qD { q3, q5 } 20 ©東京工科大学 2015年5月19日 亀田弘之 手順3(2) • min-DFAの内部状態は4つ. qA { q0, q4 } 内 qB { q1 } 部 qC { q2 } qD { q3, q5 } 状 態 0 1 qA 1 q0 q4 q1 q2 q3 q5 入力記号 0 1 q4 q1 q0 q1 q2 q4 q1 q3 q5 q2 q3 q2 0 0 qC qB 0 1 1 qD 21 ©東京工科大学 2015年5月19日 亀田弘之 この内容は 重要です! 一般のDFAから最簡形DFAを 求める方法わかりましたか? 0 1 qA 1 0 0 qC qB 0 ©東京工科大学 2015年5月19日 亀田弘之 1 1 qD 22 ここまで、良いでしょうか? 23 ©東京工科大学 2015年5月19日 亀田弘之 練習問題 プリントで配布します。 (来週答え合わせをします。自力 で挑戦しておくこと。) 24 ©東京工科大学 2015年5月19日 亀田弘之 次の話題(復習) • 次は、NFAと同等なDFAを求める方法に ついて再確認しよう! There exists a theory, such that for any NFA we can build a DFA equivalent to it. (任意のNFAに対して、それと等価な DFAが存在する、という定理がある。) 25 ©東京工科大学 2015年5月19日 亀田弘之 例えばこれと同等なDFAを求めたい. これはNFAです。 教科書p.59問題2.4より 26 ©東京工科大学 2015年5月19日 亀田弘之 例題:まずはこれから! これもNFAです。 27 ©東京工科大学 2015年5月19日 亀田弘之 アルゴリズム2.1(教科書p.47) • (ここだけを読んでも、普通の人ならば俄かに はわかりませんよね。こんな時は落ち着いて、 順番にやって行きましょう!) • 黒板で説明します。よく考えながらメモを取っ てください。 • そして、何度も練習しましょう。 28 ©東京工科大学 2015年5月19日 亀田弘之 自習問題1:等価なDFAを求めよ。 29 ©東京工科大学 2015年5月19日 亀田弘之 自習問題2:等価なDFAを求めよ。 30 ©東京工科大学 2015年5月19日 亀田弘之 FAに関する最後の話題 • 正規表現を最簡型オートマトンで表現する. 正規表現 α => NFA => min-DFA 例:α=a(a|b)*bb と等価なmin-DFAを求める. これは総合演習でもあるので、 次回やりましょう! 31 ©東京工科大学 2015年5月19日 亀田弘之 お知らせ 本講義は、前期末に定期試験を行います。 32 ©東京工科大学 2015年5月19日 亀田弘之 補足(練習問題) • オートマトンに関する練習問題を添えておき ます。 33 © 東京工科大学 亀田弘之 問題 図の有限オートマトンについて、問1-4に答えよ。 1. 初期状態はどれか。 q1 q2 q3 1 2. 最終状態はどれか。 q1 q2 q3 3. 決定性、非決定性のどちらか。 決定性 非決定性 4. 次の入力文字列の内、 受理されるのはどれか。 0010100 0101011 01 0 1111111111 0100 011010100 01110111 1 0 q2 q1 0 q3 図.有限オートマトン 0, 1 問題 A群の正規表現が表す文字列の集合は、 それぞれB群のどれか? A群 ① あ ② あいう ③ あ+ ④ あ* ⑤ あ|い|う ⑥ い|あ ⑦ (あ|い)* B群 a. b. c. d. e. f. g. h. i. {ε} { あ, い } { ε, あ, ああ, あああ, ・・・} { あ, ああ, あああ, ・・・} { あ, あい, あう, ああい, ああう } { い, いい, いいい, ・・・} {あ} {あ, い, う } {ε, あ, い, ああ, あい, いあ, いい, ・・・} © 東京工科大学 亀田弘之 35 問題 次の正規表現について、ε-NFA、DFAをそれぞれ求めよ。 1. abb*a 2. (a|b)*a(a|b) 3. (ab|c)*c(bc|a)* 4. (a|b|ε)(ab|b)*bc
© Copyright 2024 ExpyDoc