計算の理論 II 文脈自由文法と プッシュダウンオートマトン

Slides:



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

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
システムソフトウェア 第3回:2007年10月17日(水)   . 2 本日学ぶこと 文法  文字と文字列  無限集合  文法とそのクラス  オートマトン.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
計算の理論 I -言語とオートマトン- 月曜3校時 大月 美佳.
計算の理論 I 文脈自由文法 月曜3校時 大月 美佳 平成15年6月30日 佐賀大学知能情報システム学科.
コンパイラ 2011年10月17日
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
言語処理系(6) 金子敬一.
計算の理論 I ー DFAとNFAの等価性 ー 月曜3校時 大月 美佳.
文法と言語 ー文脈自由文法とLL構文解析ー
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語処理系(5) 金子敬一.
計算の理論 I -講義について+αー 月曜3校時 大月美佳.
スタック長の 特徴付けによる 言語の非DCFL性 証明
コンパイラ 2012年10月15日
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
第2章 「有限オートマトン」.
形式言語とオートマトン2008 ー有限オートマトンー
プログラミング言語論 第3回 BNF記法について(演習付き)
人工知能特論II 第2回 二宮 崇.
正則言語 2011/6/27.
形式言語の理論 5. 文脈依存言語.
計算の理論 II 等価性と標準形 月曜4校時 大月美佳.
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 II Turing機械の合成 月曜5校時 大月美佳 2004/11/15 佐賀大学理工学部知能情報システム学科.
計算の理論 I -Myhill-Nerodeの定理 と最小化-
計算の理論 I ー 正則表現(今度こそ) ー 月曜3校時 大月 美佳.
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
計算の理論 II Turing機械 月曜4校時 大月美佳.
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
計算の理論 I -Myhill-Nerodeの定理 と最小化-
計算の理論 II 言語とクラス 月曜4校時 大月美佳.
計算の理論 II 時間量と領域量 月曜5校時 大月美佳 2019/4/10 佐賀大学理工学部知能情報システム学科.
計算の理論 II 計算量 月曜5校時 大月美佳 2019/4/10 佐賀大学理工学部知能情報システム学科.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I 文脈自由文法の標準形 月曜3校時 大月美佳.
計算の理論 II 前期の復習 -有限オートマトン-
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳.
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳 平成15年6月2日 佐賀大学知能情報システム学科.
計算の理論 I 正則表現とFAとの等価性 月曜3校時 大月 美佳 平成15年6月16日 佐賀大学知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I ー正則表現とFAの等価性 その1ー
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
文法と言語 ー文脈自由文法とLR構文解析ー
計算の理論 I 非決定性有限オートマトン(NFA)
計算の理論 I -数学的概念と記法- 火曜 12:50~14:20 大月 美佳 2004年4月20日.
5.チューリングマシンと計算.
計算の理論 I -プッシュダウンオートマトン-
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
計算の理論 I プッシュダウンオートマトン 火曜3校時 大月 美佳 平成16年7月6日 佐賀大学知能情報システム学科.
計算の理論 I -数学的概念と記法- 月曜3校時 大月 美佳.
ミニテスト12解答 月曜3校時 大月 美佳.
形式言語とオートマトン 第14回 プッシュダウンオートマトンと全体のまとめ
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I 文脈自由文法 月曜3校時 大月美佳.
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
計算の理論 I ε-動作を含むNFAと等価なDFA
計算の理論 I ε-動作を含むNFA 火曜3校時 大月 美佳 平成16年5月25日 佐賀大学知能情報システム学科.
計算の理論 I ー ε-動作を含むNFA ー 月曜3校時 大月 美佳.
計算の理論 I プッシュダウンオートマトン 月曜3校時 大月 美佳 平成15年7月7日 佐賀大学知能情報システム学科.
計算の理論 II 多テープTuring機械 月曜4校時 大月美佳 平成16年11月29日 佐賀大学知能情報システム学科.
計算の理論 II 時間量と領域量 月曜4校時 大月美佳 2019/9/13 佐賀大学理工学部知能情報システム学科.
計算の理論 I 最小化 月曜3校時 大月 美佳 平成15年6月23日 佐賀大学知能情報システム学科.
Presentation transcript:

