透過的データ圧縮 Transparent Data Compression

Slides:



Advertisements
Similar presentations
北海道大学 Hokkaido University 1 情報理論 講義資料 2016/06/22 情報エレクトロニクス学科共通科目・2年次・第 1 学期〔必修 科目〕 講義「情報理論」第 5 回 第 3 章 情報源のモデル [ 後半 ] 3.5 情報源のエントロピー.
Advertisements

効率的に計算可能な 加法的誤りの訂正可能性 安永 憲司 九州先端科学技術研究所 SITA 2012 @ 別府湾ロイヤルホテル
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
簡潔データ構造 国立情報学研究所 定兼 邦彦.
Succinct Data Structure
早稲田大学大学院 理工学研究科情報科学専攻 後藤研究室 修士 焦 江霞
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
LZ符号化 森田 岳史.
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
セキュアネットワーク符号化構成法に関する研究
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
簡潔データ構造 国立情報学研究所 定兼 邦彦.
Lexical Permutation Sorting Algorithm
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
情報生命科学特別講義III (8)木構造の比較: 順序木
全体ミーティング (4/25) 村田雅之.
On the Enumeration of Colored Trees
簡潔データ構造 国立情報学研究所 定兼 邦彦.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
全文検索のためのデータ構造と 構成の効率について
集中講義(九州大学数理学研究院) バイオ構造データに対する数理モデルと アルゴリズム(3) + 数理談話会 木構造および画像データの文法圧縮
Reed-Solomon 符号と擬似ランダム性
Paper from PVLDB vol.7 (To appear in VLDB 2014)
情報工学概論 (アルゴリズムとデータ構造)
C11: 大量データ処理のための領域効率の良いアルゴリズム
東京大学大学院情報理工学系研究科 数理情報学専攻 定兼 邦彦 2016年4月7日
データ構造とアルゴリズム 分割統治 ~ マージソート~.
PSOLA法を用いた極低ビットレート音声符号化に関する検討
東京大学大学院情報理工学系 コンピュータ科学専攻修士1年 (辻井研) 岡野原 大輔
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
東京大学 大学院情報理工学系研究科数理情報学専攻 工学部計数工学科 定兼 邦彦 2014年8月6日
IIR輪講復習 #5 Index compression
二分探索木によるサーチ.
大規模キー集合の 効率的な格納手法 tx bep
九州大学大学院システム情報科学研究科 情報理学専攻 竹田研究室 博士課程3年 喜田 拓也
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
情報工学概論 (アルゴリズムとデータ構造)
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
正規分布における ベーテ近似の解析解と数値解 東京工業大学総合理工学研究科 知能システム科学専攻 渡辺研究室    西山 悠, 渡辺澄夫.
簡潔データ構造 国立情報学研究所 定兼 邦彦.
決定木とランダムフォレスト 和田 俊和.
Fast Pattern Matching Algorithms in Compressed Texts
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
簡潔データ構造 国立情報学研究所 定兼 邦彦.
Proceedings of the Third South American Workshop on String Processing.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
数理情報工学演習第二B 数理2研 定兼 邦彦 2016/9/30.
複数の相関のある情報源に対するベイズ符号化について
半構造化テキストに対する 文字列照合アルゴリズム
Cプログラミング演習 第10回 二分探索木.
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
データ圧縮技術による文字列照合処理の高速化に関する研究
盗聴・改ざんに対して耐性を持つ ネットワーク符号化について
プログラミング 4 木構造とヒープ.
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
Hoffman符号 2011/05/23.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
秘匿リストマッチングプロトコルとその応用
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
5.チューリングマシンと計算.
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
グラフの列挙 中野 眞一    (群馬大学) 2019/9/14 列挙学校.
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
Presentation transcript:

透過的データ圧縮 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日

