490 likes | 603 Views
Macro Tree Transducers and Their Complexity. Kazuhiro Inaba The University of Tokyo kinaba@is.s.u-tokyo.ac.jp. Macro Tree Transducer (MTT) とは?. Tree から Tree への変換の形式化(の一種) 例 (cons list snoc list) :. SNOC. CONS. SNOC. A. B. CONS. SNOC. A. A. CONS. A. NIL. NIL. B.
E N D
Macro Tree TransducersandTheir Complexity Kazuhiro Inaba The University of Tokyo kinaba@is.s.u-tokyo.ac.jp
Macro Tree Transducer (MTT) とは? • TreeからTreeへの変換の形式化(の一種) • 例 (cons list snoc list): SNOC CONS SNOC A B CONS SNOC A A CONS A NIL NIL B をMTTで書くと…
MTT とは? • TreeからTreeへの変換の形式化(の一種) • 例 (cons list snoc list): f( CONS(x, y) ) g(y, SNOC(NIL,c(x))) f( NIL ) NIL g( CONS(x, y), z ) g(y, SNOC(z, c(x))) g( NIL, z ) z c( A ) A c( B ) B
MTT とは! 制約された一階の関数型言語 • 扱うデータ型は Ranked Tree のみ • Ranked Tree =ラベルから子要素の数が一意に決まるTree • より正確には、入力木型(TI)と出力木型(TO)の2種類のTreeのみ • それぞれの関数の型は、ある n≧0 についてTI * TOn TO
MTT とは! 制約された一階の関数型言語 • それぞれの関数の型は、ある n≧0 についてTI * TOn TO • 常に、第一引数(入力木)に関して帰納的定義 • 第二引数以降は、バラして使うことはできない(そのまま出力することのみが可能) g( CONS(x, y), z ) … g( NIL, z ) …
≪関数の型≫ TI = Trees over {CONS, NIL, A, B} TO = Trees over {SNOC, NIL, A, B} f :: TI TO g :: TI * TO TO c :: TI TO ≪常に入力木(第一引数)に 関して帰納的定義≫ f( CONS(x, y) ) g(y, SNOC(NIL,c(x))) f( NIL ) NIL g( CONS(x, y), z ) g(y, SNOC(z, c(x))) g( NIL, z ) z c( A ) A c( B ) B ≪第二引数以降はその まま出力するだけ≫
これらの制約によって得られる物は? • 種々の性質が決定可能 • 停止性 (自明) • Domain や Range のメンバシップ判定 • Domain や Range の有限性 • “Exact” Type Checking • 変換によるサイズ増加の線形性 • などなど • つまり、MTTで書かれたプログラムならこれらの性質を機械的に静的検証可能 • XML変換言語の検証のためのモデル
MTTとは?(逆からの眺め) • 有限状態モデルの拡張の歴史…
MTTとは?(逆からの眺め) 「パラメタ」 オートマトン(= 正規文法) 文脈自由文法 マクロ文法 「文字列→木」 木オートマトン(= 正規木文法) 文脈自由木文法 「出力付き」 トランスデューサ ツリートランスデューサ マクロ ツリートランスデューサ
これらの拡張によって得られる物は? • 他に知られている木変換モデルを包含する表現力 • Attributed Tree Transducer (Attribute Grammar) • Pebble Tree Transducer • Higher-order Macro Tree Transducer • MSO Tree Translation • … • 現実のXML処理言語(XSLT, XQuery, XML-QL, …) などの「木構造変換部分」を表現できる表現力 [Milo/Suciu/Vianu 00]
Today’s Talk • MTTの形式的定義 • 非決定性 • IO と OI • MTT 1個の“Translation Membership”の計算量 • Compressed Representation • MTT の任意有限個の合成の計算量 • Garbage-Free Form
MTTの形式的定義 • MTT = (Q, q0, Σ,Δ, R) where • Q : Rankつき状態集合(関数の集合) • q0 : 初期状態(main関数) • Σ : 入力木のRankつきラベル集合 • Δ : 出力木のRankつきラベル集合 • R : 以下の形の変換規則(関数定義)の集合 • q(σ(x1, …, xm), y1, … yk ) rhs • rhs ::= yi | δ(rhs, …, rhs) | q(xi, rhs, ..., rhs)
例 • Q = {f(1), g(2), c(1)}, q0 = f,Σ={CONS(2),NIL(0),A(0),B(0)}, Δ={SNOC(2),NIL(0),A(0),B(0)}, R= f( CONS(x, y) ) g(y, SNOC(NIL,c(x))) f( NIL ) NIL g( CONS(x, y), z ) g(y, SNOC(z, c(x))) g( NIL, z ) z c( A ) A c( B ) B
注意! 非決定性 MTT • 例: S(S(S(…S(Z)…) A/Bの完全二分木 A A A or or S A A A B B A Z Z Z Z Z Z Z Z Z Z Z Z S A B B or or or Z B B A A A B Z Z Z Z Z Z Z Z Z Z Z Z or… (2 more)
注意! 非決定性 MTT • 例: S(S(S(…S(Z)…) A/Bの完全二分木 f( S(x) ) g(x, h(x, Z)) f( Z ) Z g( S(x), y ) g(x, h(x, y)) g( Z, y ) y h( S(x), y ) A(y, y) h( S(x), y ) B(y, y) h( Z, y ) A(y, y) h( Z, y ) B(y, y)
なぜ非決定性が必要? • MTTの表現力を超える制御フローの近似 <xsl:template name=“h”> <xsl:choose> <xsl:when test=“COMPLEX-TEST-EXPRESSION”> <A> … </A> </xsl:when> <xsl:otherwise> <B> … </B> </xsl:otherwise> </xsl:choose> </xsl:template>
2つの非決定性評価戦略:IO と OI • IO = Inside-Out ≒ Call-by-Value • ネストした関数適用は「内側から」先に評価 • OI = Outside-In ≒ Call-by-Name • ネストした関数適用は「外側から」先に評価
IO と OI h( Z, y ) A(y, y) h( Z, y ) B(y, y) • IOなら? • OIなら? h(Z,h(Z,Z)) = h(Z, A(Z,Z)) = A(A(Z,Z), A(Z,Z)) | B(A(Z,Z), A(Z,Z)) | h(Z, B(Z,Z)) = A(B(Z,Z), B(Z,Z)) | B(B(Z,Z), B(Z,Z)) h(Z,h(Z,Z)) = A(h(Z,Z), h(Z,Z)) = A(A(Z,Z), A(Z,Z)) | A(A(Z,Z), B(Z,Z)) | A(B(Z,Z), A(Z,Z)) | A(B(Z,Z), B(Z,Z)) | B(h(Z,Z), h(Z,Z)) = …|…|…|…
MTT-IO vs MTT-OI • 表現力の比較 • MTT-IO ⊄ MTT-OI & MTT-OI ⊄ MTT-IO • MTT-IO ⊂ MTT-OI2 & MTT-OI ⊂ MTT-IO2 • モデルとしての扱いやすさ • OI の方が扱いやすい場面が多い(MTT同士の合成が計算しやすいなどなど) • 現実のプログラムの近似モデルとして • IO の方がより適切な場面が多い • 計算量の比較 • IOの方が低コストなことが多い
ここからの話 • K. Inaba and S.Maneth, “The Complexity of Tree Transducer Output Languages”, To appear in FSTTCS 2008http://www.kmonos.net/pub/files/mttout_full.pdf • MTT(の合成)で表現される変換の出力木言語 range(MTTk) のメンバ判定 … を中心に。
“Translation Membership” 問題 • 変換 τ の変換メンバシップ問題とは • 入力: 二つの木 a, b • 出力: 真偽値 b ∈τ(a) • この判定に必要な計算量は?
Translation Membership ofDeterministic Total MTT • O( |a| + |b| ) time • τ(a) を「注意深く」計算しながら b と比較
Translation Membership ofMTT-IO • O( |a|・|b|2k+2 ) time • where k = 最大パラメータ数 • “Inverse Type Inference” の応用 • τ-1(b) はツリーオートマトンで表現できる • “a ∈ τ-1(b) ?” は O(|a|×遷移関数の1回の実行時間 ) で判定可能
Translation Membership ofMTT-OI • |a|+|b|に関して • NP-complete • DSPACE(n)
Trn. Mem. of MTT-OI≪NP-hardness≫ • SAT からの変換 • 入力木 「b(b(…b(c(…c(z)…)…)」に対して、変数 #b 種類、節数 #c 個の充足可能なCNF命題論理式を非決定的に出力する(そして、そのような論理式を全て出力しうる)MTT-OI が存在する
Trn. Mem. of MTT-OI≪NP-hardness≫ • これです→
Trn. Mem. of MTT-OI≪NP & DSPACE(n)≫ • 直接示すのは難しい • 計算ステップ数は指数オーダになりうる • まず、MTT-OI の subclass について示す • Path-linear MTT • “同じ子供に対する関数適用はネストしない” MTT f( S(x), y ) f(x, f(x, y)) f( Z, y ) y
Path-linear MTT? • Path-linear MTT • “同じ子供に対する関数適用はネストしない” • Tree Transducer (=パラメタ無しMTT) を含む • Linear MTT (= 同じ子供に対する関数適用は存在しない)を含む • Old Known Result: • MTT-OI ⊂ TT ∘ LinMTT∘TT
Trn. Mem. of Path-lin MTT-OI ≪NP & DSPACE(n)≫ : Proof • 非決定性MTT τ を、”+” という特殊なノードを出力する決定性MTT τdへと変換する h( S(x), y ) A(y, y) h( S(x), y ) B(y, y) h( Z, y ) A(y, y) h( Z, y ) B(y, y) h( S(x), y ) +(A(y,y), B(y,y)) h( Z, y ) +(A(y,y), B(y,y))
+ S A B S + + + + A B A B A B A B Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z
Trn. Mem. of Path-lin MTT-OI ≪NP & DSPACE(n)≫ : Proof • 「b ∈ τ(a)」if and only if「τd(a) のそれぞれの “+” ノードを左右どちらかの子でうまく置き換えると b になる」 τd(a) と b を top-down に再帰的に比較するだけで判定できる GOOD |τd(a)| >>>> |a|+|b| かもしれない τd(a) をマジメに計算はできない BAD
τd(a) と b の比較アルゴリズム let rec comp(pt, t) = match (pt, t) with | (+(pt1, pt2), t) -> comp(pt1, t) || comp(pt2, t) | (σ(pt1,pt2,…ptn), σ(t1,t2,…tn) ) -> comp(pt1,t1) && … && comp(ptn,tn) | _ -> false • 非決定性計算での時間計算量 • height(τd(a)) ・|b|・基本演算の時間※Path-linearならheight=O(|a|) • 決定性計算での空間計算量 • max( height(τd(a))), height(b) ) ・ ptとtのノード表現のサイズ • ※ pt と t のノード表現から親ノードの表現を計算できれば↑は不要
Trn. Mem. of Path-lin MTT-OI ≪NP & DSPACE(n)≫ : Proof • τd(a) の圧縮表現 • τd(a) の各ノードは、そのノードを生成した瞬間のτd の「コールスタック」で表現できる f( S(x) ) g(x, h(x, Z)) f( Z ) Z g( S(x), y ) g(x, h(x, y)) g( Z, y ) y h( S(x), y ) +(A(y,y), B(y,y)) h( Z, y ) +(A(y,y), B(y,y)) + A B <<g>>(x, h(x, Z)) g(x, <<h>>(x, y)) +(<<A>>(y,y), B(y,y))
「コールスタック」の高さ ≦ |a| なので、τd(a) を O(|a|)サイズに圧縮できた! • 問題点: • 「コールスタック」で表現されたノードの子ノードや親ノードを得ることは可能か?その計算量は?
文脈自由木言語によるXML圧縮[BLM08] • 子ノードを得ることは可能 • 「色々な条件を満たしていれば」線形時間で可能 • 「パラメタ変数の使われ方が linear ならば」親ノードを得ることが(線形時間で)可能 • [Inaba/Maneth08] • Path-linear ならば線形時間で子ノードを計算可能 • Path-linear ならば「コールスタックツリー表現」を使うことで、線形時間で親ノードを計算可能
「コールスタックツリー表現」 • 基本アイデア • 子ノードを計算できるノード表現χがあれば、 「祖先ノード全部をχで表現したリスト」で各ノードを表すことにすれば、子ノードも親ノードも計算もできるようになる • 問題点: サイズがO(|a|)ではなくなる • 追加アイデア • ノード v のコールスタック表現と、vの子ノードのコールスタック表現は、「よく似ている」 • 『「祖先ノード全部をχで表現したリスト」を共通部分はできるだけまとめた trie 構造』でノードを表現すればいい • Path-linear なら O(|a|) サイズになる
おさらい • Path-linear MTT の変換メンバシップ判定は NP かつ DSPACE(n) • 出力木のノードの「コールスタック表現」 • さらに 「コールスタックツリー表現」
Translation Membership ofMTT∘MTT ∘・・・∘MTT • 変換を τ = τ1 ;τ2 ; … ;τkとする(各 τiは path-linear MTT) • 基本的なアプローチ • 変換の途中結果a1∈τ1(a), a2 ∈ τ2(a1), …, b ∈ τk(ak-1)をすべて推測して、各τiのTrn. Mem.判定に帰着
Translation Membership ofMTT∘MTT ∘・・・∘MTT • 基本的アプローチを真っ向から実行すると • Old Known Result: • b ∈ τ(a) ならば |b|≦ 2^2^|a| • a1∈τ1(a), a2 ∈ τ2(a1), …, b ∈ τk(ak-1) を満たすaiは、あるとすれば |ai|≦2^2^2^2^2^2^2^…^|a| • 探索範囲は有限! 2i
Translation Membership ofMTT∘MTT ∘・・・∘MTT • 基本的アプローチを真っ向から実行することの問題点 • 変換の途中結果が大きすぎる • 最終出力 b が実際に大きい場合は、それでも(計算量的には)問題ない|a| <<< |ai| >>> |b| なケースが問題 • ↑こういうケースを除きたい
Theorem≪Garbage Free Form≫ • 任意のPath-linear MTT合成列τ = τ1 ; τ2 ; … ; τkに対し、等価な合成列τ = γ0 ; γ1 ; γ2 ; … ; γkで、任意の b∈τ(a) に対しa0∈γ0(a),…, ai=γi(ai-1),..., b=ak=γk(ak-1)|ai-1|/2 < |ai| for all iを満たす中間結果列 a0,…,akをとれるものを構成できる
Garbage Free Form の帰結 (1) • Translation Membership ofMTT∘MTT ∘・・・∘MTT is • NP-complete • DSPACE(n) • Proof. Garbage Free Form に変換してから「基本的アプローチ」: 変換の途中結果a0∈γ0(a), a1 ∈ γ1(a0), …, b =ak∈ γk(ak-1)をすべて推測して、各γiのTrn. Mem.判定に帰着 □
Garbage Free Form の帰結 (2) • range(MTT∘MTT ∘・・・∘MTT) is • NP-complete • DSPACE(n) • i.e., MTTのrangeは文脈依存言語 • Proof.実はGFFの最初の変換γ0のrangeは、正規木言語であることが示せる。変換の途中結果a0∈γ0(???), a1 ∈ γ1(a0), …, b =ak∈ γk(ak-1)をすべて推測して、各γiのTrn. Mem.判定 および range(γ0)のMem判定に帰着 □
Garbage Free Form の帰結 (3) • range(MTT∘MTT ∘・・・∘MTT) の有限性は決定可能 • Proof.GFFなら、range(τ)が有限 iff range(γ0)が有限。実はGFFの最初の変換γ0のrangeは、正規木言語であることが示せる。正規木言語の有限性は決定可能 □
Proof Sketch ofGFF Theorem (1/3) • 最後のMTTを「サイズを減らさない」ものに変形 • … ;τk-1 ; τk • … ;τ’k-1 ; γk の繰り返し (正確には、最後から2番目のMTTを、「最後のMTTが使わない部分木は生成しない」ものに変形、の方が近い?)
Proof Sketch ofGFF Theorem (2/3) • サイズを減らす関数3種類 • “Input-deletion” • そもそも入力の一部分を完全無視 • f(σ(x1,…,xm), y1, …, yk ) ∃I : xi が1度も現れない • “Erasure” • Leaf で引数をそのまま出力 • f( σ, y1, …, yk ) yi • “Skipping” • 子供が1つのノードで、ただ別の関数を呼ぶだけ • f(σ(x), y1, …, yk ) g(x, y1, …, yk )
Proof Sketch ofGFF Theorem (3/3) Erasure, Input-Deletion, Skipping が起きそうな箇所を予測して、先に削除しておくツリートランスデューサ • τk-1 ; τk τk-1 ; (E ; I ; S ;γk )(結合則) (τk-1 ; E ; I ; S) ;γk (MTT-OI はE,I,Sの後ろからの合成に 関して閉じている) τ’k-1 ;γk
補足: Combined Complexityof Translation Membership • DtMTT: • O( |M|・(|a|+|b|) ) • MTT-IO: • O( |M|・|a|・|b|2k+2 ) • Path linear MTT-OI: • O( |M|・poly(|a|+|b|) ) ※ Nondet. • MTT ∘MTT ∘… ∘MTT: • O( 2^2^2^2^…^|M|・ poly(|a|+|b|) ) ※Nondet.
まとめ • Macro Tree Transducer • 制限された関数型言語 • オートマトン+ツリー+出力+パラメタ • 非決定性。IO / OI • “Translation Membership” • 圧縮表現 • Garbage Free Form • 文献 • J. Engelfriet and H. Vogler, “Macro Tree Transducers”, JCSS(31) 71-146, 1985 • K. Inaba and S. Maneth, “The Complexity of Tree Transducer Output Languages”, To appear in FSTTCS 2008