形式言語とオートマトン2012 ー有限オートマトンー 第3日目 Tokyo University of Technology School of Computer Science © 平成24年5月8日 東京工科大学 今日のポイント 1. 2. 3. 4. 有限オートマトン(復習・確認) 正規表現 (regular expression) 正規表現とオートマトンの関係 最簡型オートマトンの作り方 (DFA -> min-DFA) 超高速オートマトン? 2 まずは、復習から 不学 亦而 説時 乎習 之 By Confucius (孔子) 3 言語(文法)とオートマトンの関係 ---------------------------------------------------------------言語 (languages) 処理装置 (devices) ---------------------------------------------------------------• 句構造言語(PSL) ⇔ Turing 機械 • 文脈依存言語(CSL) ⇔ 線形有界オートマトン • 文脈自由言語(CFL) ⇔ プッシュダウンオートマトン • 正規言語(RL) ⇔ 有限オートマトン ---------------------------------------------------------------まずはここから かじってみよう かな 計算モデルやプログラミング言語設計に 深くかかわっています。 4 さて、… 5 有限オートマトンとは(復習) • (英) Finite Automaton (FA) finite automata (pl.) なるほど。 有限オートマトンとは、 内部状態の個数が有限個で あるオートマトンのことか… 6 いろいろなFA • Finite Automaton – Deterministic Finite Automaton (DFA) or Deterministic Finite State Machine – Nondeterministic Finite Automaton (NFA) or Nondeterministic Finite State Machine – ε-NFA or NFA with ε-moves or NFA-lambda 英語も覚えましょう 7 決定性有限オートマトンの定義 DFA M = ( K, Σ, δ, q0, F ) ただし、 K : 状態の集合( Kは有限集合) Σ : 入力アルファベット(Σは有限集合) δ : 状態遷移関数 δ: K×Σ∋(qi , a ) → qj ∈ K q0 : 初期状態 F : 最終状態の集合 ( F ⊆ K ) 8 (ちょっと一言?) Did you know it? • 「入力アルファベット」とは、 テープ上に配列される記号群のこと。 • なぜ、「入力記号の集合」と呼ばずに、 「入力アルファベット」と呼ぶのでしょか? • それは、テープ上に並べられた記号列は1つの 単語を表しているとみなす立場があり、その際、 個々の入力記号は単語を構成する文字そのも のである。そしてそのような文字の集合を一般 にはアルファベット(字母)と呼ぶためである。 • なお、本講義では入力記号ひとつひとつが単語 を抽象化したものとする立場をとっています。 9 例:決定性有限オートマトンM1 DFA M1 = ( K, Σ, δ, q0, F ) ただし、 K : { i, f, 1, 2, 3} Σ : { a, b } δ : 状態遷移関数 (次の頁参照) q0 : i F : {f} 10 状態遷移関数δ 状態 入力 a 入力 b i 1 ー 1 2 3 2 3 f 2 2 2 3 f f 11 問題 状態遷移図を示せ。 DFA M1 = ( K, Σ, δ, q0, F ) ただし、 K : { i, f, 1, 2, 3} Σ : { a, b } δ : 状態遷移関数 q0 : i F : {f} 状態 入力 a 入力 b i 1 ー 1 2 3 2 3 f 2 2 2 3 f f 12 状態 M1の状態遷移図 a i a a 1 b 入力 a 入力 b i 1 ー 1 2 3 2 3 f 2 2 2 3 f f b a 2 f a b b 3 13 練習問題 • DFA M1 により受理される文字列は次のうち のどれか? ① ② ③ ④ ⑤ aaaaa aabb abbabb bababaa aaaabb 14 確認問題 • DFA M1 により受理される文字列を5つ以上 作ってみなさい。 この問題ができなかった人は、 もう一度DFAの定義から勉強しなおしましょう 15 学力定着確認問題 • DFA M1 により受理される文字列について 以下の問①と②に答えよ。 ① 文字列長が最も短いものを すべて列挙しなさい。 ② 文字列長が4以下のものを すべて列挙しなさい。 不学 亦而 説時 乎習 之 16 非決定性有限オートマトンの定義 NFA M = ( K, Σ, δ, q0, F ) ただし、 K : 状態の集合( Kは有限集合) Σ : 入力アルファベット(Σは有限集合) δ : 状態遷移関数 δ: K×Σ∋(qi, a ) → Q ⊂ K q0 : 初期状態 F : 最終状態の集合 ( F ⊆ K ) 17 例:非決定性有限オートマトンM2 NFA M2 = ( K, Σ, δ, q0, F ) ただし、 K : { i, f1, f2, 1, 2 } Σ : { a, b } δ : 状態遷移関数 (次の頁参照) q0 : i F : { f1, f2 } 18 状態遷移関数δ 状態 入力a 入力b i i, 2 i, 1 1 ー f1 2 f1 f2 f2 f1 f2 - f1 f2 非決定性 19 確認問題 20 M2の状態遷移図 a, b a, b a i a 2 f2 b 1 a, b b f1 状態 入力a 入力b i i, 2 i, 1 1 ー f1 2 f1 f2 f2 f1 f2 - f1 f2 21 問題 • FDA M2 により受理される文字列は次のうち のどれか? ① ② ③ ④ aaaaa aabb abbabb bababaa 22 問題 • FDA M2 により受理される文字列を5つ以上 作ってみなさい。 この問題ができなかった人は、 もう一度NFAの定義から勉強しなおしましょう 23 NFA M3の状態遷移図 a, b b a i ε a 2 f2 ε遷移(非決定性の要因) 1 a, b b f1 24 問題 • FDA M3 により受理される文字列は次のうち のどれか? ① ② ③ ④ aaaaa aabb abbabb bababaa 25 問題 • FDA M3 により受理される文字列を5つ以上 作ってみなさい。 この問題ができなかった人は、 もう一度ε-NFAの定義から勉強しなおしましょう 26 ここまでは定義の復習 27 もう少し具体例を • 教科書の – 図2.8 (p.37) – 問2.3 (p.39) – 図2.9 (p.41) – 問2.4 (p.43) – 図2.11 (p.45) などを見なれること。図の意味(FAの動作)が 分かるようになりましょう。 28 29 練習問題 • 次ページのFA(状態遷移図で記述されている)を、 文章の形で記述してみてください。 つまり、FAを – 状態の集合 K – 入力アルファベット Σ – 状態遷移関数 δ:K×Σ → K (表形式でもOK) – 初期状態 – 最終状態の集合F の5つ組として記述しなさい。 30 練習問題(続き) • 教科書の ① ② ③ ④ ⑤ 図2.8 (p.37) 問2.3 (p.39) 図2.9 (p.41) 問2.4 (p.43) 図2.11 (p.45) それぞれ。 31 新しい話に入りましょう! • 正規表現 (regular expressions) 正規表現は文字列の集合を表すのに便利! CSにとっては常識です。 32 例えば、… • 設定: – とあるディレクトリに以下のファイルがある file1 file2 file3 outfile1 outfile2 • infile1 infile12 tmpfile102 README123 問題:ファイルを名前で探したい 1. 2. 3. 4. ファイル名が file で始まるもの ファイル名に file が含まれているもの ファイル名が 2 で終わっているもの ファイル名末尾に3桁の数字が付いているもの こんなとき、正規表現が活躍する 33 (自由課題)調べてみよう • Linuxでの ls コマンド • Linuxでの grep コマンド または egrep コマンド などでの正規表現(メタ文字)はどうなっているか? (注)これらは、本授業で取り扱う正規表現とは少し 異なっています。いわば拡張正規表現となっていま す。本授業の正規表現が、本来の正規表現です。 参考文献 ・詳説 正規表現, Jeffrey E. F. Friedl, O’Reilly Japan(2003). 34 これからの話の流れ 35 これからの話の流れ 正規表現 ー> NFA NFA ー> DFA DFA ー> 状態数最小DFA (例で詳しく練習しますので、 しっかり付いて来てください。) 36 それでは正規表現の定義から 37 ウォーミングアップ • 正規表現は、文字列の集合を表現・記述する。 • つまり、正規表現は1つの言語を記述する。 • 例えば、正規表現 a|b は 文字列 a と b の2 つを意味する。 この場合は、正規表現 a|b = { a, b } といった 具合。 38 正規表現の例 落ち着いて 読んでください • 文字 a だけからなる言語 { a } は 正規表現では a と書く。 • 文字列 abc だけからなる言語 { abc } は 正規表現で abc と書く。 • 言語 { aaa } は正規表現で aaa または a3 と書く。 • 言語 { a, b } は正規表現で a|b または a+b と書く。 ここまではいいですか? 39 正規表現の例(2) • 言語 { a, aa, aaa, aaaa, aaaaa, …. } は 正規表現で a† と書く。(“a ダガー”と読む) • 空文字列は正規表現の1つで、εと書く。 (“エプシロン”と読む) • 言語 { ε, b, bb, bbb, bbbb, …} は正規表現 で b* と書く。 (“b アスタリスク”とか“b スター”とか”b星印” などと読む) (参考) dagger, asterisk , epsilon 40 (ちょっと一言?) • 現代ギリシア文字(24文字)の本当の読み方 Α α アルファ Ι ι イョタ Ρ ρ ロ Β β ヴィタ Κ κ カパ Σ σ ς シグマ Γ γ ガンマ Λ λ ラムザ Τ τ タフ Δ δ ゼルタ Μ μ ミ Υ υ イプシロン Ε ε エプシロン Ν ν ニ Φ φ フィ Ζ ζ ズィタ Ξ ξ クシ Χ χ ヒ Η η イタ Ο ο オミクロン Ψ ψ プシ Π π ピ Ω ω オメガ Θ θ シタ 留学生の諸君へ: 日本ではギリシャ文字の読み方が人によりバラバラです。 通常はギリシャ文字を英語読みしたものを採用しています。 41 チャレンジ問題 それでは、正規表現 a|b* が表しているのはつ ぎのどれですか? ① ② ③ ④ { a, b } { a, aa, aaa, ・・・, b, bb, bbb, ・・・ } { ε, a, b, bb, bbb, ・・・ } { ε ab, abab, ababab, ・・・ } 42 正規表現の定義 1. 空文字列記号εは空文字列を意味する正規表現。 2. 文字 x がアルファベットAの要素ならば、x は { x } を 意味する正規表現。 3. RとSが正規表現ならば、正規表現 R | S あるいは R+S は正規表現Rの表す文字列の集合Aと正規表 現Sが表す文字列の集合Bとの和集合。 4. 正規表現 R・S あるいは RS は、Rの表す文字列と Sの表す文字列とをこの順を保って連結した(その順 に並べ繋ぎ合せた)文字列すべてからなる集合。 5. Rが正規表現ならば、 R*は、Rの表す文字列をゼロ 個以上連接した(並べた)ものすべてからなる集合。 このような定義文は、正確に延べようとすればするほどますます 一般には分かりにくいものになります。すぐに理解できないのは 普通です。安心してください。でも今理解しましょう。 43 正規表現の定義(再) アルファベットA上の正規表現とは、以下の規 則によって作られるもの(表現)のことである。 1. 空文字列εは正規表現である。 2. Aの要素 x ( x∈A ) は正規表現である。 3. RとSがともに正規表現ならば、 R|S RS R* はいずれも正規表現である。 44 練習: 以下の正規表現が表す言語は? ① abcd ② a* ③ ab* ④ (ab)* ⑤ bc(2|4)* ⑥ a†bcd* 45 例:アルファベットA = { a, b, c } 上の正規表現 • • • • • • • ε a c acb ab|b c(cb|a) a(a|b)*cba 46 練習:正規表現で書いてみよう • { automaton } • { file0, file1, file2, file3, …, filen, … } • { ε, ab, aabb, aaabbb, aaaabbbb, … } 注意! 難問が含まれています。 47 正規表現をFAで表現してみよう (注)このようなことができることは、 数学的に証明されています。 任意の正規表現に対して、それが表す 言語Lをちょうど受理するFAが存在する。 また、この逆も成り立つ。 48 1. R=ε ε i f1 49 2.R=a i a f1 50 3.R|S R f1 i S 51 4.RS i R S f1 52 5.R* ε ε ε R i f1 ε 53 練習 多少の修業が 必要です。 • 次の正規表現αをFAで表現しなさい。 α= a(a|b)*bb 教科書pp.143-151 参照のこと。 54 この練習は次回やりましょう。 どうすればできそうか、お茶でも飲み ながら考えてみてください。 55 次のそして今日最後の話し • 状態数が最も少ないFAの存在とその求め方 56 M1の状態遷移図 a i a a 1 b b a 2 f a b b 3 57 M1が受理する文字列は? a i a a 1 b b a 2 f a b b 3 58 M1が受理する文字列は? • 例えば、 (すでにやりましたが、再度考えてみて ください。) 59 M1と等価なFAの状態遷移図(No.2) a i a b a 1,2 f a b b 3 60 定 義 FA同士が等価とはどういう意味? • 2つのFA M1 と M2 とがあり、これらが等価で あるとは、 M1 が受理する文字列はM2も受理 するとともに、 M2 が受理する文字列はM1 も 受理するということ。 61 FA と L(G) との関係 • 正規文法G • 正規言語L(G) • 有限オートマトンM L(G) M1 M2 M3 • 1つのL(G)に対して、複数のFAがあり得る。 62 • 能力的に等価なFAがある。 用語定義と問題提起 • 能力的に等価なFA群のうち、状態数が最も 少ないものを、「最少化FA」あるいは「最簡型 FA」と呼ぶことにしよう。 • ここで、「最簡型FA」はどうやって求めたらい いのだろうか? 一般的な手続きはどうなっているのか? (注)このようなFAの存在はOKですよね。 Why?(考えてみてください。) 63 Myhill-Nerodeの定理 • いま、受理・生成能力が同じFAの中で、状態 数が最も少ないFA(最簡型FA)を求めたい。 その理論的根拠を与えてくれるのが標記の Myhill-Nerodeの定理である。 理論的にはとても とても重要な定理 64 ちょっとだけ覗いてみよう! Myhill-Nerode関係 • 定義: 到達不可能 ⇔ 初期状態から到達することのできないこと。 そのような“状態”を到達不可能状態と呼ぶ。 • 定理: 到達不可能状態は、O( |K| |Σ| )の 計算量で見い出される。 • 定義(Myhill-Nerodeの関係): FAの2つの状態pとqが等価 ⇔[δ(p, w) ∈F ⇔δ(q,w)∈F for any w∈Σ*] 65 Myhill-Nerodeの定理 次の3つの命題は等価である。 1. アルファベットS上の言語Lが DFA M で認識される。 2. 言語L は、右不変でかつ有限指標な 同値関係における同値類の和集合である。 3. 言語L に対し、関係RL は有限指標である。 後日説明します。 66 この定理で得られる同値類に着目する • [p]: pと等価な状態からなる集合(同値類) • DFA M に対する同値類オートマトン: Q’={[q]| q∈Q} Σ’=Σ q0’=[q0] F’={[q]| q∈F} δ’([q], a) = [δ(q,a)] 67 得られる知見 • 定理: 同値類オートマトンはもとのFAと同じ 言語を受理する。 • Myhill-Nerodeの定理を証明する際に、この 同値類の作り方もいっしょに得られる。その 作り方が、最簡型DFA作成手順そのものと なっている。 68 こんな理屈もありますが、… • 後日詳しくやりましょう。 いまは気にしないでおきましょう。 69 最簡型FAの求め方 • いろいろ知られている。 • わかりやすいものは以下のものです。 70 最簡DFAを求める手順 重要 1. P0 = { F, K-F } 状態の集合Kを2つに 分割する。 n=0とおく。 2. 任意のnについて、Pnの細分化(分割)を 行い、その結果を、Pn+1とする。 3. Pn = Pn+1 となるまで手順2を繰り返す。 71 具体例で説明しましょう • 図2.18 (p.53) 72 今日はここまで。お疲れ様。 • 次回は、今回までの復 習と第2章の最簡型DFA を求める練習です。 余力があったら予習し てみてください。 73 クールダウン問題 問題1 FAにはどんな種類があるか? 74 今日のポイント(再掲) 1. 2. 3. 4. 有限オートマトン(復習・確認) 正規表現 (regular expression) 正規表現とオートマトンの関係 最簡型オートマトンの作り方 (DFA -> min-DFA) 超高速オートマトン? 75
© Copyright 2024 ExpyDoc