背景 データ圧縮の目的 (過去) データ圧縮の目的 (現在) ランダムアクセスができたらどうなるか ディスク容量の節約 通信コスト(料金,時間)の削減 データ圧縮の目的 (現在) アクセスの高速化 (CPU速度 > ディスク速度) 連続的なアクセスに限られる ランダムアクセスができたらどうなるか 保存用

透過的データ圧縮 もし圧縮データの任意部分を高速に復元できれば データを圧縮したまま保存できる 圧縮されていることを意識しなくていい ディスク容量の節約 高速なアクセスが可能 圧縮されていることを意識しなくていい

本研究の結果 長さ n の文字列 S を圧縮 (アルファベットサイズ) サイズ: LZ78 [Ziv, Lempel 78] と漸近的に同じ S の i 文字目からの連続する log n 文字  (log n ビット) を定数時間で復元可能 (decode(S,i)) (計算モデル: word RAM (語長 log n ビット)) このアクセス時間は未圧縮の場合と同じ (Hk: S の k 次経験的エントロピー)

研究の動機 Succinctデータ構造を更に圧縮したい bit vector 検索木 グラフ 圧縮接尾辞木

Succinctデータ構造 あるデータ集合 D を格納するデータ構造 データ構造のサイズ: 情報理論的下限に近い 高速な問合せが可能 情報理論的下限 L = log (D の場合の数) 高速な問合せが可能 補助的なデータ構造 (索引) を使用 サイズ: 漸近的に無視できる (o(L) bits)

集合のSuccinctデータ構造 S: 01000110001001000001 集合 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: 01000110001001000001 1 n i rank(D,i) = 3

木のSuccinctデータ構造 n 節点の順序木 T を格納 T は 通り存在 (Catalan数) 問合せ(定数時間) 通常のデータ構造は O(n log n) bits T は 通り存在 (Catalan数) 情報理論的下限 = 2n  (log n) bits 問合せ(定数時間) 長男,兄弟,親,深さ,preorder,子孫の数など サイズ: 2n  o(n) bits [MR01] [GRR04] a ((()())()) b a c d e S b e 木を括弧列 S で表現 c d

問: Succinctデータ構造は それ以上圧縮できないか? 答: 場合によっては可能 例: 集合 D  {1,2,...,n} の要素数が少ない場合 要素数が m の集合は 通り bitsのデータ構造でmember, rank, selectを定数時間で返すものが存在 [RRR02] bitsで表現できるはず FID (Fully Indexable Dictionary) と呼ばれる

FIDを用いたポインタの圧縮 ある n ビットのデータ構造(ビット列)へのポインタ m個を格納する場合 ポインタの値 i を S[i] = 1 で表現 S をFIDで圧縮.ポインタはselectで求まる m = O(n/log n) のとき,FIDのサイズは ビット列 S 000000010000000000001000000000001000000000000100000000

問: 木のSuccinctデータ構造は 圧縮できるか? FIDでは不可能 ( と ) が同数ある ⇒ B(n,2n) = 2n bits 必要 2n + O(n log log n/log n) bits [GRR04] データ間の相関を考慮する必要がある FIDでは 0 次のエントロピーまで圧縮 k 次のエントロピーまで圧縮したい

本研究の圧縮法の応用 集合 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 よりもさらに小さい

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 n1] へのメモリ参照をdecode(S,i)に置き換える) どんな問合せの計算量も漸近的には同じ

木のSuccinctデータ構造の圧縮 FIDでは不可能 EIDでは可能 2n + O(n log log n/log n) bits [GRR04] EIDでは可能 木を表現する括弧列 S の Hk まで圧縮可 (k=O(log log n)) 2nHk + O(n log log n/log n) bits 問合せの計算量は圧縮前と同じ 構造が同じ部分木があると Hk は小さくなる (接尾辞木で特に有効)

EIDの圧縮サイズの限界 S = 010101...010101 を圧縮する場合 エントロピーが小さいと第2項が無視できない 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項は最適

