形式言語とオートマトン 第14回 プッシュダウンオートマトンと全体のまとめ

Slides:



Advertisements
Similar presentations
プログラミング言語論 プログラミング言語の構 文 水野嘉明. 目次 1. プログラミング言語の構文 2. BNF 3. 文脈自由文法 4. 構文図式 2.
Advertisements

オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
コンパイラ 2011年10月17日
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 知能情報学部 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
計算の理論 I ー DFAとNFAの等価性 ー 月曜3校時 大月 美佳.
授業展開#11 コンピュータは 何ができるか、できないか.
文法と言語 ー文脈自由文法とLL構文解析ー
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
データ構造と アルゴリズム 知能情報学部 新田直也.
計算の理論 I -講義について+αー 月曜3校時 大月美佳.
プログラミング論 II 電卓,逆ポーランド記法電卓
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
コンパイラ 2012年10月15日
コンパイラ 2012年10月22日
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
第2章 「有限オートマトン」.
形式言語とオートマトン2013 ー有限オートマトンー 第5日目
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン2008 ー有限オートマトンー
東京工科大学 コンピュータサイエンス学部 亀田弘之
正則言語 2011/6/27.
形式言語の理論 5. 文脈依存言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I ー 正則表現(今度こそ) ー 月曜3校時 大月 美佳.
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
形式言語とオートマトン Formal Languages and Automata 第4日目
オートマトンとチューリング機械.
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 II 前期の復習 -有限オートマトン-
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳.
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳 平成15年6月2日 佐賀大学知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
2007年度 情報数理学.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
計算の理論 I 非決定性有限オートマトン(NFA)
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
5.チューリングマシンと計算.
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
計算の理論 I プッシュダウンオートマトン 火曜3校時 大月 美佳 平成16年7月6日 佐賀大学知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 亀田弘之
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
形式言語とオートマトン2016 ー有限オートマトンー 第4日目
計算の理論 I ε-動作を含むNFAと等価なDFA
非決定性有限オートマトン 状態の有限集合 入力記号の有限集合 注意 動作関数 初期状態 受理状態の有限集合.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
計算の理論 I プッシュダウンオートマトン 月曜3校時 大月 美佳 平成15年7月7日 佐賀大学知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 亀田弘之
Presentation transcript:

形式言語とオートマトン 第14回 プッシュダウンオートマトンと全体のまとめ 形式言語とオートマトン 第14回 プッシュダウンオートマトンと全体のまとめ 2017年 1月10日 中島

プッシュダウンオートマトン(PDA) チョムスキーの言語の分類 3 階層 文法 受理するオートマトン 正規言語(正規表現) 有限オートマトン 2 文脈自由言語 プッシュダウンオートマトン 1 文脈依存言語 線形拘束オートマトン 句構造言語(自由言語) チューリングマシン

プッシュダウンオートマトン(PDA) PDA = 有限オートマトン + プッシュダウンスタック 有限オートマトン 有限状態制御部 入力テープ a b a b b プッシュダウンスタック (スタックメモリ) 読み取りヘッド 読み書きヘッド (スタックポインタ) 有限状態制御部 A B Z PDA は文脈自由文法と同じ言語クラスを表現する

記憶装置としてのスタック 「後入れ先出し (LIFO: Last In First Out)」の記憶装置 2つの操作 スタックメモリ 2つの操作 スタック ポインタ (SP) push (X):  Xをスタックに記憶する Y = pop(): スタックから値を取り出しYに入れる 20 10 Z 初期プッシュダウン記号 動作: 後に入れたものが先に出てくる Z

記憶装置としてのスタック 「後入れ先出し (LIFO: Last In First Out)」の記憶装置 2つの操作 スタックメモリ 2つの操作 スタック ポインタ (SP) push (X):  Xをスタックに記憶する Y = pop(): スタックから値を取り出しYに入れる 20 10 Z 初期プッシュダウン記号 動作: 後に入れたものが先に出てくる push(10) 10 Z

記憶装置としてのスタック 「後入れ先出し (LIFO: Last In First Out)」の記憶装置 2つの操作 スタックメモリ 2つの操作 スタック ポインタ (SP) push (X):  Xをスタックに記憶する Y = pop(): スタックから値を取り出しYに入れる 20 10 Z 初期プッシュダウン記号 動作: 後に入れたものが先に出てくる 20 push(10), push(20) 10 Z

記憶装置としてのスタック 「後入れ先出し (LIFO: Last In First Out)」の記憶装置 2つの操作 スタックメモリ 2つの操作 スタック ポインタ (SP) push (X):  Xをスタックに記憶する Y = pop(): スタックから値を取り出しYに入れる 20 10 Z 初期プッシュダウン記号 動作: 後に入れたものが先に出てくる push(10), push(20), Y1=pop() 10 Z Y1=20