計算の理論 II 文脈自由文法と プッシュダウンオートマトン 月曜4校時 大月美佳

講義の前に 前回の失敗:消し忘れ 正 誤 δ 1 [q0] [q0,q1] [q0,q1 ,q2] [q0,q2] 1,0 0,1 1 前回の失敗:消し忘れ  δ 1 [q0] [q0,q1] [q0,q1 ,q2] [q0,q2] q2 q1 1,0 0,1 1 開始 q0 正 M=(Q, Σ, δ, [q0], F) Q={[q0], [q0,q1], [q0,q1,q2], [q0,q2]} Σ={0, 1} δ:左表 F={[q0,q1,q2], [q0,q2]} → {[q0], [q0,q1], [q0 ,q1,q2], [q0,q2]} q2 q1 1,0 0,1 1 開始 q0 誤

最小化の変化 全て同値になる よって求めるDFAは、 全状態が最終状態だから q0≡q1, q0≡q2 , q0≡q3 , q0≡q4 , q2≡q3 , q2≡q4 , q3≡q4 よって求めるDFAは、 M=(Q, Σ, δ, q0, F) Q={q0}、Σ={0, 1}、δ(q0, 0)=q0, δ(q0, 0)=q0 F={q0} よって求めるDFAは、 M=(Q, Σ, δ, [q0], F) Q={q1, q2, q3} Σ={0, 1}、δ:左表 F={q3} よって求めるDFAは、 M=(Q, Σ, δ, [q0], F) Q={q1, q2, q3} Σ={0, 1}、δ:左表 F={q3}

今日の講義内容 文脈自由文法 プッシュダウンオートマトン 定義 文脈自由言語(クラスCFL) 構文木と最左導出 構成と定義 計算状況(動作、ε動作) 決定性、非決定性

文脈自由文法の定義 文脈自由文法(context-free grammar) → G = (N, Σ, P, S) 要素 x ∈N 非終端記号(non-terminal symbol) 終端アルファベットΣ (有限集合) 要素 x ∈ Σ 終端記号(terminal symbol) 開始記号(start symbol) S∈Q 生成規則(production) P⊆N×(N∪Σ)* A→αと書く (α=εのときε生成規則) A→α1|…| αn = A→α1,…, A→αn → G = (N, Σ, P, S)

文脈自由文法の例 G=(N, Σ, P, S)を N={S}, Σ={a, b}, P={S→ab, S→aSb} N={S, A, B}, Σ={x, 0, 1}, P={S→xA, A→0|1B, B→ε|0B|1B}

⇒G G=(N, Σ, P, S)に対して、V=N∪Nとする。 u, vが次の(1), (2)を満たすときu⇒Gvと書くことにする。 u=xAy, v=xαy (x, y, α∈V*, A∈N)。 A→αはGの生成規則。

導出 (derive) ⇒G V*の要素の列w0, …, wnが * ⇒Gの反射的かつ推移的閉包 w0⇒Gw1⇒G …⇒Gwn となっているとき、 w0からwnが導出されるといい、 w0 ⇒Gwn または w0 ⇒Gwn と書く。(Gは省略可: ⇒、⇒、⇒) * n * n

文脈自由言語 (context-free language) Gの生成する語w 開始記号Sより 終端アルファベットΣ上の記号列wが Gの生成規則によって導出されるとき Σ上の言語L∈Σ*に対して GがLを生成する: L=L(G)となるとき。 文脈自由言語: Lを生成する文脈自由文法が存在する。

文脈自由言語の例 その1 Gを例1の文脈自由文法としたとき、 Gを例2の文脈自由文法としたとき、 S⇒aSb⇒aaSbb⇒…⇒an-1Sbn-1⇒anbn となり、 L(G)={anbn |n≧1} である。 Gを例2の文脈自由文法としたとき、 S⇒xA⇒x0 S⇒xA⇒x1B⇒x10B⇒x10 L(G)={xu|u=1v, v∈{0, 1}*またはu=0}