従来の圧縮法

従来の圧縮法 辞書式圧縮法 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より高圧縮率

LZ77圧縮法 文字列を辞書へのポインタで置き換える 辞書 = すでに圧縮した文字列 圧縮率は文字列のエントロピーに収束 ....a compressed suffix tree consists of a compressed suffix array, 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. 圧縮率は文字列のエントロピーに収束

PPM 文字を1文字ずつ符号化 各文字の符号は文脈から決まる 圧縮サイズ: abcababc 文脈 符号化する文字 文脈:符号化する文字の直前の k 文字 圧縮サイズ: abcababc 文脈 符号化する文字

高次圧縮の問題点 k 次のエントロピーの圧縮率を達成するには隣接する文字列の情報を用いて圧縮する必要がある 一部分を復元する場合も全体を復元ことになる k = 4 c o m p r e s s i o n

従来の圧縮法との比較 漸近的圧縮率 log n ビットの復号時間 LZ77 [ZL77] nHk O(n) LZ78 [ZL78] PPM [CW84] CTW [WST95] Block Sorting [BW94] 本研究 O(1) [GGV03]

新圧縮法の概要 LZ78の改良+補助データ構造

LZ78 圧縮法 S = aaabbbaaaabbbb 文字列を辞書中のフレーズに分割 数字に置き換えて符号化 辞書を更新 出力 a a b 2 a 1 4 b LZ-trie 3 a 7 b 5 b 6 a 8 b S = aaabbbaaaabbbb 2 3 4 5 6 7 8 出力 1 a 2 a 1 b 4 b 3 a 2 b 5 b

LZ78の圧縮率 長さ n の文字列 S を分解したフレーズの数 c は 圧縮後のサイズ: bits [Ziv, Lempel 78] 長さ n の文字列 S を分解したフレーズの数 c は 圧縮後のサイズ: bits S が定常エルゴード情報源 (エントロピー H) から生成されるなら S の k 次経験的エントロピーHkに対し ( : アルファベットサイズ) [Kosaraju, Manjini 99]

添字が T のpreorderと一致するように付け替える 本研究のデータ構造 T 6 4 5 2 3 1 7 8 a b S = aaabbbaaaabbbb R P 1 2 4 5 7 10 12 E (((())())((()))) C Tを表現する括弧列 フレーズの添字を格納 添字が T のpreorderと一致するように付け替える フレーズの開始位置を格納 Tの枝ラベル

decodeアルゴリズム S = aaabbbaaaabbbb S[i,i+log n1] を復号する場合 S[i] を含むフレーズ p を求める p を表すLZ-trieのノード v を求める v から根に向かうパス上のラベルを復号 S = aaabbbaaaabbbb R 2 3 6 7 4 5 8 P 1 2 4 5 7 10 12 6 4 5 2 3 1 7 8 a b

Long phraseの復号 Long phrase: 長さ w = ½ log n 以上のフレーズ branching node (根へのパスを格納) 枝分かれ無し(定数時間で復号可) jump node (子孫をw/2個以上持つ) micro tree (jump nodeの子孫) 定数時間で復号可

Short phraseの復号 Short phrase: 長さ w = ½ log n 未満のフレーズ Sの長さ ½ log n の部分列はshort phraseを O(log n)個含む可能性あり ⇒ 定数時間で復号できない r > 1 個の連続するshort phraseをそのまま格納 対応する R は格納しない データ構造のサイズは増加しない R を格納する場合: r log c bits そのまま格納する場合: ½ log n bits ½ log n < r log c (∵ )

まとめ 新圧縮法の提案 任意の文字列を高次エントロピー限界まで圧縮 部分列の定数時間復号 (未圧縮と同じ時間) 応用 既存の索引構造のサイズを改善 検索速度も同じ 個々の索引ごとに圧縮法を考える必要がない 課題 文字列の更新 LZ77などの改良