スタック長の 特徴付けによる 言語の非DCFL性 証明 上里 友弥 南出 靖彦 筑波大学 IPSJ PRO 98
または 決定性プッシュダウンオートマトン はいかにして スタックを用い マッチングを行うか
Σ 入力記号の集合 δ 遷移関数 F Γスタック記号の集合 δ q0 q0 * qa qb qok Q 状態集合 F 最終状態の集合 ε ∈ 決定性プッシュダウンオートマトン Q 状態集合 F 最終状態の集合 初期計算状況 Σ 入力記号の集合 Γスタック記号の集合 δ 遷移関数 ⊥ q0 aabb を入力とする計算 ⊥ q0 * qa qb qok ε ∈ F a δ b
A B q δ : Q × Γ (Σ Q × Γ*) ∪ (ε Q × {ε}) 決定性プッシュダウンオートマトン ⊥ 計算状況 で ・ ・ ・ B q で 入力を読んで遷移するか 入力を読まずに遷移するか を決定する
p1 A q p2 A B A B p3 A B C δ : Q × Γ (Σ Q × Γ*) ∪ (ε Q × {ε}) 決定性プッシュダウンオートマトン δ : Q × Γ (Σ Q × Γ*) ∪ (ε Q × {ε}) 入力σを消費する遷移 pop p1 ⊥ A ・ ・ ・ local q p2 ⊥ A B ⊥ A B ・ ・ ・ ・ ・ ・ push p3 ⊥ A B C ・ ・ ・
ε A B q p δ : Q × Γ (Σ Q × Γ*) ∪ (ε Q × {ε}) ⊥ 決定性プッシュダウンオートマトン ・ ・ ・ (入力を消費しない)遷移 A B pop q p ε ※ DPDAを知っている人向けの注意書き 遷移関数をこの形に制限しても良いというのは フォークロア的に知られてはいましたが 今回はこれも明示的に示しました
* * * q0 qa qa qb qok∈F a a b ⊥ ⊥ ⊥ ⊥ ⊥ 定義 語wを受理する( M(w) = true ). wを全て読んだのちに F を訪れる. 定義 言語Lを受理する. w ∈ L iff wを受理する. 例 {an bn | n ≧ 1}はDPDAで受理できる. ★ a a b b * * * ⊥ ⊥ ⊥ ⊥ ⊥ q0 qa qa qb qok∈F
{ an bn }∪{ an b2n }はDCFLではない スタックの 高さ ✗ an bn bn スタックが殆ど 空になってしまう 読んだ文字数 (経過時間)
an bn b bn-1 マッチング Match[x,y] 任意のn について xn, xn y, xn y2, ... は受理されないが ここまでは 受理しない ここで 初めて受理 マッチング Match[x,y] 任意のn について xn, xn y, xn y2, ... は受理されないが xn yn は受理される ならば,マッチングをしているという. ただし,x, yは 空でない文字列
✔ 発表の流れ 定義 決定性プッシュダウンオートマトンと そのクラスDCFLとは何かを復習 マッチングを形式的に定義 { an bn } ∪ { an b2n } がDCFLでないことを示す マッチングをすると スタックが殆ど空になる直感がある 入力の周期性とスタック中の周期性 マッチングにはスタックの全体が必要 殆ど空になることが形式化し証明 ✔ ✓
q A B ⊥ 周期的な入力と周期的なスタック cn cm β cn cm cn cn cn ε遷移のないDPDAで γ β β β α ・ ・ ・ A ⊥ B q cn cm β ε遷移のないDPDAで 文字 cが無限に長くやってくる計算を考えると, 計算に周期性があらわれる! γ β β β α cn cm cn cn cn
α,β, γは w にだけ依存する wm wn 補題 : 周期的な入力と周期的なスタック と考えて良い γ β α 任意のDPDAで 計算に周期性があらわれる! α,β, γは w にだけ依存する と考えて良い α β γ wm wn
an 👀👀 γ β α ⊥ マッチングするには何が必要か? bnとマッチングするには anを復元するには この辺りまでは みなくてはならない スタックをどこまでポップしなければ ならないだろうか? anを復元するには 少なくともどこまでみなければ ならない? α ・ ・ ・ γ β ⊥ an この辺りまでは みなくてはならない 👀👀
αまでみない場合に 何が起こるか? γ β ・ ・ ・ an bn を受理! β β α β ⊥ α ⊥ ⊥ an bn
bn an am α γ β α β γ β β β α ⊥ ⊥ ⊥ ⊥ an+m bn を誤認 αまでみない場合に 何が起こるか? ・ ・ ・ γ β ⊥ bn α β ⊥ γ β an+m bn を誤認 ・ ・ ・ β β α ⊥ ⊥ an am
an 👀👀 γ β α ⊥ 定理 : マッチングはそこそこ大変 bn を読んでいる間に,スタックの 高さが定数 Ha,b 以下になる. マッチング Match[a,b] を行っ ているならば, bn を読んでいる間に,スタックの 高さが定数 Ha,b 以下になる. α ・ ・ ・ γ β ⊥ an 👀👀
an bn いつ Ha,b とするのか? Ha,b ??? 定理により,Ha,b 以下にはなることが分かったが, 受理するまでどれぐらいの位置で そのようにするかを考えたい. an bn Ha,b ??? 受理!
an bn 定理 : マッチング成功直前で Ha,b とする Ha,b Ra,b aとbにだけ依存する 定数 Ra,bが存在し, 受理!
定理 : マッチング成功時で高々 Ha,b + Ra,b aとbにだけ依存する 定数 Ha,b , Ra,bが存在し, Ha,bとなるのは 入力の残りがRa,bになってからである,ので… an bn Ha,b Ra,b 受理! Ra,b
{ an bn }∪{ an b2n }はDCFLではない ✗ ≤ Ha,b+ Ra,b bs を読んでからはじめて受理 bt を読んでからはじめて受理 とする計算状況 及び s < tが存在 これは明らかに矛盾.
関連研究 { an bn , an b2n | n ≧ 1 }の非DCFL性を 周期的な入力は周期的なスタックを生成する Ginsburg & Greibach : Deterministic context free languages, 1966. { an bn , an b2n | n ≧ 1 }の非DCFL性を 類似した方法で証明している マッチングでは本質的にスタックを空にする Li & Vitányi : A New Approach to Formal Language Theory by Kolmogorov Complexity, 1995. Glier : Kolmogorov Complexity and Deterministic Context-Free Languages, 2003. DCFL版のポンピング補題 Harrison : Introduction to Formal Language Theory, 1978. Yu : A Pumping Lemma for Deterministic Context-free Languages, 1989.
{ w wR | w ∈ {a,b}* , wRはwの反転} [5.2] 帰納的可算言語 {ap | pは素数} {an bn cn | n ≧ 1} [5.4] {an bn2 | n ≧ 1} 文脈自由言語 {an bn,an b2n | n ≧ 1} [5.1] { w wR | w ∈ {a,b}* , wRはwの反転} [5.2] { x # y xR z | x,y,z ∈ {a,b}* } [5.6] 決定性文脈自由言語
まとめ 直感 証明したこと 周期的な入力は周期的なスタックを生成 一度はスタック全体を読むことになる 受理直前にスタックが殆ど空にする 入力の中で個数の 比較をしているよう な場合には, 受理段階での スタックの高さは 殆ど空になる. マッチングをしていると, 受理段階でのスタックの 高さは, 一様に定数H + R以下になる 周期的な入力は周期的なスタックを生成 一度はスタック全体を読むことになる 受理直前にスタックが殆ど空にする
今後の課題 {an bn cn | n ≧ 1} 非決定性プッシュダウンオートマトンに対しても同様の議論 ができないか? は同じような原因でダメであるように思えるが…? 決定性2階プッシュダウンオートマトンに対しても同様の議論 は可能か? Parsing Expression Grammar などの 本質的にスタックを用い ていそうな体系に対しても同様の議論は可能か?
フォーマルなステートメント群
DCFL版ポンピング補題 (iteration theorem)
{ an bn cn | n ≧ 1} はDCFLではない ? スタックの 高さ スタックが殆ど 空になってしまう an bn cn 読んだ文字数 (経過時間)
an bn Fしない b bn-1 改訂マッチング Match[x, y, E] 任意のn について ここまでは Fしない ここで 初めてF 改訂マッチング Match[x, y, E] 任意のn について xn, xn y, xn y2, ... では E を訪ねないが xn yn では E を訪ねる ならば,マッチングをしているという. ただし,x, yは 空でない文字列
an bn を読んだことが分かるか? { an bn cn | n ≧ 1} を受理するDPDA M (が存在したとすると) 到達可能性解析 !! an bn を読んだときに 特殊な状態を訪れるDPDA M’を 構成することができる!
(後ろ向き)到達可能性解析 w2 wi ∈ L c2 w1 c1 F w3 c3 wn cn Pre(F,L) がregular set
Pre( F , c* ) を監視する an bn を読んだことが分かるか? { an bn cn | n ≧ 1} を受理するDPDA M (が存在したとすると) Pre( F , c* ) を監視する an bn を読んだときに 特殊な状態を訪れるDPDA M’を 構成することができる!