圧縮テキストに対する文字列照合問題

圧縮テキストに対する文字列照合問題
竹田研究室 博士課程二年 喜田 拓也
発表内容
• 圧縮テキスト上の文字列照合問題
• 本研究分野の歩み
• 近似文字列照合アルゴリズム
• まとめ
- 2/ 31 -
発表内容
文字列照合問題
hanage
日本経済新聞 11月16日 朝刊(ジュネーブ発 西山 章
宏)
スイスの保養地、ダヴォス・プラッツで11月10日から11月1
4まで、行われた、世界知覚認識学会(ミシェル・ポーター会
長)で、北海道大学医学部の斉藤信(まこと)教授が提唱した、
痛みを表す「hanage」と言う単位を、世界で共通の単位とする
事が承認された。本来、痛みは、個人差が大きく、同じ刺激で
も主観によって感じ方が異なるため、客観的に数値で表すこ
とは、不可能であると思われていた。しかし、斉藤教授は、
「鼻の粘膜は、人体の中で一番個人差が小さい。」事に注目
し研究を進めた結果、1センチの鼻毛を、1N(ニュートン)の
力で、引っ張る時に生じる痛みを、1hanageと定義出来ること
を発見し、そして今学会で単位として承認された。
- 3/ 31 -
文字列照合問題
文字列照合問題
Boyer-Moore (1977)
O(テキストの長さ)
Karp-Rabin (1987)
Bit-parallelism (1987)
...
既
存
の
手
法
Knuth-Morris-Pratt (1974)
限界 !?
索引構造
Suffix
array
- 4/ 31 -
データ圧縮
Inverted
file
文字列照合問題
圧縮テキスト上の文字列照合問題
普通の
文字列照合機械
展開
圧縮テキスト
圧縮テキスト
テキスト
圧縮
テキスト 圧縮
- 5/ 31 -
原テキスト
圧縮テキストに対する
文字列照合機械
パターン
非圧縮
パターン 非圧縮
圧縮テキスト上の文字列照合問題
本研究分野の歩み
•圧縮テキスト上の文字列照合問題とは
•本研究分野の歩み
•圧縮テキスト上の近似文字列照合問題
•まとめ
年
研究者
圧縮法
1988 Eliam-Tsoreff and Vishkin
1992 Amir, Landau, and Vishkin
run-length
two-dimensional run-length
1992 Amir and Benson
two-dimensional run-length
1994 Amir, Benson, and Farach
two-dimensional run-length
1994 Manber
original compression scheme
1995 Farach and Thorup
LZ77
1996 Gasieniec, et al.
LZ77
1996 Amir, Benson and Farach
LZW
1997 Karpinski, Rytter, and Shinohara
straight-line programs
1997 Miyazaki, Shinohara, and Takeda
straight-line programs
1997 Takeda
finite state encoding
1998 Fukamachi, Shinohara, and Takeda
1998 Kida, et al.
- 7/ 31 -
Huffman encoding
LZW
これまでの研究1
年
研究者
1998 Kida, et al.
1998 de Moura, et al.
1999 Kida, et al.
1999 Navarro and Raffinot
1999 Shibata, et al.
1999 Kida, et al.
圧縮法
LZW
Word based encoding
LZW
LZ family
Antidictionaries
Dictionary based methods
(Collage system)
1999 Shibata, et al.
Byte pair encoding
2000 Shibata, et al.
Collage system
- 8/ 31 -
これまでの研究2
Amirらのアイデア
パターン
0
a
ababb
1
b
2
a
3
-1
- 9/ 31 -
4
7
Knuth-Morris-Pratt(KMP) automaton
状態
テキスト
圧縮テキスト
b
b
5
: goto 関数
: failure 関数
0 1 2 3 4 3 4 5 1
a b a b a b b a
X1 X2
X3
X4
Amirらのアイデア
我々の改良
Amir et al.
もっと速くし
たいなぁ…
我々[DCC’98]
KMP照合機械
Aho-Corasick照合機械
単一のパターンのみ
複数パターンに対応
最初の出現のみ報告
すべての出現位置を報告
O(n + m2)時間領域
- 10/ 31 -
O(n log m + m )時間
O(n+m)領域
O(n + m2)時間領域
実験結果なし
実装&実験済み
我々の改良[DCC’98]
Bit-parallelism
ababb
パターン

