Pattern Matching on Compressed Texts 圧縮テキストに対する文字列照合 学位申請者 九州大学大学院システム情報科学研究科情報理学専攻 喜田 拓也 1/38 研究背景 研究背景 コラージュシステム コラージュシステム上の照合アルゴリズム 圧縮テキストに対する近似文字列照合問題 まとめ 2 文字列照合問題 テキストT 中に含まれるパタンの出現を求める問題 KMP法[Knuthら(1974)], BM法[BoyerとMoore (1977)] ビットパラレル手法[Abrahamson(1987)][Baeza-YatesとGonnet(1992)] パタン compress テキストT 3/38 We introduce a general framework which is suitable to capture an essence of compressed pattern matching according to various dictionary based compressions. The goal is to find all occurrences of a pattern in a text without decompression, which is one of the most active topics in string matching. Our framework includes such compression methods as Lempel-Ziv family, (LZ77, LZSS, LZ78, LZW), byte-pair encoding, and the static dictionary based method. Technically, our pattern matching algorithm extremely extends that for LZW compressed text presented by Amir, Benson and Farach [Amir94]. 圧縮テキストに対する文字列照合問題 目 テキスト 標 データ 文字列照合 アルゴリズム 転送 2 二次記憶装置上 主記憶装置上 圧縮テキスト 目 標 転送 1 二次記憶装置上 文字列照合 アルゴリズム 復号 主記憶装置上 主記憶装置上 圧縮テキスト 転送 二次記憶装置上 4/38 主記憶装置上 圧縮文字列照合 アルゴリズム 本分野における研究 圧縮方法 照合アルゴリズム Run-length Run-length (two dim) LZ77 family Eilam-Tzoreff & Vishkin (1988) Amir et al. (1992, 1997); Amir & Benson (1992) Farach & Thorup (1995); Gąsieniec, et al. (1996); Klein & Shapira (2000) Amir et al. (1996); Kida et al. (1998, 1999); Navarro & Tarhio (2000); Kärkkäinen et al. (2000); Navarro et al. (1999) Karpinski et al. (1997); Miyazaki et al. (1997); Hirao et al. (2000) Fukamachi et al. (1998); Klein & Shapira (2001); Miyazaki et al. (1998) Takeda (1997) Moura et al. (1998) Manber (1994); Shibata et al. (1998) Shibata et al. (1999) LZ78 family LZ family Straight-line programs Huffman Finite state encoding Word based encoding Pattern substitution Antidictionary based 5/38 コラージュシステム(collage system)とは 辞書式圧縮法によって圧縮されたテキストを表現する ための形式的体系 LZ77圧縮テキスト LZ78圧縮テキスト LZW圧縮テキスト 6/38 コラージュシステムで表現された テキストに対する 照合アルゴリズム コラージュシステム 研究背景 コラージュシステム コラージュシステム上の照合アルゴリズム 圧縮テキストに対する近似文字列照合問題 まとめ 7 LZW圧縮法 a b ab ab ba b c aba bc abab テキスト 変換後の列 12 4 辞書木 = {a,b,c} 4 0 a 1 b a b 4 8/38 5 a b b 6 7 b 11 5 23 2 c 3 c 9 10 a 8 6 12 a 9 11 辞書式圧縮法 辞書式圧縮法の手順 テキスト中の文字列を辞書に登録 辞書を用いてテキストを符号化 符号化 符号化列 テキスト 辞書 文字列の切り出し 9/38 圧縮テキスト コラージュシステムの例 X1 = a ; X2 = b ; X3 = X1・X2 ; D : X4 = X2・X1 ; X5 = ( X3 )3 ; X6 = [ 3 ]X5 ; ||D|| = 6 (連接) ab (連接) ba (繰り返し) ababab (切り落とし) bab X6.u S : X3 X6 X4 X5 X2 X3 X1 X5 X4 X2 |S| = 10 abbabbaabababbabaabababbab 10/38 コラージュシステムの定義 コラージュシステムとは,組〈D, S 〉 D : トークン割当の集合(辞書に相当) X1 = expr1 ; X2 = expr2 ; ・・・ ; Xn = exprn 各 exprk は以下のいずれか a a ∈Σ∪{ε} 一文字割当 Xi ・ Xj i, j は整数で, i, j < k 連結 j ( Xi ) i, j は整数で, i < k 繰り返し [ j ]X i, j は整数で, i < k 前切り落とし i [j] Xi i, j は整数で, i < k 後切り落とし ||D|| = n : D中のトークンの個数 X.u : トークン X が表す文字列 S : D で割当てられたトークンの列(符号列に相当) 11/38 Xi1 Xi2 ・・・Xil ( Xi は D中のトークン) |S| = l : トークンの列の長さ height(D) の定義 D : X1 = a ; X2 = b ; X3 = X1・X2 ; X4 = X2・X1 ; X5 = ( X3 )3 ; X6 = [ 3 ]X5 ; X7 = X6・X4 X7 X6 X4 X5 X2 X1 X3 X1 X2 height(X7) = 4 height(D) = max{height(X) | XF(D)} F (D) : D 中のトークンの集合 12/38 LZWのコラージュシステム S : Xi1 Xi2・・・Xin D : X1 = a1; X2 = a2; ・ ・ ・ Xq = aq; Xq+1 = Xi1 bi2; Xq+2 = Xi2 bi3; ・ ・ ・ Xq+n-1 = Xin-1 bin ={a1, ..., aq} ただし bj は Xj .u の先頭の文字 13/38 LZSSのコラージュシステム S : Xq+1 Xq+2・・・Xq+n D : X1 = a1 ; X2 = a2 ; ・・・ Xq = aq ; [ j1] [i ] m 1 1 Xq+1 = (( Xl(1) Xl(1)+1 ・・・ Xr(1)) ) b1; Xq+2 = (( [i2]X l(2) Xl(2)+1 ・・・ Xr(2) [ j2] m 2 ) ) b2; ・ ・ ・ [ jn] [i ] m n n Xq+n = (( Xl(n) Xl(n)+1 ・・・ Xr(n)) ) bn 14/38 ={a1, ..., aq} ただし 0 ik, jk, mk で bj 文法変換による圧縮(Kiefferら(2000)) テキストT grammar transformer 文脈自由文法 GT grammar encoder 011100110011100111110111 S → ACBBEA A → D1 B → C1 C → 0D D → 0E E → 11 D : X1 = 0 ; X2 = 1 ; X3 = X2・X2; X4 = X1・X3; X5 = X1・X4; X6 = X5・X2; X7 = X4・X2 E D C B A S : X7 X5 X6 X6 X3 X7 圧縮テキスト 15/38 コラージュシステム上 の照合アルゴリズム 研究背景 コラージュシステム コラージュシステム上の照合アルゴリズム 圧縮テキストに対する近似文字列照合問題 まとめ 16 コラージュシステムに対する文字列照合 パタン= a b a b b についての KMPオートマトン : goto 関数 {a} 0 a 1 b 2 a 3 b Jump( 4 , Xi4) = 1 4 b 5 : failure 関数 Output( 4 , Xi4) = {3} 状態: 0 1 2 3 4 3 4 5 1 a b a b a b b a テキスト: S : 17/38 Xi1 Xi2 Xi3 Xi4 関数Jump の構成の計算量 補題 関数Jump( j ,X) は,O( ||D|| + ||2 ) 領域を用いて O( ||D||・height(D) + ||2 ) 時間で構成でき, O(1)時間で値を返す. Dが切り落とし操作を含まない場合は, O( ||D|| + ||2 ) 時間で構成できる. Jump( 4 , X5) = 1 状態: 4 5 1 3 4 テキスト: a b b a S : X5 18/38 O(1) 時間 関数Output の構成の計算量 補題 集合Output( j, X) の要素を枚挙する手続きは, O( ||D|| + ||2 ) 領域を用いて O( ||D||・height(D) + ||2 ) 時間で構築でき, O( height(D) + |Output( j, X)| )時間で枚挙できる. Dが切り落とし操作を含まない場合は,O( ||D|| + ||2 ) 時間で構築でき,O( |Output( j, X)| ) 時間で枚挙できる. 19/38 提案アルゴリズムの計算量 定理 コラージュシステム〈D, S 〉で表現されたテキストに対する 文字列照合問題は, O( ||D|| + ||2 ) 領域を用いて O( ( ||D|| + |S| )・height(D) + ||2 + r ) 時間で解決できる. Dが切り落とし操作を含まない場合は, O( ||D|| + |S| + ||2 + r ) 時間で解決できる. 20/38 r はパタンの出現個数 得られた知見 O( (||D||+|S|) ・height(D) + ||2 + r ) 時間 LZ77 LZSS O( ||D|| + |S| + ||2 + r ) 時間 LZ78 LZW BPE Sequitur O( ||D|| + ||2 ) 領域 21/38 r はパタンの出現個数 複数パタンへの拡張 入力: テキストT, パタンの集合 非圧縮テキストに対するAho-Corasick(AC)オートマトンを模倣 O( (||D||+|S|) ・height(D) + m2 + r ) 時間 O( ||D|| + m2 ) 領域 Boyer-Moore(BM)型の照合アルゴリズム Shibataら(2000)のアルゴリズムを拡張 O( (||D||+|S|) ・height(D) + m|S| + m2 + r ) 時間 O( ||D|| + m2 ) 領域 m はに含まれるパタンの長さの総和 22/38 r はパタンの出現個数 アイデア ={aba,ababb,abca,bb} についてのACオートマトン {a,b} 0 a b 1 2 a b 3 4 b {ababb,bb} {aba} c b 8 b 6 a 5 7 {abca} 9 {bb} : goto function : failure function { } : output (AC はACオートマトンの遷移関数) Jump( q, X) = AC( q, X.u) Output( q, X)={|v|, o(AC(q, v)), v は X.u の接頭辞} ( 23/38 o はACオートマトンの出力関数) 実験結果(LZW圧縮法) 1.4 AlphaStation XP1000 (Alpha21264: 667MHz) Tru64 UNIX V4.0F 目 標 1 CPU時間(秒) 1.2 Genbank(DNA塩基配列) 17.1Mbyte 1.0 0.8 compress(LZW)にKMPを組込み gunzip(LZ77)にKMPを組込み 0.6 提案アルゴリズム 0.4 ビットパラレルによる高速化 0.2 0 非圧縮テキストをKMPで照合 5 10 15 20 25 パタンの長さ 24/38 30 * compress はUNIXのLZW圧縮の圧縮ツール * gunzip はUNIXのLZ圧縮の復号ツール 実験結果(非圧縮テキスト上のアルゴリズムとの対比) CPU時間(秒) 0.25 AlphaStation XP1000 (Alpha21264: 667MHz) Tru64 UNIX V4.0F 0.20 Genbank(DNA塩基配列) 17.1Mbyte 0.15 非圧縮テキストをKMPで照合 0.10 目 0.05 標 2 0.00 25/38 BPE圧縮テキストに対する照合 5 10 15 20 25 パタンの長さ 30 * BPEはByte Pair Encoding圧縮法 * KMPはKnuth-Morris-Pratt法 * AgrepはWu&Manberが開発した検索ツール 実験結果(非圧縮テキスト上のアルゴリズムとの対比) 0.8 AlphaStation XP1000 (Alpha21264: 667MHz) Tru64 UNIX V4.0F CPU時間(秒) 0.7 Medline(英文テキスト) 60.3Mbyte 0.6 0.5 非圧縮テキストをKMPで照合 0.4 BPE圧縮テキストに対する照合 0.3 非圧縮テキストをAgrepで照合 0.2 BPE圧縮テキストに対する Boyer-Moore型のアルゴリズム を用いた照合(Shibataら[2000]) 0.1 0.0 26/38 5 10 15 20 25 パタンの長さ 30 * BPEはByte Pair Encoding圧縮法 * KMPはKnuth-Morris-Pratt法 * AgrepはWu&Manberが開発した検索ツール 圧縮テキストに対する 近似文字列照合問題 研究背景 コラージュシステム コラージュシステム上の照合アルゴリズム 圧縮テキストに対する近似文字列照合問題 まとめ 27 近似文字列照合問題 CARRIAGE MARRIAGE MASSAGE 28/38 近似文字列照合問題 テキスト中のパタンとの編集距離が k 以内の文字列の 出現を求める問題 編集距離 文字列 x に文字の挿入・削除・置換の操作を施して 文字列 y へ変換するために要する最小操作回数 d CARRIAGE d=1 MARRIAGE k=2 置換 MASSAGE d=3 29/38 MARRIAGE 削除 MASS AGE 近似文字列照合アルゴリズム 動的計画法 オートマトンに基づく手法 Ukkonen (1985) O( min(3m, m(2m||)k) ) 個の状態数 ビットパラレル手法 Sellers (1980) O(mN) 時間 O(m) 領域 Ukkonen (1985) 平均O(kN) 時間 O(m) 領域 Wu & Manber (1992) O( k m/L N) 時間領域 Baeza-Yates & Navarro (1996) O( k(m-k)/L N) 時間領域 Myers (1998) O( m/L N) 時間領域 フィルタリング手法 Wu and Manber (1992) 詳しい人 L はマシン依存 N はテキストの長さ m はパタンの長さ k は許容するエラーの数 G. Navarro A Guided Tour to Approximate String Matching ACM Computing Surveys, 33(1):31-88,2001 30/38 圧縮テキスト上の近似文字列照合 Kärkkäinenら(2000)のアルゴリズム 動的計画法を使った近似文字列照合アルゴリズムに基づく 最悪時 O(mkn+r ) 時間、平均 O(k2n+r ) 時間 LZ78圧縮テキスト上で動作 提案アルゴリズム 非決定性オートマトンの動作をビットパラレル手法で模倣する Baeza-Yates & Navarro (1999) のアルゴリズムを拡張 最悪時 O(mk3n / L) 時間 制限されたCollage system上で動作 → LZ78/LZW上で動作 n は圧縮テキストの長さ m はパタンの長さ 31/38 r はパタンの出現個数 LZW圧縮法に対する実験結果 80 Intel Pentium III 550MHz (RAM: 64Mb; Linux) Wall Street Journal の記事 (英文テキスト)10Mbyte パタンの長さ=10 CPU時間(秒) 70 60 50 40 提案アルゴリズム 30 20 Kärkkäinenらのアルゴリズム 10 復号後に[Myers98]で照合 0 1 2 3 4 5 許容される最大の編集距離 k 32/38 圧縮テキストに対する近似文字列照合の高速化 フィルタリング手法(Filtration technique; Wu and Manber, 1992) パタンを k+1 個の小片に分割 各小片を複数パタン文字列照合アルゴリズムで照合 小片が出現した近辺を通常用いられる近似文字列照合アルゴリ ズムを用いて検査 k = 2 の場合 パタン: TAAATCACGGCATACT 分割後の小片: TAAAT, CACGG, CATACT テキスト: 33/38 ACCCTGTTTAGATCACGGCACTACTGTAAAC 圧縮テキストに対してフィルタリング手法を適用 圧縮テキスト上の複数パタン文字列照合アルゴリズムが必要 圧縮テキストを部分的に復号する必要がある 圧縮テキスト上の複数パタン照合アルゴリズム Aho-Corasick型 Boyer-Moore型 G. Navarro and J. Tarhio, Boyer-Moore string matching over Ziv-Lempel compressed text. Y. Shibata, T. Matsumoto, M. Takeda, A. Shinohara, and S. Arikawa, A Boyer-Moore type algorithm for compressed pattern matching. ビットパラレル型 34/38 T. Kida, M. Takeda, A. Shinohara, M. Miyazaki, and S. Arikawa, Multiple pattern matching in LZW compressed text. G. Navarro and M. Raffinot, A general practical approach to pattern matching over Ziv-Lempel compressed text. T. Kida, M. Takeda, A. Shinohara, M. Miyazaki, and S. Arikawa, Shift-And approach to pattern matching in LZW compressed text. LZW圧縮法における実験結果 Intel Pentium III 550MHz (RAM: 64Mb; Linux) Wall Street Journal の記事 (英文テキスト)10Mbyte パタンの長さ=10 CPU時間(秒) 7 6 5 復号後にフィルタリング手法で照合 4 復号後に[Myers98]で照合 3 圧縮テキストにフィルタリング/AC 圧縮テキストにフィルタリング/BM 2 圧縮テキストにフィルタリング/BP 1 1 2 3 4 5 許容される最大の編集距離 k 35/38 * ACはAho-Corasick型の圧縮テキスト上の 複数パタン文字列照合アルゴリズム * BPはBit-parallel型のアルゴリズム[Navarro+99] * BMはBoyer-Moore型のアルゴリズム[Navarro+00] LZW圧縮法における実験結果 CPU時間(秒) 7 圧縮テキストにフィルタリング/AC 6 復号後にフィルタリング手法で照合 5 4 圧縮テキストにフィルタリング/BM 圧縮テキストにフィルタリング/BP 3 復号後に[Myers98]で照合 2 Intel Pentium III 550MHz (RAM: 64Mb; Linux) Wall Street Journal の記事 (英文テキスト)10Mbyte パタンの長さ=30 1 0 1 5 10 15 許容される最大の編集距離 k 36/38 LZW圧縮法における実験結果 CPU時間(秒) 8 Intel Pentium III 550MHz (RAM: 64Mb; Linux) DNA塩基配列 10Mbyte パタンの長さ=30 7 6 5 圧縮テキストにフィルタリング/BM 4 復号後にフィルタリング手法で照合 3 復号後に[Myers98]で照合 2 圧縮テキストにフィルタリング/AC 1 0 圧縮テキストにフィルタリング/BP 1 5 10 15 許容される最大の編集距離 k 37/38 * ACはAho-Corasick型の圧縮テキスト上の 複数パタン文字列照合アルゴリズム * BPはBit-parallel型のアルゴリズム[Navarro+99] * BMはBoyer-Moore型のアルゴリズム[Navarro+00] まとめ コラージュシステムを提案 コラージュシステム上の文字列照合アルゴリズムを開発 複数パタンに対するアルゴリズム 近似文字列照合アルゴリズム ビットパラレル手法に基づくアルゴリズム→O(k3||n /L) 時間 フィルタリング手法による高速化 実験結果 38/38 単一パタンに対するアルゴリズム 2 2 O( (||D||+|S|) ・height(D) + || + r ) 時間,O( ||D|| + || ) 領域 LZW圧縮テキスト 通常用いられる文字列照合法に比べ約2倍高速 近似文字列照合-kが小さい場合に最高約3倍高速 Byte pair encoding (BPE)圧縮テキスト 非圧縮テキストに対する照合よりも約1.8~3.7倍高速 圧縮率が良いテキストに対してAgrepより高速
© Copyright 2024 ExpyDoc