Collage System

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)
テキスト:
abD
DcE
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;
abD
DcE
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 dOutput(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 ) 時間