文脈自由言語の例 その2 G=(N, Σ, P, S)を N={S}, Σ={), (}, P={S→SS, S→(S), S→()} とすると、言語L(G)はかっこの入れ子構造 N={S}, Σ={0, 1, Φ, +, *, ), (}, P={S→Φ|0|1|(S+S)|SS|S*} とすると、言語L(G)は{0, 1}上の正規表現全体

文脈自由文法のクラス 文脈自由文法のクラスをCFLと書く CFL ={L|L=L(G)となる文脈自由文法Gがある}

構文木 (parse tree) 文脈自由文法G=(N, Σ, P, S)に対して、構文木を帰納的に定義する。 ここで、V=N∪Σとする。

構文木の定義(1) 各A∈Vに対して、記号Aをラベルとする1つの頂点のみからなる木 は構文木である。 A

構文木の定義(2) A→εに対して、 は構文木である。 A ε

構文木の定義(3) T1, …Tnを根のラベルが、A1, …, An∈Vである構文木とする。Gの生成規則A→A1…Anに対して、Aを根とする木 は構文木である。 A A1 … An T1 Tn

構文木の定義(4) (4) 上の(1)~(3)の規則を使って定義される有限の木のみを構文木という。

構文木の例 G=(N, Σ, P, S)を N={S}, Σ={a, b}, P={S→ab, S→aSb} としたとき、構文木は右図。 a 0110010110 0110010110 a b S

