Collage System 圧縮テキストパターン照合のための統一的枠組み 九州大学大学院システム情報科学研究科情報理学専攻 喜田 拓也 竹田 正幸 篠原 歩 柴田 裕介 有川 節夫 発表内容 1. 2. 3. 4. 5. 6. これまでの研究との違い 辞書式データ圧縮について Collage systemについて Collage systemに対する文字列照合アルゴリズム 今回の研究で得られたこと まとめ これまでの研究(1) 年 研究者 圧縮法 1988 1992 1992 1994 1994 1995 1996 1996 1997 1997 Eliam-Tsoreff and Vishkin Amir, Landau, and Vishkin Amir and Benson Amir, Benson, and Farach Manber Farach and Thorup Gasieniec, et al. Amir, Benson and Farach Karpinski, Rytter, and Shinohara run-length two-dimensional run-length two-dimensional run-length two-dimensional run-length Miyazaki, Shinohara, and Takeda 1997 Takeda 1998 Fukamachi, Shinohara, and Takeda 1998 Kida, et al. 1998 Shibata original compression scheme LZ77 LZ77 LZW straight-line programs straight-line programs finite state encoding Huffman encoding LZW byte pair encoding これまでの研究(2) 年 研究者 圧縮法 1998 de Moura, Navarro, Ziviani, and Baeza-Yates Word based encoding 1999 Shibata, Takeda, Shinohara, and Arikawa Antidictionaries 1999 Kida, Takeda, Shinohara, and Arikawa 1999 Navarro and Raffinot LZW LZ family Byte pair encoding 1999 Shibata, et al. 1999 Kida, et al. Dictionary based methods (Collage system) SPIRE’99 今回の研究の概要 従来: 今回: 圧縮方法 A 照合アルゴリズム A 圧縮方法 B 照合アルゴリズム B 圧縮方法 C 照合アルゴリズム C 圧縮方法 A 圧縮方法 B 圧縮方法 C 統 一 的 枠 組 み 統一的枠組みに対する 照合アルゴリズム 辞書式データ圧縮 符号化 原テキスト 繰り返し 使用される語 圧縮 テキスト 辞書構造 語の切り出し方 辞書構造 符号化の方法(ビット列の割り当て方) Collage systemの定義 Collage system とは組〈D, S 〉 D : 変数定義の列(辞書構造に相当) X1 = expr1 ; X2 = expr2 ; ・・・ Xn = exprn ; S : D で定義された変数の列(圧縮テキストに相当) S := Xi1 , Xi2 ,・・・, Xil ( Xi ∈D ) ||D|| = n : Dで定義される変数の個数 |S| = l : 列の並びの個数 Collage systemの定義 D : 変数定義の列(辞書構造に相当) X1 = expr1 ; X2 = expr2 ; ・・・ Xn = exprn ; ここで exprk とは、 a Xi ・ Xj ( Xi ) j [ j ]X i Xi [j] a ∈Σ∪{ε}, (一文字代入) i, j は整数で、 i, j < k, (連結) i, j は整数で、 i < k, (繰り返し) i, j は整数で、 i < k, i, j は整数で、 i < k, (前切り落とし) (後切り落とし) Collage systemの例 D: X1 = a ; X2 = b ; X3 = X1・X2 ; X4 = X2・X1 ; X5 = ( X3 )3 ; X6 = [ 3 ]X5 ; X7 = X6・X4 ; T(X7) 前3文字 切り取り ab ba ababab bab babba S : X3 , X6 , X4 , X7 abbabbababba X7 X6 3回 X4 X5 X2 X1 X1 X2 a b )3 ) b a 繰り返し X3 [ 3 ] (( height(X7) = 4 height(D) = 4 Collage systemの例 (Byte pair encoding) テキスト: abD DcE D: X1 = a; X2 = b; X3 = c; ababcbabccabcacb D D cb D cc D cacb D E b E c E acb X4 = X1 ・ X2; X5 = X4 ・ X3; abD DcE S : X4 , X5 , X2 , X5 , X3 , X5 , X1 , X3 , X2 Collage systemの例 (LZSS[gzip]) D: X1 = a1 ; X2 = a2 ; ・・・ Xq = aq ; Xq+1 = (( [ j1] m 1 ) ) b1; [ j2] [i ] m 2 Xq+2 = (( Xl(2)・Xl(2)+1 ・・・ Xr(2)) ) b2; [i1]X l(1)・Xl(1)+1 ・・・ Xr(1) 2 ・ ・ ・ [ j n] [i ] m n n Xq+n = (( Xl(n)・Xl(n)+1 ・・・ Xr(n)) ) b n; S : Xq+1 , Xq+2 ,・・・, Xq+n Collage systemに対する文字列照合 Collage system 上での圧縮文字列問題は、 O( ||D|| + m2 ) 領域を用いて O( (||D||+|S|)・height(D) + m2 + r ) 時間 で解決できる。もし切り取り操作がない場合は、 O( ||D|| + |S| + m2 + r ) 時間 で解決できる。 ||D|| : |S| : m : r : Dで定義される変数の個数 列の並びの個数 パターンの長さ テキスト中のパターンの出現個数 アルゴリズムの基本的アイデア パターン:π= a b a b b 0 a 1 b 2 a 3 b 7 状態: 0 1 2 テキスト: a b S : Xi1 Xi2 4 b 5 : goto 関数 : failure 関数 3 4 3 4 5 1 a b a b b a Xi3 Xi4 Jump と Output 関数 Jump( j, u) = δKMP( j, u) • 文字列 u に対応する遷移の連続を模倣する • 定義域はQ×D 集合 Output( j, u) ={1≦i≦|u| | P = P[1: j]・u[1: i] の接尾辞} • 状態 j に対応するパターンの接頭辞と u を 連結した文字列中に現れるパターンの出現 位置の集合 Jumpの実現 Jump( q, Xk) について Xk が... O(1) 時間で求まる a Xi ・ Xj 長さ m パターン文字列について 部分文字列連結問題が O(1) で 解決できるなら O(1) 時間 ( Xi ) j O(1) 時間で求まる [ j ]X i Xi [j] O( height(Xi) )時間かかる 部分文字列連結問題 例: ある文字列の二つの部分文字列を連結した 文字列が、その文字列の部分文字列かどう か、また部分文字列だったならその位置を 答える問題。 COPACABANA OPA , CABAN 連結 OPACABAN 2文字目から始まる 部分文字列 部分文字列連結問題 Suffix trie を用いれば O(m2) 時間領域の前処 理を必要とし、問い合わせに O(m) 時間かかる。 問い合わせにかかる時間を O(1) にするために、 2次元の表を構築すると O(m4) 時間領域の前 処理が必要となる。 O(m2) 時間領域の前処理で、 O(1) 時間で問題を解決。 Outputの実現 集合 Output( q, Xk) について、Xk が... O(1) 時間で枚挙可能 a Xi ・ Xj Xi と Xj の Output の情報をもとに O(l ) 時間で列挙できる ( Xi ) j O(l ) 時間で列挙できる [ j ]X 枚挙するのに O( l ・height(Xi) ) 時間かかる i Xi [j] アルゴリズムの概要 pattern P and Collage system: 〈D, S 〉 ( S := Xi1 , Xi2 ,・・・, Xin ) Output. All occurrences of the patterns. Input. /* 辞書 D パターンPについて前処理を行う */ preprocess(D); l:=0; q:=0; for j:=1 to n do begin for each dOutput(q, Xij) do report ‘pattern occurs at position l+d ’; q:= Jump(q, Xij); /* 飛ばし読み遷移 */ l:= l + |Xij |; /* オフセット計算 */ end 今回の研究によって得られた知見 切り取り操作がない場合 : O( ||D|| + m2 ) 領域 O( ||D|| + |S| + m2 + r ) 時間 1998 Kida, et al.(LZW): O( n + m2 ) 領域 O( n + m2 + r ) 時間 切り取り操作がない LZ88, LZW, Huffman, BPE, Run-length等 切り取り操作がある LZ77, LZSS等 まとめ 様々な辞書式圧縮法の統一的枠組みとして Collage systemを提案した。 Collage systemの枠組みにおける一般的な圧 縮テキスト上の文字列照合アルゴリズムを示 し、その計算量を評価した。 O( (||D||+|S|)・height(D) + m2 + r ) 時間 O( ||D|| + m2 ) 領域 (切り取りなしの場合) O( ||D|| + |S| + m2 + r ) 時間
© Copyright 2024 ExpyDoc