190 likes | 364 Vues
今日の目標. 文脈自由文法の復習 導出機構 この講義(教科書)での用語の確認 プッシュダウンオートマトンの復習 非決定性 用語の確認 ある言語がCFLでないことと、その証明法の理解 - 正則言語に対するポンピング補題の復習 - CFLに対するポンピング補題. 文脈自由文法. 英小文字. 英大文字. 定義 3.1.1 G=(∑, NT, R, S) ∑ : 終端(記号)の有限集合 -アルファベット NT : 非終端(記号)の有限集合 R : (生成)規則の有限集合 規則: NT× ( ∑∪NT )*
E N D
今日の目標 • 文脈自由文法の復習 導出機構 この講義(教科書)での用語の確認 • プッシュダウンオートマトンの復習 非決定性 用語の確認 • ある言語がCFLでないことと、その証明法の理解 - 正則言語に対するポンピング補題の復習 - CFLに対するポンピング補題
文脈自由文法 英小文字 英大文字 • 定義3.1.1 G=(∑, NT, R, S) ∑: 終端(記号)の有限集合 -アルファベット NT: 非終端(記号)の有限集合 R: (生成)規則の有限集合 規則: NT×(∑∪NT)* S∈NT: 初期記号 NT と(Σ∪NT)* の順序対 A → ab, A →aAb, A→BC,A→ε
導出機構 ・文形式: ∈(∑∪NT)* 正しい文の中間的な形式 ・1ステップで導出可能: 「A→z」∈Rであるとき u=xAy から v=xzy が1ステップで導出可能(「u⇒v」) ・導出可能: u0⇒u1, u1⇒u2, ……, un-1⇒un(n≧0) であるとき u=u0 から v=un が導出可能(「u⇒* v」) ・文法Gにより生成される(導出可能な)言語: L(G)={ w | w ∈ ∑*, S ⇒* w }
S Vp Np V Np N N John bought car 構文解析 解析木(構文木) 最左導出: S ⇒ NpVp ⇒ NVp ⇒ John Vp ⇒ John VNp ⇒ Johnbought Np ⇒Johnbought N ⇒ John bought car 最右導出: S ⇒ NpVp ⇒ NpVNp ⇒ NpVN ⇒ NpV car⇒ Npbought car ⇒N boughtcar ⇒ John bought car
S S S S if if (C) (C) if if (C) (C) S S else else S S 曖昧な文法 • 2つ以上の解析木を持つ記号列を生成する文法 S→ if (C) S else S, S→if (C) S
スタック a プッシュ ホップ a プッシュダウンオートマトン(PDA) • 非決定性有限オートマトン + スタック 有限制御部 非決定的 動作 読み取りヘッド a b a b b a b a a 入力テープ
プッシュダウンオートマトン M=(Q, ∑, Γ, s0, Δ, F) Q: 状態の有限集合 ∑: 入力アルファベット s0∈Q: 初期状態 F⊆Q: 適格状態(受理状態)の集合 Γ: スタック記号の(有限)集合 Δ: (Q×(∑∪{ε})×Γ*)×(Q×Γ*)の部分集合
プッシュダウンオートマトン 遷移関係 ((s, a, β), (q, γ)): 状態 s で, 読取りヘッドが読んでいる入力記号が a で, スタックトップにβという記号列があるとき, 「入力記号 a を消費して, 状態qに遷移し, スタックトップのβを記号列γで置き換える」 ことができる(非決定性) a = ε の場合: 入力記号に依存せず, 入力を消費しない遷移 β = ε の場合:スタックの記号列に依存しない遷移
「様相」と「1ステップ導出」 • 様相 (s, u, α) s: 有限制御部の状態、 u: 入力テープの残り α: スタック上の記号列(左端がスタックトップ) • 様相C1=(s, au, αΘ)から様相C2=(q, u, βΘ)へ • 1ステップ 導出可能(C1C2) • 「((s, a, α), (q, β)∈ Δ」のときかつそのときのみ
受理 • PDAが記号列 w を受理 • (s0, w, ε)=C0 C1 Cn=(p, ε, ε) • p∈F(適格状態) • L(A): PDA A の受理する記号列の集合 • 空スタック受理PDA • 適格状態とそうでない状態を区別せず「空スタック」のみを受理条件とするPDA • 定理 「任意のPDAから、同じ言語を受理する空スタック受理PDAを構成できる」 …
CFGとPDAの表現能力 • 文脈自由文法(CFG)とプッシュダウンオートマトン(PDA)の表現能力が一致する - CFGで表現できるものはPDAで表現できる - PDAで表現できるものはCFGで表現できる • 証明はパス
正則言語に関するポンピング補題 Lが正則ならば、以下を満たすnが存在 |w|≧n, w∈Lならば wは以下を満たすような w=xyzに分解可能 (a) y≠ε (b) |xy|≦n (c) xyiz∈L (for all i≧0) 証明: Lが無限集合の場合 Lが正則であることより、Lを受理するDFAA が存在する.Aの状態数を n とする. |w|≧n, w∈Lなる w=w1w2…wm(m≧n) を考える.
n+1個の状態 Aによるwの受理 w1 w2 wn+1 wm wn-1 wn … … s Aの状態数がnなので、同じ状態があるはず
同じ x z y Aによるxy*zの受理 wn wn+1 wm … … … … s * 0回以上 繰り返し可 |xy|≦n,|y| > 0 Aは xy*z を受理、すなわち xy*z∈L
文脈自由言語の場合 正則ではDFAによる受理を考えたが CFLではCFGにおける導出を考える 簡単のため 「A→B」のような規則 (単記号規則) 「A→ε」のような規則 (ε規則) はないものとする
同じ S ⇒* uAz A ⇒* uvAyz A ⇒* uvxyz 0回以上 繰り返し可 S ⇒* uAz ⇒* uvAyz ⇒* uv2Ay2z ⇒* uv3Ay3z …… ⇒* uviAyiz ⇒* uvixyiz CFGにおける導出 十分長い導出を考えれば同じ非終端が2回以上登場 単記号規則,ε規則がないので v≠ε またはy≠ε
CFLに関するポンピング補題 LがCFLならば、以下を満たすnが存在 |w|≧n, w∈Lならば、wは以下を満たすような w=uvxyzに分解可能 (a) v≠ε または y≠ε (b) |vxy|≦n (c) uvkxykz∈L (for all k≧0)
最長の径路 (長さ|NT|+1以上) A 長さ |NT|+1以下 A |vxy|≦f(G)|NT| n 図3.8w=uvxyz の解析木 S |w| > f(G)|NT| f(G): ファンアウト 規則の右辺の 最大長 u v x y z
ポンピング補題の使い道 • ある言語が文脈自由言語でないことの証明 例3.6.1: {ak bk ck | k=0,1,2,…} 例3.6.2: {w | w ∈ {a,b,c}*, w は同数の a,b,c を含む} 例3.6.3: {tt | t ∈ {a,b}*}