内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 計算基礎論 プッシュダウン・オートマトン (Pushdown Automaton) 第2回 ∼ 第4回 FA と正規表現は,本質的に等価な言語の記憶法 {0n1n|n ≤ 0} のような幾つかの単純な言語を記述不可能 . 第5回 . 宮野 英次 [email protected] 今回 . より強力なプッシュダウン・オートマトン (pushdown automaton) 2009 年 内容 復習 CFG との等価性 PDA より強力な言語記述法: 文脈自由文法 (context-free grammar) 非文脈自由言語 まとめ 内容 復習 復習: 文脈自由文法 CFG との等価性 PDA 非文脈自由言語 復習: 生成文字列 文法 以下の方法で生成された文字列全体を文法が生成する言語 生成規則 (production) または書き換え規則 (substitution rule) の集まりからなる 書き換え規則は矢印により分離された文字と文字列 文字は変数と呼ばれる 文字列は,変数と終端記号と呼ばれる特別な文字からなる . . . 1 開始変数を書き下す 2 書き下された変数とその変数で始まる規則を探す. 3 書き下された変数を規則の右辺で置き換える 4 変数がなくなるまでステップ 2 および 3 を繰り返す 変数文字は,多くの場合大文字 終端記号は,多くの場合小文字,数,特別な文字 . . ある変数が開始変数 (第 1 規則の左辺の変数とする) 文法 G1 A → 0A1 A→B B→] 文法 G1 は 3 つの規則 G1 の変数は A と B .A は開始変数 G1 の終端記号は,0, 1, ] . . . 文法 G1 の場合 (A → 0A1, A → B, B → ]) 例えば,文字列 000]111 などを生成 導出列 (derivationa) A ⇒ 0A1 ⇒ 00A11 ⇒ 000A111 ⇒ 000B111 ⇒ 000]111 まとめ 内容 復習 PDA CFG との等価性 非文脈自由言語 まとめ 内容 復習 復習: 有限オートマトン CFG との等価性 PDA 非文脈自由言語 まとめ 復習: 有限オートマトン No temporary memory Finite Automaton (FA) state control temporary memory a a b b input input memory CPU 制御部 (state control) は有限の状態と遷移関数をもつ output memory 有限オートマトンの能力の限界は,直接的には,内部の記憶 状態が有限個にとどまっていることに起因 program memory Automaton ⇒ 状態を無限個にすれば能力はあがりそうだが. . .どうする? ⇒ スタックを補助記憶として導入 例: 自動販売機,自動ドア 内容 復習 PDA CFG との等価性 非文脈自由言語 プッシュダウン・オートマトン まとめ 内容 復習 CFG との等価性 PDA 非文脈自由言語 プッシュダウン・オートマトン pushdown automaton (PDA) Stack 非決定性有限オートマトンに,プッシュダウン・スタックを 追加 Stack input memory CPU output memory program memory state control a a b b x y z input stack Pushudown Automaton スタック: Last In, First Out (LIFO),領域は無制限 例: コンパイラ 非決定性は本質的 (決定性 PDA は能力が劣る) まとめ 内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 復習 言語 {0n1n|n ≥ 0} を認識する PDA 非文脈自由言語 input アルファベット (入力,スタック) 0 0 0 1 1 1 push 0 0 入力アルファベットを Σ として,Σε = Σ ∪ {ε} スタック・アルファベットを Γ として,Γε = Γ ∪ {ε} stack 遷移関数の定義域 (何も読まずに動作することがある) 入力を読む Q × Σε × Γε 0 のときは,それをスタック上にプッシュ それぞれの 1 のときは,0 をスタックからポップ 遷移関数はスタックへの書き込みも行う スタックが空になり,ちょうどそのときに入力が終わるなら ば受理 遷移関数 δ は,Q × Γε の要素を返す スタックが空になるが,1 の列が残っているか,1 の列が終 了したがスタックが 0 の列を含んでいる場合には拒否 非決定性 遷移関数 δ は,δ : Q × Σε × Γε → 2Q×Γε 1 の列の後に 0 が現れたら,その時点で入力を拒否 PDA CFG との等価性 非文脈自由言語 まとめ 内容 復習 PDA の形式的な定義 PDA CFG との等価性 非文脈自由言語 PDA の計算の形式的定義 入力 定義 2.13 w = w1 w2 · · · wm,wi ∈ Σε プッシュダウン・オートマトンは 6 個組 (Q, Σ, Γ, δ, q0 , F ). ここで,Q, Σ, Γ, F はすべて有限集合 . M は w を受理 (accept) 以下の 3 条件を満たす状態の列 r0 , r1 , · · · , rm ∈ Q と文字 列 s0 , s1 , · · · , sm ∈ Γ∗ が存在するならば,M は w を受理 1 Q は状態の集合 2 Σ は入力アルファベット 3 Γ はスタック・アルファベット 1 4 δ : Q × Σε × Γε → P(Q × Γε) は遷移関数 2 5 q0 ∈ Q は開始状態 6 F ⊆ Q は受理状態 . 3 . . まとめ PDA = NFA + スタック M1 復習 CFG との等価性 PDA の形式的な定義の準備 PDA M1 内容 PDA . r0 = q0 かつ,s0 = ε (空スタックで開始状態から始動) i = 0, · · · , m − 1 について,(ri+1 , b) ∈ δ(ri, wi+1 , a) ここで,a, b ∈ Γε と t ∈ Γ∗ について,si = at と si+1 = bt (状態,スタック,入力文字により正しく動作) rm ∈ F (入力の最後で受理状態) まとめ 内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 復習 CFG との等価性 PDA PDA の例 例 2.14 言語 {0n1n|n ≥ 0} を認識する PDA M1 M1 = ({q1 , q2 , q3 , q4 }, {0, 1}, {0, $}, {q1 , q4 }) M1 = ({q1 , q2 , q3 , q4 }, {0, 1}, {0, $}, {q1 , q4 }) 0 0 ∅ ∅ ∅ ∅ $ ∅ ∅ ∅ ∅ ε ∅ {(q2 , 0)} ∅ ∅ 1 0 ∅ {(q3 , ε)} {(q3 , ε)} ∅ $ ∅ ∅ ∅ ∅ ε ∅ ∅ ∅ ∅ 0 ∅ ∅ ∅ ∅ ε $ ∅ ∅ {(q4 , ε)} ∅ q1 ε {(q2 , $)} ∅ ∅ ∅ q4 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 復習 PDA の例 , $ q2 $ q2 0, 0 PDA ,$ q3 1, 0 $ CFG との等価性 非文脈自由言語 文脈自由文法との等価性 例: 2.18 言語 {ww R|w ∈ {0, 1}∗} を認識する PDA M3 q1 , 1, 0 $: スタック上の特別な文字 内容 文脈自由文法とプッシュダウン・オートマトンは,その記述 能力において等価である 0, 0 1, 1 文脈自由言語とは,文脈自由文法によって生成できる言語 定理 2.20 q4 ,$ q3 まとめ PDA の例 例 2.14 言語 {0n1n|n ≥ 0} を認識する PDA M1 入力 stack q1 q2 q3 q4 非文脈自由言語 0, 0 1, 1 あるプッシュダウン・オートマトンがある言語を認識するとき, かつそのときに限り,その言語は文脈自由言語である まとめ 内容 復習 PDA CFG との等価性 非文脈自由言語 まとめ 内容 復習 CFG との等価性 PDA CFL → PDA 非文脈自由言語 まとめ 証明のアイデア ある文脈自由言語を考える その CFG G による導出の過程 S ⇒ 0S1 ⇒ 00S11 ⇒ · · · ⇒ w ∈ A G と等価な PDA P に変換する方法を示す 補題 2.21 PDA P は,入力 w に対する導出列が存在するかどうかを チェック G が w を生成するならば,その入力を受理するように設計 ある言語が文脈自由であるならば,その言語を認識するプッシュ ダウン・オートマトンが存在する . 導出の各々のステップは,変数と終端記号からなる中間文字列 書き換えが複数可能なときは,非決定性を用いて,正しい書 き換えの列を推測する 文字列の導出が完了したとき P が入力として受け取った文字 列と導出列が一致するかどうかを調べる 中間文字列の一部 (最左の変数の右側のみ) をスタック上に保 持する . 内容 復習 PDA CFG との等価性 . 非文脈自由言語 まとめ 内容 復習 01A1A0 2 2 . . 3 まとめ 1 A 0 $ 補題 2.27 あるプッシュダウン・オートマトンがある言語を認識するならば, その言語は文脈自由である 印となる文字 $ と開始変数をスタックに置く 以下を繰り返す 1 非文脈自由言語 A 0 1 1 0 0 1 1 CFG との等価性 PDA → CFL PDA P の動作 state control PDA スタックの先頭が変数 A ならば,非決定的に A に対する規 則を 1 つ選択し,規則に従い A を書き換える スタックの先頭が終端記号 a ならば,入力から次の文字を読 み,a と比較する.一致するならば,繰り返す.一致しない ならば,非決定性のこの計算枝では拒否する. スタックの先頭が文字 $ ならば受理状態に入る.このとき, すべての入力文字が読み出されていたならば,これは受理を 意味する . . 内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 復習 証明のアイデア Case 1: 最初にプッシュした文字が最後に取り出される a を最初の動作で読み出される入力文字,b を最後の動作で 読み出される文字,r を p の直後の状態,s を q の直前の状 態とする 状態の対 p と q に対し,文法では変数 Apq を準備 Apq から,状態 p でスタックが空の状況から,状態 q でス タックが空の状況へ P を遷移させるすべての文字列を生成 するように文法 G を構成する 規則: Apq → aArsb 状態が p のときに上の文字列が与えられると P はスタックの 内容に関らず,その文字列を読んで状態 q に遷移する 状態 q に遷移したとき,スタックの内容に変化は無い CFG との等価性 PDA まとめ 構成のアイデアの続き 構成のアイデア 復習 非文脈自由言語 証明のアイデア (続き) 文字列が PDA を開始状態から受理状態へ導くとき,G がそ の文字列を生成するように構成する 内容 CFG との等価性 PDA 非文脈自由言語 Case 2: 途中の状態 r でスタックが空になる 規則: Apq → AprArq まとめ 内容 復習 PDA CFG との等価性 正規言語と文脈自由言語 正規言語,regular language 有限オートマトンで認識される言語 文脈自由言語,context-free language プッシュダウン・オートマトンで認識される言語 非文脈自由言語 系 2.32 すべての正規言語は文脈自由言語である . Context-Free Language Regular Language . 非文脈自由言語 まとめ 内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ 内容 復習 プッシュダウン・オートマトンの限界 A が文脈自由言語であるとする.A に依存するある数 p (ポンピ ング長) が存在して,s が少なくとも長さ p である A の任意の文 字列であるとき,s は次の条件を満たす 5 つの断片 s = uvxyz に分割できる 入力テープの内容を書き換えることができない 補助記憶はスタックのみ 非文脈自由言語の例: 言語 {anbncn|n 言語 {aibj ck|0 言語 {ww|w ∈ まとめ 定理 2.34 (文脈自由言語に対するポンピング補題) . 無限個の可能性を記憶することが難しい 非文脈自由言語 CFL に対するポンピング補題 PDA によって認識不可能な言語とは? 以下の強い条件では,処理できないような課題とは? 有限個の状態しか無い CFG との等価性 PDA ≥ 0} ≤ i ≤ j ≤ k} 1 各 i ≥ 0 について,uv ixy iz ∈ A 2 |vy| > 0,すなわち,v 6= ε または y 6= ε 3 |vxy| ≤ p |s| は s の長さ,y i は y を i 個連結したもの,y 0 は ε {0, 1}∗} . . 内容 復習 PDA CFG との等価性 非文脈自由言語 まとめ 内容 復習 CFG との等価性 PDA 非文脈自由言語 まとめ . 非文脈自由言語の例 言語 L = {ww | w ∈ {0, 1}∗} は文脈自由言語ではない . 証明. L が CFL であると仮定して,矛盾を導く. . p をポンピング補題により与えられたポンピング長とする s = 0p1p0p1p ∈ L を考える 基本方針: |vxy| ≤ p かつ vy 6= ε となるように s = uvxyz と分割する.uxz が L に属さないことを示して矛 盾を導く まず,|vxy| ≤ p なので,|uxz| ≥ 3p である.従って, uxz が繰り返し列 tt ならば,t の長さは 3p/2 以上である. vxy が s のどこに位置するかによって場合分けする . .. . 例 2.38 証明 (つづき) . . . . . 1 vxy が最初の 0p に含まれる場合: vy = 0k (0 < k ≤ p) と する.このとき uxz = 0p−k1p0p1p である. |uxz| = 4p − k なので,uxz = tt ならば |t| = 2p − k/2 である.従って,t が最初の 1 のブロックの途中で終わるこ . となく,t は記号 0 で終わる.しかし,uxz は 1 で終わるの で,tt と等しいことはあり得ない. s = u v x y z p p p p }| { z }| { z }| { z }| { z · · 0} 0 · · 0} 0 · · 0} 0 · · · 0 1 · · · 1 0 · · · 0 1 · · · 1 s = 0 · · 0} 0 | ·{z | ·{z | ·{z | ·{z u v x y 内容 復習 PDA CFG との等価性 非文脈自由言語 まとめ 内容 復習 証明 (つづき) 2 . 3 内容 4 . . 5 vxy が 1p の最初のブロックに含まれる場合: uxz が L に属 さないことは場合 2 の議論の後半と同様である. PDA CFG との等価性 非文脈自由言語 文脈自由文法 生成規則と呼ばれる再帰的な規則によって言語を記述する 手段 変数の集合,終端記号の集合,開始集合,生成規則の集合 文脈自由言語 文脈自由文法が生成した文字列の全体 すべての正規言語は文脈自由言語である プッシュダウン・オートマトン 非決定性有限オートマトンに,プッシュダウン・スタックを 追加 文脈自由文法と記述能力が等価 非文脈自由言語の存在 非文脈自由言語 vxy が最初の 1p と 2 番目の 0p にまたがる場合: vy が実際 には 0 を含まないときは,場合 3 の vxy が最初の 1 のブロッ クに含まれるときと議論は同じである.vy が少なくとも 1 個の 0 を含めば,uxz は 0p で始まり,tt = uxz を満たす t も 0p で始まる.しかし,2 つ目の t に対する 0p は uxz には 存在しない.この場合もまた,uxz は L に属さない. 他の場合: vxy は s の後半に含まれ,議論は vxy が s の前 半に含まれる場合と対称になる. 以上より,どの場合も uxz は L に属さず,L は文脈自由言語で はない Q.E.D まとめ まとめ . CFG との等価性 証明 (つづき) vxy が最初の 0 のブロックと最初の 1 のブロックにまたがる 場合: この場合でも,y = ε なら vy = 0k となることはあ り得る.そのときは場合 1 と同じ議論で uxz が tt の形にな らないことを示せる.vy が 1 個でも 1 を含めば,3p/2 以上 の長さを持つ t は,uyz が 1p で終わっていることから,1p で終わらなければならない.しかし,uxz 中の 1p のブロッ クは最後のブロック以外にないので,t を uxz 中で繰り返す ことはできない. 復習 PDA . . まとめ
© Copyright 2024 ExpyDoc