記憶装置としてのスタック 「後入れ先出し (LIFO: Last In First Out)」の記憶装置 2つの操作 スタックメモリ 2つの操作 スタック ポインタ (SP) push (X):  Xをスタックに記憶する Y = pop(): スタックから値を取り出しYに入れる 20 10 Z 初期プッシュダウン記号 動作: 後に入れたものが先に出てくる push(10), push(20), Y1=pop(), Y2=pop() Z Y1=20 Y2=10

プッシュダウンオートマトン(PDA)の定義 PDA M = (Q, Σ, Γ, δ, S, Z) Q: 内部状態の集合 Σ: 入力テープ記号の集合(入力アルファベット) Γ: プッシュダウン記号の集合 δ: 状態遷移関数 δ: Q×(Σ + {ε}) × Γ → Ρ(Q×Γ*) S: 初期状態 S∈Q Z: 初期プッシュダウン記号 Z∈Γ

PDAの例: { anbn | n ≧ 1なる整数 } ・・・ 文脈自由文法: S → aSb | ab A3 B3 A2 B2 A1 B1 文脈自由文法:  構文図式が簡略化できない S S → aSb | ab a b S 文 ω = aaabbb に対する導出木 有限オートマトンでは表現できない ・・・ S a b ε A3 B3 S a b ε A2 B2 S a b ε a a a b b b A1 B1

(Zをpushで戻し続けてAをpush) PDAの例: { anbn | n ≧ 1なる整数 } 状態遷移グラフ (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε 状態: q0へ遷移 スタック: Z→AZ (Zをpushで戻し続けてAをpush) {(q0, AA), (q1, A)} {(q1, ε)} δ a b (q0, Z) (q0, A) (q1, Z) (q1, A) {(q0, AZ), (q1, Z)} ø 遷移関数 状態: q1へ遷移 スタック: A→A (Aをpushで戻し現状維持) 状態: q1へ遷移 スタック: A→ε (何もしない結局1つ減る) 状態 スタック読取り結果(1回pop)

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b Z (b, Z) / ε 1-1 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A Z (b, Z) / ε 1-2 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A Z (b, Z) / ε 2-1 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A A Z (b, Z) / ε 2-2 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A A Z (b, Z) / ε 3-1 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A A A Z 3-2 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b A 有限状態制御部 A A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A A A Z 4-1 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b A 有限状態制御部 A A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A A Z (b, Z) / ε 4-2 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A A Z (b, Z) / ε 5-1 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A Z (b, Z) / ε 5-2 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b A Z (b, Z) / ε 6-1 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 A Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b Z (b, Z) / ε 6-2 (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 Z

PDAの例: { anbn | n ≧ 1なる整数 } 有限状態制御部 q0 q1 a a a b b b Z (b, Z) / ε 7-E (a, Z) / ZA (b, Z) / ε (a, Z) / Z, (a, A) / A q0 q1 (a, A) / AA (b, A) / ε a a a b b b 有限状態制御部 Z

PDAの最後に: 木構造とスタック 数式の記法(構文木)←FA/正規表現でカバーできない 木構造をたどる処理(再帰的な処理) 文脈自由文法 (再帰的な言語の表現) 木構造をたどる処理(再帰的な処理)  → スタックを使って処理できる 例: 逆ポーランド記法の電卓 (スタックによる計算)

授業のまとめ

正規言語<文脈自由言語<文脈依存言語<句構造言語 形式言語 と オートマトン チョムスキーの言語の分類 制限大 階層 文法 受理するオートマトン 3 正規言語(正規表現) 有限オートマトン 2 文脈自由言語 プッシュダウンオートマトン 1 文脈依存言語 線形拘束オートマトン 句構造言語(自由言語) チューリングマシン 小 正規言語<文脈自由言語<文脈依存言語<句構造言語 正規表現と有限オートマトンは等価である ほとんどのプログラミング言語は文脈自由文法で定義 文脈依存文法は、自然言語のモデルとして十分強力

正規表現と有限オートマトン NFA DFA ε-NFA 正規表現 FAと正規表現は同じ言語クラスを表現するという意味で同等 サブセット構成法 ε動作の除去 DFA 最小化 ε-NFA 正規表現 帰納的構成法 線形再帰方程式 授業:「変換アルゴリズムを示すことで同等である」ことを証明

有限オートマトンの応用例: 正規表現による言語処理 要求分析・設計における仕様記述/検証 コンパイラ(文脈自由文法)へつながる 認識技術 自然言語理解 文字認識 セルオートマトン 計算可能性理論 複雑適応系、数理生物学 微小構造モデリング

応用例: システムの仕様記述 FAを使って,システムの機能仕様(入力→出力)を記述する 例) 電灯のオンオフ 2つの表現方法 ミーリー機械: 応用例: システムの仕様記述  FAを使って,システムの機能仕様(入力→出力)を記述する 例) 電灯のオンオフ PW 2つの表現方法 PW/ON ミーリー機械:  出力が,入力と現在の  状態から決まる 消灯中 点灯中 PW/OFF ムーア機械: 出力が,遷移先の状態  で決まる PW 消灯中/OFF 点灯中/ON PW

