圧縮テキスト上の近似文字列照合問題

圧縮テキスト上の近似文字列照合問題
喜田 拓也,竹田 正幸,篠原 歩
九州大学大学院システム情報科学府 情報理学専攻
発表者:竹田研究室 博士課程3年 喜田 拓也
文字列照合問題


テキストT中に含まれるパタンの出現を求める問題
KMP法[Knuthら(1974)], BM法[BoyerとMoore (1977)]
ビットパラレル手法[Abrahamson(1987)][Baeza-YatesとGonnet(1992)]
パタン hanage
テキストT
日本経済新聞 11月16日 朝刊(ジュネーブ発 西山 章宏)
スイスの保養地、ダヴォス・プラッツで11月10日から11月14まで、行われた、世
界知覚認識学会(ミシェル・ポーター会長)で、北海道大学医学部の斉藤信(まこと)
教授が提唱した、痛みを表す「hanage」と言う単位を、世界で共通の単位とする事
が承認された。本来、痛みは、個人差が大きく、同じ刺激でも主観によって感じ方が
異なるため、客観的に数値で表すことは、不可能であると思われていた。しかし、斉
藤教授は、「鼻の粘膜は、人体の中で一番個人差が小さい。」事に注目し研究を進
めた結果、1センチの鼻毛を、1N(ニュートン)の力で、引っ張る時に生じる痛みを、
1hanageと定義出来ることを発見し、そして今学会で単位として承認された。
圧縮テキストに対する文字列照合問題
目
テキスト
標
データ
文字列照合
アルゴリズム
転送
2
二次記憶装置上
主記憶装置上
圧縮テキスト
目
標 転送
1
二次記憶装置上
文字列照合
アルゴリズム
復号
主記憶装置上
主記憶装置上
圧縮テキスト
転送
二次記憶装置上
主記憶装置上
圧縮文字列照合
アルゴリズム
本分野における研究
圧縮方法
照合アルゴリズム
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
実験結果(非圧縮テキスト上のアルゴリズムとの対比)
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
5
10
15
20
25
パタンの長さ
30
* BPEはByte Pair Encoding圧縮法
* KMPはKnuth-Morris-Pratt法
* AgrepはWu&Manberが開発した検索ツール
近似文字列照合問題
CARRIAGE
MARRIAGE
MASSAGE
近似文字列照合問題


テキスト中のパタンとの編集距離が k 以内の文字列の
出現を求める問題
編集距離
 文字列 x に文字の挿入・削除・置換の操作を施して
文字列 y へ変換するために要する最小操作回数 d
CARRIAGE
d=1
MARRIAGE
k=2
MARRIAGE
置換
MASSAGE
d=3
削除
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
圧縮テキスト上の近似文字列照合

Kärkkäinenら(2000)のアルゴリズム




動的計画法を使った近似文字列照合アルゴリズムに基づく
最悪時 O(mkn+r ) 時間、平均 O(k2n+r ) 時間
LZ78圧縮テキスト上で動作
提案アルゴリズム



非決定性オートマトンの動作をビットパラレル手法で模倣する
Baeza-Yates & Navarro (1999) のアルゴリズムを拡張
最悪時 O(mk3n / L) 時間
制限されたCollage system上で動作 → LZ78/LZW上で動作
n は圧縮テキストの長さ
m はパタンの長さ
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
圧縮テキストに対する近似文字列照合の高速化

フィルタリング手法(Filtration technique; Wu and Manber, 1992)



パタンを k+1 個の小片に分割
各小片を複数パタン文字列照合アルゴリズムで照合
小片が出現した近辺を通常用いられる近似文字列照合アルゴリ
ズムを用いて検査
k = 2 の場合
パタン:
TAAATCACGGCATACT
分割後の小片: TAAAT, CACGG, CATACT
テキスト:

ACCCTGTTTAGATCACGGCACTACTGTAAAC
圧縮テキストに対してフィルタリング手法を適用

圧縮テキスト上の複数パタン文字列照合アルゴリズムが必要

圧縮テキストを部分的に復号する必要がある
圧縮テキスト上の複数パタン照合アルゴリズム
圧縮テキスト上の複数パタン照合アルゴリズム

Aho-Corasick型




Boyer-Moore型



T. Kida, M. Takeda, A. Shinohara, M. Miyazaki, and S. Arikawa,
Multiple pattern matching in LZW compressed text.
LZW圧縮テキスト上で動作
O(m2+n+r) 時間,o(m2+n) 領域
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.
ビットパラレル型


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
* 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
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
* ACはAho-Corasick型の圧縮テキスト上の
複数パタン文字列照合アルゴリズム
* BPはBit-parallel型のアルゴリズム[Navarro+99]
* BMはBoyer-Moore型のアルゴリズム[Navarro+00]
まとめ