透過的データ圧縮 transparent data compression

29
透透透透透透透透 Transparent Data Compression 透透透透透透透透透透透透透透透 透透 透透 2005 透 11 透 22 透 K. Sadakane and R. Grossi: Squeezing Succinct Data Structu Entropy Bounds, Proc. ACM-SIAM SODA 2006, to appear.

Upload: brenna

Post on 12-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

透過的データ圧縮 Transparent Data Compression. K. Sadakane and R. Grossi: Squeezing Succinct Data Structures into Entropy Bounds, Proc. ACM-SIAM SODA 2006, to appear. 九州大学システム情報科学研究院 定兼 邦彦 2005 年 11 月 22 日. 背景. データ圧縮の目的 ( 過去 ) ディスク容量の節約 通信コスト ( 料金,時間 ) の削減 データ圧縮の目的 ( 現在 ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 透過的データ圧縮 Transparent Data Compression

透過的データ圧縮Transparent Data Compression

九州大学システム情報科学研究院定兼 邦彦

2005 年 11 月 22 日

K. Sadakane and R. Grossi: Squeezing Succinct Data Structures intoEntropy Bounds, Proc. ACM-SIAM SODA 2006, to appear.

Page 2: 透過的データ圧縮 Transparent Data Compression

2

背景

• データ圧縮の目的 ( 過去 )– ディスク容量の節約– 通信コスト ( 料金,時間 ) の削減

• データ圧縮の目的 ( 現在 )– アクセスの高速化 (CPU 速度 > ディスク速度 )– 連続的なアクセスに限られる

• ランダムアクセスができたらどうなるか

保存用

Page 3: 透過的データ圧縮 Transparent Data Compression

3

透過的データ圧縮もし圧縮データの任意部分を高速に復元できれば• データを圧縮したまま保存できる

– ディスク容量の節約– 高速なアクセスが可能

• 圧縮されていることを意識しなくていい

Page 4: 透過的データ圧縮 Transparent Data Compression

4

本研究の結果• 長さ n の文字列 S を圧縮 ( アルファベットサイ

ズ )

• サイズ: LZ78 [Ziv, Lempel 78] と漸近的に同じ

• S の i 文字目からの連続する log n 文字

  (log n ビット ) を定数時間で復元可能 (decode(S,i))

( 計算モデル : word RAM ( 語長 log n ビット ))

• このアクセス時間は未圧縮の場合と同じ

bits

log

logloglogO

n

knnnH k

(Hk: S の k 次経験的エントロピー )

Page 5: 透過的データ圧縮 Transparent Data Compression

5

研究の動機• Succinct データ構造を更に圧縮したい

– bit vector– 検索木– グラフ– 圧縮接尾辞木

Page 6: 透過的データ圧縮 Transparent Data Compression

6

Succinct データ構造• あるデータ集合 D を格納するデータ構

造• データ構造のサイズ : 情報理論的下限に

近い– 情報理論的下限 L = log (D の場合の数 )

• 高速な問合せが可能– 補助的なデータ構造 ( 索引 ) を使用– サイズ : 漸近的に無視できる (o(L) bits)

Page 7: 透過的データ圧縮 Transparent Data Compression

7

集合の Succinct データ構造• 集合 D {1,2,...,n} を格納• 問合せ ( 定数時間 )

– member(D,i): D 中に i が存在するか– rank(D,i): D 中の i 以下の要素の数– select(D,j): D 中で j 番目に小さい要素

• サイズ : n + o(n) bits [J89] [M96]

S: 010001100010010000011 ni

rank(D,i) = 3

Page 8: 透過的データ圧縮 Transparent Data Compression

8

木の Succinct データ構造• n 節点の順序木 T を格納

– 通常のデータ構造は O(n log n) bits

• T は 通り存在 (Catalan 数 ) – 情報理論的下限 = 2n (log n) bits

• 問合せ ( 定数時間 )– 長男,兄弟,親,深さ, preorder ,子孫の数

など• サイズ : 2n o(n) bits [MR01] [GRR04]

n

n

n

n4

2

1

1

a

eb

c d

((()())())ba c d e

S

木を括弧列 S で表現

Page 9: 透過的データ圧縮 Transparent Data Compression

9

問 : Succinct データ構造はそれ以上圧縮できないか ?

• 答 : 場合によっては可能• 例 : 集合 D {1,2,...,n} の要素数が少ない場合• 要素数が m の集合は 通り

• bits のデータ構造で member, rank, select を定数時間で返すものが存在 [RRR02]

m

n

mn

nmn

m

nm

m

nnmB

logloglog, bits で表現できるはず

nnnnmB log/loglogO,

FID (Fully Indexable Dictionary) と呼ばれる

Page 10: 透過的データ圧縮 Transparent Data Compression

10

FID を用いたポインタの圧縮ある n ビットのデータ構造 ( ビット列 ) へのポ

インタ m 個を格納する場合• ポインタの値 i を S[i] = 1 で表現• S を FID で圧縮.ポインタは select で求まる• m = O(n/log n) のとき, FID のサイズは

ビット列000000010000000000001000000000001000000000000100000000S

n

nn

n

nn

nn

n

n

n

nn

n

log

loglogO

log

loglogO

log/log

logO

)log/(Olog

Page 11: 透過的データ圧縮 Transparent Data Compression

11

問 : 木の Succinct データ構造は圧縮できるか ?

• FID では不可能– ( と ) が同数ある ⇒ B(n,2n) = 2n bits 必要– 2n + O(n log log n/log n) bits [GRR04]

• データ間の相関を考慮する必要がある– FID では 0 次のエントロピーまで圧縮

– k 次のエントロピーまで圧縮したい

0

loglog,

nHmn

nmn

m

nmnmB

Page 12: 透過的データ圧縮 Transparent Data Compression

12

本研究の圧縮法の応用

• 集合 D {1,2,...,n} に対する member, rank, select を定数時間で返すデータ構造

• サイズ : nHk+O(n log log n/log n) bits (k=O(log log n))

– Hk は D を表す 0,1 列 S の k 次経験的エントロピー

• EID (Entropy-Bound Indexable Dictionary) と呼ぶ• FID よりもさらに小さい nmBnHnHnH kk ,01

Page 13: 透過的データ圧縮 Transparent Data Compression

13

EID のデータ構造とアルゴリズム

• データ構造– D を表す 0,1 列 S を圧縮したもの nHk+O(n log log n/log n)

bits

  ( 任意の連続する log n ビットを定数時間で復元可 )

– FID の補助データ構造 O(n log log n/log n) bits

• 問合せアルゴリズム– FID とほぼ同じ (S[i,i+log n1] へのメモリ参照を de

code(S,i) に置き換える )

• どんな問合せの計算量も漸近的には同じ

Page 14: 透過的データ圧縮 Transparent Data Compression

14

木の Succinct データ構造の圧縮• FID では不可能

– 2n + O(n log log n/log n) bits [GRR04]

• EID では可能– 木を表現する括弧列 S の Hk まで圧縮可 (k=O(log l

og n))

– 2nHk + O(n log log n/log n) bits

– 問合せの計算量は圧縮前と同じ– 構造が同じ部分木があると Hk は小さくなる

( 接尾辞木で特に有効 )

Page 15: 透過的データ圧縮 Transparent Data Compression

15

EID の圧縮サイズの限界• S = 010101...010101 を圧縮する場合

– FID: nH0 = n bits (+ O(n log log n/log n))

– EID: nH1 = O(log n) bits (+ O(n log log n/log n))

• エントロピーが小さいと第 2 項が無視できない

• rank を定数時間で返すデータ構造のサイズは

(n log log n/log n) bits [Miltersen 05]

 つまり第 2 項は最適

Page 16: 透過的データ圧縮 Transparent Data Compression

16

従来の圧縮法

Page 17: 透過的データ圧縮 Transparent Data Compression

17

従来の圧縮法辞書式圧縮法LZ77 [Ziv, Lempel 77]

LZ78 [Ziv, Lempel 78]

LZW[Welch 84]

compress

LZSS [Storer, Szymanski 82]

gzip

統計的圧縮法PPM[Cleary, Witten 84]

PPMD [Howard 93]

PPM*[Cleary, Teahan, Witten 95]

block sorting

[Burrows, Wheeler 94]

高圧縮率、 PPM より高速 (bzip2)

context tree weighting

[Willems, Shtarkov, Tjalkens 95]

PPM より高圧縮率

Page 18: 透過的データ圧縮 Transparent Data Compression

18

LZ77 圧縮法• 文字列を辞書へのポインタで置き換える• 辞書 = すでに圧縮した文字列

....a compressed suffix tree consists of a compressed suffixarray, a Pat tree and edge-length information.

....a compressed suffix tree consists of [l=19, d=36]array, a Pat [l=4, d=51] and edge-length information.

圧縮率は文字列のエントロピーに収束

Page 19: 透過的データ圧縮 Transparent Data Compression

19

PPM

• 文字を 1 文字ずつ符号化• 各文字の符号は文脈から決まる

– 文脈:符号化する文字の直前の k 文字

• 圧縮サイズ:

文脈 符号化する文字

abcababc

kAs Ac c

csk ppnnH

1log

Page 20: 透過的データ圧縮 Transparent Data Compression

20

高次圧縮の問題点• k 次のエントロピーの圧縮率を達成するには隣

接する文字列の情報を用いて圧縮する必要がある

• 一部分を復元する場合も全体を復元ことになる

c m sp ro e s ni o

k = 4

Page 21: 透過的データ圧縮 Transparent Data Compression

21

従来の圧縮法との比較漸近的圧縮率 log n ビットの復号時間

LZ77 [ZL77] nHk O(n)

LZ78 [ZL78] nHk O(n)

PPM [CW84] nHk O(n)

CTW [WST95] nHk O(n)

Block Sorting [BW94]

nHk

本研究 nHk O(1)

loglog

loglog

logO

2

nn

n[GGV03]

Page 22: 透過的データ圧縮 Transparent Data Compression

22

新圧縮法の概要

LZ78 の改良 + 補助データ構造

Page 23: 透過的データ圧縮 Transparent Data Compression

23

LZ78 圧縮法• 文字列を辞書中のフレーズに分割• 数字に置き換えて符号化• 辞書を更新

1

2

a

3

a

7

b 4

b

5

b

8

b

S = aaabbbaaaabbbb2 3 4 5

6

a

6 7 8

出力 1 a 2 a 1 b 4 b 3 a 2 b 5 b

LZ-trie

Page 24: 透過的データ圧縮 Transparent Data Compression

24

LZ78 の圧縮率長さ n の文字列 S を分解したフレーズの数 c

• 圧縮後のサイズ : bits

• S が定常エルゴード情報源 ( エントロピー H) から生成されるなら

• S の k 次経験的エントロピー Hk に対し

)( log

nHn

cc

loglog cc

)(loglog ckcc

ncnHcc k [Kosaraju, Manjini 99]

n

ncn

log

[Ziv, Lempel 78]

( : アルファベットサイズ )

Page 25: 透過的データ圧縮 Transparent Data Compression

25

本研究のデータ構造

6

4

5

2

3

1

7

8

a

a

a

b

b

b

b

S = aaabbbaaaabbbbR 2 3 6 7 4 5 8

P 1 2 4 5 7 10 12

2 3 6 74 5 8

E (((())())((())))1

C a a a b b b b

T

T を表現する括弧列

T の枝ラベル

フレーズの添字を格納添字が T の preorder と一致するように付け替える

フレーズの開始位置を格納

Page 26: 透過的データ圧縮 Transparent Data Compression

26

decode アルゴリズムS[i,i+log n1] を復号する場合1. S[i] を含むフレーズ p を求める2. p を表す LZ-trie のノード v を求める3. v から根に向かうパス上のラベルを復

6

4

5

2

3

1

7

8

a

a

a

b

b

b

b

S = aaabbbaaaabbbbR 2 3 6 7 4 5 8

P 1 2 4 5 7 10 12

Page 27: 透過的データ圧縮 Transparent Data Compression

27

Long phrase の復号• Long phrase: 長さ w = ½ log n 以上のフレー

ズbranching node ( 根へのパスを格納 )

枝分かれ無し ( 定数時間で復号可 )

jump node ( 子孫を w/2 個以上持つ )

micro tree (jump node の子孫 )

定数時間で復号可

Page 28: 透過的データ圧縮 Transparent Data Compression

28

Short phrase の復号• Short phrase: 長さ w = ½ log n 未満のフレーズ• S の長さ ½ log n の部分列は short phrase を O(lo

g n) 個含む可能性あり ⇒ 定数時間で復号できない

• r > 1 個の連続する short phrase をそのまま格納– 対応する R は格納しない

• データ構造のサイズは増加しない– R を格納する場合 : r log c bits– そのまま格納する場合 : ½ log n bits– ½ log n < r log c ( )∵

cn

Page 29: 透過的データ圧縮 Transparent Data Compression

29

まとめ新圧縮法の提案• 任意の文字列を高次エントロピー限界まで圧

縮• 部分列の定数時間復号 ( 未圧縮と同じ時間 )

応用• 既存の索引構造のサイズを改善• 検索速度も同じ• 個々の索引ごとに圧縮法を考える必要がない課題• 文字列の更新• LZ77 などの改良