最左導出 (leftmost derivation) * 導出u⇒vの各ステップにおいて一番左にある非終端記号が置き換えられているとき、その導出は最左導出である。 G=(N, Σ, P, S)を N={S}, Σ={), (}, P={S→SS, S→(S), S→()} とすると、 S⇒(S)⇒((S))⇒((SS))⇒((()S)⇒((()())) は最左導出。

走査 (traverse) 根から始めてどのように走査するか A⇒u 最左導出 →左側順走査 * ) ( S (preorder traverse) * ) ( S

補題 G=(N, Σ, P, S)を文脈自由文法とする。導出u⇒vがあるならば、uからvへの最左導出がある。 証明 u=w1A1w2…wkAkwk+1(Ai∈N, wj∈Σ*)とする。 このとき、vの分解v= w1v1w2…wkvkwk+1があって、 Ai ⇒vi (1≦i≦k)となる。 そこで、 Ai ⇒viに対する構文木を取り、その左側順走査を 考えれば、 Aiからviへの最左導出が得られる。 それらの最左導出を、非終端記号の順に適用していけば 求める最左導出が得られる。

プッシュダウンオートマトン (pushdown automaton) B ヘッド PDA=FA+プッシュダウンストア プッシュダウンストア(スタック) 記号列を記憶している プッシュダウンヘッドが一番上の記号を指す 一番上の記号(トップ記号)のみ読める 2つの操作 プッシュ(push): 新たな記号列を積む ポップ(pop): トップ記号を取り除く

PDAの定義 プッシュダウンオートマトン (pushdown automaton (pda)) M=(Q, Σ, Γ, δ, q0, Z0, F) Q: 状態の有限集合。 Σ:入力アルファベット。 Γ: プッシュダウンストアのアルファベット δ: 遷移関係=遷移の集合 Q×(Σ∪{ε})×Γ×Q×Γ*の有限部分集合。 (q, a, Z, p, α) ∈δのとき、(p, α) ∈δ(q, a, Z)と書く。 q0: 初期状態、q0∈Q Z0: 初期記号、 Z0∈Γ F: 最終状態の集合、 F⊆Q

PDAの模式図 入力 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 有限 制御部 アルファベット アルファベット 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 有限 制御部 アルファベット アルファベット A, BΓ 0, 1Σ 遷移関数δ A B 有限状態系 最終状態の集合 qx F q0, qx, qf Q Z0 qf q0 状態の集合 初期記号 初期状態

計算状態 (configuration) 計算状態とは、 PDA M=(Q, Σ, Γ, δ, q0, Z0, F)に対して、 状態q∈Q, 入力w∈Σ*, 記号列α∈Γ* から成る組 (q, w, α) 読み残し w=0110011010 q 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 有限 制御部 A B プッシュダウン ストアの内容 α=ABAAA

├M ├M の定義 Q×Σ*×Γ*からQ×Σ*×Γ*への関係 (q, ax, Zα) ├M (p, x, βα) ⇔ (p, β)∈δ(q, a, Z) p, q∈Q, a∈Σ∪{ε}, Z∈Γ, α,β∈Γ* 読み方: 遷移(p, β)∈δ(q, a, Z)によって、 計算状態(q, ax, Zα) から(p, x, βα)に動作する。

ε動作 (ε-move) 遷移(p, β)∈δ(q, a, Z)において、a=εのとき、入力記号を読み込まずに動作すること。 (q, x, Zα) ├M (p, x, βα) Zがポップされ、βがプッシュされる。 プッシュダウンストアが空のときは動作は起こらない。

PDAの例 PDA M=(Q, Σ, Γ, δ, q0, Z0, F) Q={q0, q1, q2}, Σ={0, 1}, Γ={Z0, 0, 1}, F={q2} δを右表とする。 q a Z δ(q, a, Z) q0 Z0 {(q0, 0Z0), (q1, 0Z0)} 1 {(q0, 1Z0), (q1, 1Z0)} {(q0, 00), (q1, 00)} {(q0, 01), (q1, 01)} {(q0, 10), (q1, 10)} {(q0, 11), (q1, 11)} q1 {(q1, ε)} ε {(q2, ε)}

例の動作 (q0, 0100101, Z0) ├M (q0, 100101, 0Z0) ├M (q0, 00101, 10Z0) a Z δ(q, a, Z) q0 Z0 {(q0, 0Z0), (q1, 0Z0)} 1 {(q0, 1Z0), (q1, 1Z0)} {(q0, 00), (q1, 00)} {(q0, 01), (q1, 01)} {(q0, 10), (q1, 10)} {(q0, 11), (q1, 11)} q1 {(q1, ε)} ε {(q2, ε)}

├M、 ├M ├M 省略形 t * =├M の反射的かつ推移的閉包 =(p0, w0, α0 )├M (p1, w1, α1 )├M …├M (pt, wt, αt ) t: 計算のステップ数 省略形 ├、 ├ * t t *

2種類の受理 最終状態によって受理 最終状態と空ストアによって受理 入力wに対して、q∈Qとγ∈Γ*が存在して (q0, w, Z0)├M (q, ε, γ) L(M): 最終状態によって受理される記号列の集合 最終状態と空ストアによって受理 入力wに対して、q∈Qが存在して (q0, w, Z0)├M (q, ε, ε) N(M): 最終状態と空ストアによって受理される記号列の集合

受理の例 (q0, 0110, Z0) ├M (q0, 110, 0Z0) ├M (q1, 10, 10Z0) a Z δ(q, a, Z) q0 Z0 {(q0, 0Z0), (q1, 0Z0)} 1 {(q0, 1Z0), (q1, 1Z0)} {(q0, 00), (q1, 00)} {(q0, 01), (q1, 01)} {(q0, 10), (q1, 10)} {(q0, 11), (q1, 11)} q1 {(q1, ε)} ε {(q2, ε)} 0110∈L(M)かつ0110∈N(M) L(M)=N(M)={wwR|w∈{0,1}*} wRはwの反転

2つの受理は同値 言語L⊆Σ*に対して、次の(1)(2)は同値 証明: 次回 あるPDA Mに対してL=L(M)となる。 あるPDA Mに対してL=N(M)となる。 証明: 次回

最後に 開始 ミニテストを提出してから帰ること 次回は、 文脈自由文法とプッシュダウンオートマトンの等価性