0
a
- 11/ 31 -
a
b
2
3
b
5
4
a b a b a b b a
テキスト
1
2
3
4
5
1
b
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
Bit-parallelism
Bit-parallelism
ababb
a b a b a b b a
パターン
テキスト
1
2
3
4
5
0
1
0
0
0
- 12/ 31 -
0
0
0
0
0
1
0
0
0
0
1
1
0
0
1 &1
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
0
0
0
0
1
0
0
0
0
0
1
マスクビット列M
マスクビット列M
a b
1
0
0
0
0
a
b
a
b
b
1
0
1
0
0
0
1
0
1
1
Ri = (Ri-1<<1 | 1) & M(T[i])
Shift-And法の計算式
拡張のアイデア
ababb
a b a b a b b a
パターン
テキスト
1
2
3
4
5
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
Jump!
1
0
1
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
1
0
0
0
0
0
1
マスクビット列M
マスクビット列M
a b
1
0
0
0
0
a
b
a
b
b
1
0
1
0
0
0
1
0
1
1
Jump!
^ u) = ((S + |u|)∪{1,・・・, |u|})∩M(u)
^
f(S,
- 13/ 31 -
圧縮テキスト上のShift-And法
実験結果 (CPU時間)
uncompress+AC
uncompress+agrep
1.4
Time (sec)
1.2
gunzip+AC
gunzip+agrep
1.0
uncomAC
gunzipAC
0.8
AC on LZW
Bit-parallel on LZW
0.6
0.4
AlphaStation XP1000
(Alpha21264: 667MH)
Tru64 UNIX V4.0F
0.2
0
5
10
15
20
25
30
Genbank(DNA sequence)
17.1Mbyte
Pattern length
- 14/ 31 -
実験結果
実験結果 (実時間)
Medline(348,566 references) 60.3Mbyte
method
原テキストに agrep
uncomAC
gunzipAC
AC on LZW
Bit-parallel on LZW
- 15/ 31 -
Local
2.39
4.10
3.38
3.29
3.01
Remote
9.03
6.93
6.49
5.51
5.49
Local
データ転送速度 24.9Mbyte/sec
Remote
データ転送速度 6.57Mbyte/sec
実験結果
年
研究者
1998 Kida, et al.
1998 de Moura, et al.
1999 Kida, et al.
1999 Navarro and Raffinot
1999 Shibata, et al.
1999 Kida, et al.
圧縮法
LZW
Word based encoding
LZW
LZ family
Antidictionaries
Dictionary based methods
(Collage system)
1999 Shibata, et al.
Byte pair encoding
2000 Shibata, et al.
Collage system
- 16/ 31 -
これまでの研究3
反撃のSPIRE’99
T. Kida, M. Takeda, A. Shinohara, Y. Shibata, and S. Arikawa.
A Unifying Framework for Compressed Pattern Matching.
In 6th International Symposium on String Processing and
Information Retrieval, pp.89-96. IEEE Computer Society, 1999.
圧縮方法A
圧縮方法B
統一的枠組みに対する
照合アルゴリズム
圧縮方法C
従来
- 17/ 31 -
圧縮方法A
照合アルゴリズムA
圧縮方法B
照合アルゴリズムB
圧縮方法C
照合アルゴリズムC
Collage systemによる統一
Collage system
辞書式圧縮法を統一的に扱える
辞書式圧縮法を統一的に扱える
直線的プログラム+αの表現力
直線的プログラム+αの表現力
圧縮テキストを抽象的に表現
圧縮テキストを抽象的に表現
一文字代入,連結,繰り返し,切り落とし
(一文字代入,連結,繰り返し,切り落とし)
辞書部分と符号化列を分離: 〈D,
(辞書部分と符号化列を分離:
〈D,SS〉〉)
D
X1 = a ;
X4 = X2・X1 ; X6 = [ 3 ]X5 ;
X2 = b ;
X5 = ( X3 )3 ; X7 = X6・X4 ;
S
- 18/ 31 -
X3 = X1・X2 ;
X3 , X6 , X4 , X7
S
abbabbababba
Collage system
Collage systemから得られた知見
O( (||D||+|S|) ・height(D) + m2 + r ) 時間
O( ||D|| + |S| + m2 + r ) 時間
LZ77 LZSS
LZ78
BPE LZW
Run
Huffman length
O( ||D|| + m2 ) 領域
- 19/ 31 -
Collage systemによる知見
年
研究者
1998 Kida, et al.
1998 de Moura, et al.
1999 Kida, et al.
圧縮法
ほんと、
速い
よ。
1999 Navarro and Raffinot
1999 Shibata, et al.
1999 Kida, et al.
LZW
Word based encoding
LZW
LZ family
Antidictionaries
Dictionary based methods
(Collage system)
1999 Shibata, et al.
Byte pair encoding
2000 Shibata, et al.
Collage system
- 20/ 31 -
これまでの研究4(柴田登場)
BPE圧縮法
テキスト
ABABCDEBDEFABDEABC
AB
G
GGCDEBDEFGDEGC
DE
H
GGCHBHFGHGC
GC
I
GIHBHFGHI
- 21/ 31 -
ペア表
Code
Pair
A
B
C
D
E
F
G
H
I
A
B
C
D
E
F
AB
DE
GC
BPE圧縮法
実験結果
0.25
AlphaStation XP1000
(Alpha21264: 667MH)
Tru64 UNIX V4.0F
Time (sec)
0.20
Genbank(DNA sequence)
17.1Mbyte
0.15
KMP
Agrep
0.10
Bit-parallel on BPE
0.05
BM on BPE
0.00
5
10
15
20
25
30
Pattern length
- 22/ 31 -
実験結果
目標の変遷
理論的興味のみ
照合時間 <
展開時間
+
原テキストの照合時間
照合時間 < 原テキストの照合時間
照合を高速化する圧縮法の開発
- 23/ 31 -
目標の変遷
圧縮テキスト上の近似文字列照合問題
•圧縮テキスト上の文字列照合問題とは
•本研究分野の歩み
•圧縮テキスト上の近似文字列照合問題
•まとめ
近似文字列照合
CARRIAGE
MARRIAGE
MASSAGE
- 25/ 31 -
近似文字列照合問題
編集距離(レヴェンシュタイン距離)
文字列 x[1...n] を文字列 y[1...n] へ変換する
ために要する最小コスト d
各操作のコスト 置換 = 削除 = 挿入 = 1
CARRIAGE
1
MARRIAGE
k=2
MASSAGE
3
- 26/ 31 -
編集距離
非決定性オートマトンによる解法




パターン P 
OKEMON

P



P





KO


O
K




EE
K

E


M





エラー数
O
M


M



O
        
P
O
K
E
M
O
 K




E
M










P

テキスト
- 27/ 31 -




O




K

E



M

PIKACHU


O

N


0

N


1

N


N
2

3
非決定オートマトンによる解法
Bit-parallelismの利用
R. Baeza-Yates and G. Navarro

P



状態 S




O



K



P
O
K




P

P




O

O



E

K

E

K



M





E

E


O


M
O




M




M



N

O

N

O






N




N
1111 0011 0111 0000 0000
サイズ (mk+1)(k+1)
- 28/ 31 -
Bit-parallelismの適用
基本的アイデア
Jump(S,
“PIK”)
K
E
M
O

P


O






P
O
K
E
M
O












 N








P
O
K
E
M
O
              N








P
O
K
E
M
O
              N







              
P
O
K
E
M
O
N

Output(S, “PIK”)

P

I
N




P

P





O

O





K

K





E

E



M



M





O

O



N




N
K
- 29/ 31 -
基本的アイデア
Jump (S, w)

Jump(S , w) =
(S  l, d )  M(w;l, d).
max(0 ,|w| k )  l min(|w| +k , m )
0 d k
O( k2 )
平行移動
l
d
(i, j)
- 30/ 31 -
前処理で
OK!
M ( w; , d )
Jumpのアイデア
Output (S, w)
Xi 
テキスト
•••PAPEPON OMANZAIOMOROI
パターン
POK EMON
d=1
d=2
POKEMON
NOMEKOP
- 31/ 31 -
Outputのアイデア
理論的結果
T. Matsumoto, T. Kida, M. Takeda, A. Shinohara, and S. Arikawa.
Bit-parallel approach to approximate string matching in compressed texts.
In 6th International Symposium on String Processing and Information Retrieval.
Simple Collage system
LZ78, LZW
O( k2(||D||+|S| )+km )) 時間
O( k2||D|| ) 領域
||D|| : 辞書の大きさ, m : パターン長
|S| : 符号列の長さ, k : エラーの上限
O(k2n+km)) 時間
O(k2n) 領域
n : 圧縮テキスト長
J. Karkkainen, et al.
O(mkn) 時間領域
動的計画法が土台
- 32/ 31 -
J. Karkkainen, G. Navarro, and E. Ukkonen.
Approximate string matching over Ziv-Lempel
compressed text. In Proc.11th Ann. Symp. on
Combinatorial Pattern Matching.
理論的結果
実験結果(CPU時間)
m (k =1)
8
12
16
20
24
28
32
uncompress+DP
2.572
3.638
4.578
5.513
6.504
7.466
8.375
Bit-parallel on LZW
5.364
6.233
6.475
6.633
6.829
7.021
7.269
k (m =14)
1
2
3
4
5
uncompress+DP
4.108
4.110
4.101
4.102
4.098
Bit-parallel on LZW
6.327
12.91
21.51
31.50
43.03
AlphaStation XP1000
(Alpha21264: 667MH)
Tru64 UNIX V4.0F
- 33/ 31 -
Genbank(DNA sequence)
17.1Mbyte
compression ratio 26.8%
実験結果
まとめ
•圧縮テキスト上の文字列照合問題とは
•本研究分野の歩み
•圧縮テキスト上の近似文字列照合問題
•まとめ
まとめ
• 圧縮テキスト上の文字列照合は実用的な技術である.
• Collage systemは本研究のための強力な道具である.
– 辞書式圧縮法の抽象的な枠組みによる統一的手法.
• BPE圧縮法は,圧縮テキスト上の文字列照合に非常に
適した圧縮法である.
– サイズ固定の静的辞書,固定長符号,単純なアルゴリズム.
– 文字列照合を高速化するためのデータ圧縮.
• 圧縮テキスト上の近似文字列照合アルゴリズムはまだ
実用的でない.
– O( kn ) 時間?
- 35/ 31 -
まとめ
3 文字列照合問題
も
5 圧縮テキスト上の文字列照合問題
6 本研究分野の歩み
7 これまでの研究1
く
じ
22 実験結果(CIAC&CPM2K)
23 目標の変遷
8 これまでの研究2
25 圧縮テキスト上の近似文字列照合問題
9 Amirらのアイデア(KMP)
26 編集距離
10 我々の改良[DCC’98]
27 非決定オートマトンによる解法
11 Bit-parallelism[CPM’99]
28 Bit-parallelismの適用
15 実験結果(DCC&CPM--ELT)
29 基本的アイデア
14 実験結果(DCC&CPM--CPU)
30 Jumpのアイデア
17 Collage systemによる統一
31 Outputのアイデア
21 BPE圧縮法
32 理論的結果
33 実験結果
- 37/ 31 -
もくじ