応用例: 機械(システム)の仕様記述 例) ストップウォッチ 仕様記述 LB RB LB: 計測開始/停止 例) ストップウォッチ LB RB LB: 計測開始/停止 RB: クリア(停止時)/ラップ(計測時) 仕様記述 RB/LAP追加表示 初期画面 LB 計測中/開始 LB LB 利点 抜けなく正確に記述できる レビューがしやすい RB/クリア 停止中 /停止

■ほぼ機械的にコーディングすることができる!! 状態遷移図からコーディングへ イベント駆動型: イベントに対する動作を状態別に記述 状態駆動型:   状態に対する動作をイベント別に記述 ■ほぼ機械的にコーディングすることができる!!

簡潔でしょう? イベント駆動型による 実装例 戻る enum KT_State {初期画面, 計測中, 停止中}; enum KT_Event {LB, RB, 単位時間経過}; int main(void) { int T = 0; /* 表示時間 */ enum KT_State state = 初期画面; while (TRUE) { enum KT_Event event = get_event(); if (event == LB) { if (state == 初期画面 || state == 停止中) state = 計測中; else if (state == 計測中) state = 停止中; } else if (event == RB) { if (state == 計測中) { display_lap(); else if (state == 停止中) { state = 初期画面; T = 0; display_clear(); if (event = 単位時間経過) { if (state == 計測中) { T += unitTime; display_time(T); return 0; イベント駆動型による 実装例 簡潔でしょう? 戻る

授業の実施内容 (1/2) 1. 概要 9/20 2. 形式言語と帰納的表現 9/27 3. 順序機械: 10/4 授業の実施内容 (1/2) 1. 概要 9/20   ・オートマトンと言語、チョムスキの4階層 2. 形式言語と帰納的表現 9/27   ・語、言語、クリーネ閉包、スター演算 教科書: pp. pp.32-39 3. 順序機械: 10/4   ・ミーリ機械、ムーア機械 教科書: pp.83-88 4. 有限オートマトン(1) 10/11   ・決定性オートマトン(DFA),言語の受理 教科書: pp.89-95 5. 正規言語 10/18   ・正規表現、線形再帰方程式(DFAからの変換) 教科書: pp.96-104 6. 有限オートマトン(2) 10/25   ・非決定性オートマトン(NFA)、DFA化 教科書:pp.105-109 7. 有限オートマトン(3) 11/8   ・εNFA、NFA化、 DFAへの変換 教科書:pp.109-115 8. 中間テスト、講評 11/15

授業の実施内容 (2/2) 9. 有限オートマトン(3) 11/22 10. 有限オートマトン(4) 11/29 授業の実施内容 (2/2) 9. 有限オートマトン(3) 11/22   ・ Myhill-Nerodeの定理、同値類 教科書:pp.115-119 10. 有限オートマトン(4) 11/29   ・ 最小化,応用 教科書:pp.115-125 11. 有限オートマトン(5) 12/6   ・ 中置、ポーランド、逆ポーランド記法 教科書:pp.41-43,78-80 12. 形式言語とBNF記法: 12/13   ・ メタ言語、構文図式 教科書:pp.43-47 13. 形式言語理論と文脈自由文法 12/20   ・ 形式文法,文脈自由文法,導出木 教科書:pp. 145-153 14. PDAとまとめ 1/10    教科書:pp. 125-131 15. テストと解説 1/17 教科書:pp.30-123

期末試験 教科書のみ持ち込みあり 範囲 数式の文法間変換 構文図式+導出木 順序機械 正規表現による言語処理 正規表現と有限オートマトンの間の変換 (P28のアルゴリズム)

文脈自由文法 戻る Basic Visual Basic FORTRAN77 FORTRAN90/95 COBOL65 COBOL言語 (初心者用言語) Visual Basic FORTRAN77 FORTRAN90/95 COBOL65 COBOL言語 (事務処理用言語) COBOL2002 FORTRAN言語 (科学計算用言語) アセンブラ言語 Algol (BNF) BCPL C ANSI C C++ Simula Smalltalk Smalltalk80 Objective-C Java C# Ruby Lisp (関数型言語) Prolog (論理型言語) Lisp1.5 Common Lisp Perl PHP JavaScript awk Python 文脈自由文法 スクリプト型言語 戻る