Skip to main content
QUICK REVIEW

[論文レビュー] The Wavelet Trie: Maintaining an Indexed Sequence of Strings in Compressed Space

Roberto Grossi, Giuseppe Ottaviano|arXiv (Cornell University)|Apr 16, 2012
Network Packet Processing and Optimization参考文献 1被引用数 4
ひとこと要約

この論文は、パトリアトリーとウェーブレットツリーを組み合わせることで、ほぼ最適な領域でインデックス付き文字列列を効率的に保持する圧縮データ構造であるWavelet Trieを導入する。これは、近似的にエントロピーに近い領域使用量と多項式対数時間計算量を備えた動的操作(挿入、削除、接頭辞クエリなど)をサポートし、動的文字列列に対して高い領域効率と強固な理論的保証を実現する。

ABSTRACT

An indexed sequence of strings is a data structure for storing a string sequence that supports random access, searching, range counting and analytics operations, both for exact matches and prefix search. String sequences lie at the core of column-oriented databases, log processing, and other storage and query tasks. In these applications each string can appear several times and the order of the strings in the sequence is relevant. The prefix structure of the strings is relevant as well: common prefixes are sought in strings to extract interesting features from the sequence. Moreover, space-efficiency is highly desirable as it translates directly into higher performance, since more data can fit in fast memory. We introduce and study the problem of compressed indexed sequence of strings, representing indexed sequences of strings in nearly-optimal compressed space, both in the static and dynamic settings, while preserving provably good performance for the supported operations. We present a new data structure for this problem, the Wavelet Trie, which combines the classical Patricia Trie with the Wavelet Tree, a succinct data structure for storing a compressed sequence. The resulting Wavelet Trie smoothly adapts to a sequence of strings that changes over time. It improves on the state-of-the-art compressed data structures by supporting a dynamic alphabet (i.e. the set of distinct strings) and prefix queries, both crucial requirements in the aforementioned applications, and on traditional indexes by reducing space occupancy to close to the entropy of the sequence.

研究の動機と目的

  • 圧縮領域内でのインデックス付けとクエリが可能な、空間効率的で動的であるデータ構造の必要性に対処すること。
  • 文字列の順序と繰り返しの重要性がある文脈で、共通接頭辞に関するランクやセレクトなどの効率的接頭辞クエリを可能にすること。
  • 挿入、削除、末尾追加などの動的更新を維持しつつ、文字列列のエントロピーに近い圧縮領域使用量を実現すること。
  • アルファベットの事前知識なしに任意の文字列のユニバースを扱い、確率的ハッシュを用いてバランスの取れた構造を高確率で保証すること。
  • 静的および動的設定の両方で、アクセス、ランク、セレクトといった基本操作の時間的・領域的計算量に理論的保証を与えること。

提案手法

  • パトリアトリーとウェーブレットツリーを組み合わせることで、効率的なアクセスとクエリ操作を維持しながら、列の圧縮を実現する。
  • ユニバース $ U $ から要素をバイナリ文字列にマッピングするための確率的ハッシュ関数 $ h_a(x) = ax \mod 2^{\lceil \log u \rceil} $ を用い、高確率でツリーの深さがバランスするようにする。
  • ハッシュ化された文字列ラベルの列にウェーブレットツリーを適用し、ラベルの圧縮表現と効率的なランク/セレクト操作を可能にする。
  • 逆ハッシュ関数を用いて結果を元の値に戻し、操作の正しさを保つ。
  • 先行研究の補題6.1を用い、高確率で、ハッシュ値の最初の $ \ell = (\alpha+2)\log|\Sigma| $ ビットがアルファベット $ \Sigma $ 内のすべての文字列を区別できることを証明する。これにより、ツリーの高さがバランスする。
  • ハッシュ化された文字列の上にウェーブレットトリーを維持することで動的操作を実現し、更新がウェーブレットツリー構造に伝搬される。

実験結果

リサーチクエスチョン

  • RQ1エントロピーに近い領域使用量を達成しつつ、動的インデックス付き文字列列に対して動的操作をサポートする圧縮データ構造を設計できるか?
  • RQ2アルファベットの順序と繰り返しの重要性がある文脈で、効率的な接頭辞クエリ(例:指定された接頭辞を持つ文字列の数え上げや選択)を、圧縮的で動的設定で実現できるか?
  • RQ3アルファベットが事前に分かっておらず、動的に拡大する場合でも、良好な時間計算量を維持できるか?
  • RQ4明示的な再平衡化なしに、ランダム化のみでハッシュ値のトリーにおけるバランスの取れた深さを達成できるか?
  • RQ5動的で圧縮された文字列列データ構造において、領域効率とクエリ/更新時間のトレードオフは何か?

主な発見

  • Wavelet Trieは、$ O(\log u + h\log n) $ 時間で動的文字列列に対するすべての標準操作(Access, Rank, Select, Insert, Delete)をサポートする。ここで $ h \leq (\alpha+2)\log|\Sigma| $ は高確率で成り立つ。
  • 領域使用量は $ O(nH_0(S) + |\Sigma|w + |\Sigma|\log u) $ ビットで抑えられ、列に対してほぼエントロピー圧縮を達成する。
  • 高確率で、トリーの高さは $ (\alpha+2)\log|\Sigma| $ で抑えられ、任意の入力集合に対してもバランスの取れたパフォーマンスが保証される。
  • 確率的ハッシュ関数の使用により、すべてのアルファベット内文字列が最初の $ \ell $ ビットで区別される確率が $ 1 - |\Sigma|^{-\alpha} $ 以上となる。これによりバランスの取れた構造が実現される。
  • ハッシュ化された文字列の上での範囲に基づく波形ツリー操作を拡張することで、接頭辞クエリ(RankPrefix, SelectPrefix)を効率的にサポートする。
  • 数値を長さ $ \lceil \log u \rceil $ のバイナリ文字列にハッシュ化することで、非文字列データへの一般化が可能となり、任意のユニバースに応用可能になる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。