550 likes | 682 Views
形式言語とオートマトン 2014 ー第 5&6 日目ー. 東京工科大学 コンピュータサイエンス学部 亀田弘之. 前回までの確認. 有限オートマトン (FA) FA の定義と記述法 テープ上を一方向に動くヘッド (テープ上の記号を読みながら、内部状態を変えていく) M = <K, Σ, δ, q 0 , F> 状態遷移図 FA の種類 決定性 FA ( DFA ) 非決定性 FA ( ε 遷移のあるものとないもの) 言語認識能力はどの FA でも同じ。 正規言語(正規表現)を認識可能。. 前回までの確認(2). 正規表現を認識する FA の存在とその構成法
E N D
形式言語とオートマトン2014ー第5&6日目ー 東京工科大学 コンピュータサイエンス学部 亀田弘之
前回までの確認 • 有限オートマトン(FA) • FAの定義と記述法 • テープ上を一方向に動くヘッド(テープ上の記号を読みながら、内部状態を変えていく) • M = <K, Σ, δ, q0, F> • 状態遷移図 • FAの種類 • 決定性FA(DFA) • 非決定性FA(ε遷移のあるものとないもの) • 言語認識能力はどのFAでも同じ。 • 正規言語(正規表現)を認識可能。
前回までの確認(2) • 正規表現を認識するFAの存在とその構成法 • 正規表現αが与えられる。 • 正規表現αに対して、ε-NFA を構成する。 • ε-NFA をDFAに書き換える。 • DFAを状態数最少のDFAに書き換える。 • Min-DFAをシミュレートするプログラムを作成する。
前回の積み残し • 正規表現 α = a(a|b)*bb で定義される言語を受理するDFAを求める。 • まず、αと等価なε-NFAを書きだす。 • そのε-NFAと等価なDFAを作る。 • 得られたDFAをもとに、そのDFAと等価であり、かつ、状態数が最少となっているDFAを求める。
確認問題集 • (少しずつこなしていってください。)
a p a q b r a b b 確認問題1 • (オートマトンの定義)次の状態遷移図で与えられるオートマトンを、 M=<K,Σ,δ,q0, F> の5つ組で記述しなさい。
確認問題 • 前問のオートマトンの動作のトレース • 次の文字列のうち、前問のオートマトンMが受理するのはどれとどれですか? • aabba • bababbb • aaaa • bbba
8 確認問題 • 下図のε-NFAをDFAに書き換えなさい。 a 4 b b ε ε ε a 1 2 3 6 7 b 5 c c ε
確認問題 • DFAからmin-DFAを求める手順について述べなさい。(理論的根拠は、後日お話します。 Myhill-Nerodeの定理がポイントです。)
確認問題 • (正規表現を受理するmin-DFAを求める) 次の正規表現を受理するmin-DFAを求めよ。 • (ab|bc)*a(b|c) • (a|b|ε)(ab|b)*bc • (a|b)*a(a|b)
今日からの話題 • FAの様相(configuration)(第2章の補足) • 演習 第5回はここまで。 • プッシュダウンオートマトン(pushdown automaton)(第3章の話)
FAの様相 • FAの動作の様子・状況を様相(configuration)という。 • 動作開始時の様相を特に、初期様相という。
様相の表現 入力文字列 入力文字列の末尾
様相表現の例 • (具体例で理解しよう)教科書p.36 問2.1
1 0 q 0 1 p 0 r 1 FA M = <K, Σ, δ, q0, F>
1 0 q 0 1 p 0 r 1 FA M = <K, Σ, δ, q0, F> 様相(p, 11010) |- (q,1010) |- (q,010) |- (q,10) |- (q, 0) |- (q, ε) (p,11010) |*- (q,ε) <= Mは入力文字列 11010 を受理
様相(configuration)という用語は、本を読んでいると時々出てきます。例えば、「様相論理学」。この英語はModal Logic。混乱しないように! • オートマトンの動作状況を表現する単なる1つの方法にすぎません。でも、便利ですよね。
自主練習 教科書p.58の【演習問題】にチャレンジしてください。
ここから新しい話し Let’s get down to today’s topics. • (第3章に入ります)
でも、今年は復習をしましょう。 • まずは、議論をしましょう!
自分の課題を見つけよう。 • まずは、議論をする。 • 議題:この授業をうけ、ここまでに学んだことは何か? (単語だけでもいいので多く書き出すこと) • 成果物:自分が理解していない用語(概念)や事実(内容)のうち、最も重要だと思うものを1つ書きだす。
2.課題 次のε-NFAと等価な状態数最少のDFAを求めよ。2.課題 次のε-NFAと等価な状態数最少のDFAを求めよ。 M = { 状態の集合Q, 入力アルファベットS, 状態遷移関数δ,初期状態σ, 最終状態の集合F } ただし、 ・Q = { 1, 2, 3 } ・S = { a, b } ・σ = 1 ・F = { 1 } ・δ: δ(1,b)={2}, δ(1,ε)={3}, δ(2,a)={2, 3}, δ(2,b)={3}, δ(3,a)={1}
ヒント • 状態遷移図を書く。 • 等価なDFAを求める。 • 状態数最少のDFAを求める。
形式言語とオートマトン2014ー第6日目ー 東京工科大学 コンピュータサイエンス学部 亀田弘之
プッシュダウンオートマトン • 有限オートマトンにプッシュダウンスタックメモリを追加装備したもの。 • Pushdown automaton (PDA)
プッシュダウンスタック • 歴史的view: • 初期の頃:プッシュダウン型スタックメモリ(特殊なハードウェアと考えていた) • 現在:「スタック」は基本的なデータ構造の1つと考えられている。プッシュダウンスタックとは言わず、スタックと呼ぶことが多い。 データ構造: ・配列(またはアレイ) ・リスト ・スタック ・キュー など 続きは「データ構造とアルゴリズム」で。
プッシュダウンスタックのイメージ Pop up Push down LIFO (Last In First Out) 最後に入れたものが最初に取り出される。
PDAの種類 • 決定性プッシュダウンオートマトン Deterministic pushdown automaton (DPDA) • 非決定性プッシュダウンオートマトン Nondeterministic pushdown automaton (NPDA)
DPDA Mの定義 • M = <K, Σ, Γ, δ, q0, Z0, F> • K:内部状態の集合 (#K < ∞) • Σ:入力アルファベット (#Σ < ∞) • Γ:プッシュダウンアルファベット(#Γ < ∞) • δ:状態遷移関数 K×(Σ∪{ε})×Γ → K×Γ* • q0:初期状態 (q0 ∈K ) • Z0:ボトムマーカ ( Z0∈Γ) • F:最終状態 ( F ⊂ K )
DPDA Mの定義 • M = <K, Σ, Γ, δ, q0, Z0, F> • K:内部状態の集合 (#K < ∞) • Σ:入力アルファベット (#Σ < ∞) • Γ:プッシュダウンアルファベット(#Γ < ∞) • δ:状態遷移関数 K×(Σ∪{ε})×Γ → K×Γ* • q0:初期状態 (q0 ∈K ) • Z0:ボトムマーカ( Z0∈Γ) • F:最終状態 ( F ⊂ K )
DFA と DPDA 類似点と相違点 類似点: 相違点: ・入力テープ ・プッシュダウンスタックメモリ (左から右へ読み込むだけ) ・ヘッドとその内部状態
研究 ハードウェア構成でのイメージ なぜ、プッシュダウンスタック?
研究テーマ 内部処理装置 記憶装置 入力記号列
参考図書 • J. ライバー,認知科学への招待 チューリングとウィトゲンシュタインを道しるべに,新曜社,今井邦彦訳(1994). 研究課題: 脳の設計図を記述せよ。 事実を言葉で表現し,列挙せよ。 UMLで表記せよ。 SysMLで表記せよ。 プログラミング言語で表現せよ。
難しいことはさておいて… • (例を見てみましょう)教科書p.68例3.1
DPDA Mの例 • M = <K, Σ, Γ, δ, q0, Z0, F> • K内部状態の集合 = { q0, q1, q2 } (#K < ∞) • Σ入力アルファベット = { a, b } (#Σ < ∞) • Γプッシュダウンアルファベット = { A, Z0 }(#Γ< ∞) • δ:状態遷移関数 K×(Σ∪{ε})×Γ → K×Γ* • q0 初期状態 = q0 (q0 ∈K ) • Z0:ボトムマーカ ( Z0∈Γ) • F:最終状態 F = { q2 } ⊂ K
DPDA Mの例 • M = <K,Σ,Γ,δ,q0,Z0, F> • K = { q0, q1, q2 } • Σ = { a, b } • Γ = { A, Z0 } • δ:状態遷移関数 • q0 :初期期状態 • Z0:ボトムマーカ • F = { q2 }⊂ K
動作のトレース • (q0, aaabbb, Z0)|- (q0, aabbb, AZ0) |- (q0, abbb, AAZ0)|- (q0, bbb, AAAZ0)|- (q1, bb, AAZ0)|- (q1, b, AZ0) |- (q1, ε, Z0)|- (q2, ε, Z0) • |- (q0, aab, Z0)|- (q0, ab, AZ0)|- (q0, b, AAZ0)|- (q0, ε, AZ0) 受理 拒否
動作のトレース 自分で確認しよう • (q0, aaabbb, Z0)|- (q0, aabbb, AZ0) |- (q0, abbb, AAZ0)|- (q0, bbb, AAAZ0)|- (q1, bb, AAZ0)|- (q1, b, AZ0) |- (q1, ε, Z0)|- (q2, ε, Z0) • |- (q0, aab, Z0)|- (q0, ab, AZ0)|- (q0, b, AAZ0)|- (q1, ε, AZ0) 受理 拒否
練習 • 教科書のp.71 問題3.1の DPDA の動作をいろいろな入力に対して調べてみよう。
非決定性プッシュダウンオートマトン • DPDAでの状態遷移関数部分が1対多の写像になる。
DPDA Mの定義(再) • M = <K, Σ, Γ, δ, q0, Z0, F> • K:内部状態の集合 (#K < ∞) • Σ:入力アルファベット (#Σ < ∞) • Γ:プッシュダウンアルファベット(#Γ < ∞) • δ:状態遷移関数 K×(Σ∪{ε})×Γ → K×Γ* • q0:初期状態 (q0 ∈K ) • Z0:ボトムマーカ ( Z0∈Γ) • F:最終状態 ( F ⊂ K )
NPDA Mの定義(再) • M = <K, Σ, Γ, δ, q0, Z0, F> • K:内部状態の集合 (#K < ∞) • Σ:入力アルファベット (#Σ < ∞) • Γ:プッシュダウンアルファベット(#Γ < ∞) • δ:状態遷移関数 K×(Σ∪{ε})×Γ → 2K×Γ* • q0:初期状態 (q0 ∈K ) • Z0:ボトムマーカ ( Z0∈Γ) • F:最終状態 ( F ⊂ K )
DPDA Mの例 • M = <K, Σ, Γ, δ, q0, Z0, F> (教科書p.73の例3.2)
NPDA Mの例 • M = <K,Σ,Γ,δ,q0,Z0, F> • K = {q0,q1,q2,q3,q4,qf } • Σ = { a, b, c } • Γ = { A, Z0 } • δ:状態遷移関数 • q0 :初期状態 • Z0:ボトムマーカ • F = { qf }⊂ K