Skip to main content
QUICK REVIEW

[論文レビュー] A Faster Grammar-Based Self-Index

Travis Gagie, Paweł Gawrychowski|arXiv (Cornell University)|Sep 19, 2011
Algorithms and Data Compression参考文献 28被引用数 31
ひとこと要約

本稿では、圧縮されたテキストにおける効率的なパターンマッチングを可能にする、より高速な文法ベースの自己索引を提示する。直線的プログラム(SLP)に $ r $ 個の規則と、LZ77パースに $ z $ 個のフレーズを用いる場合、索引は $ \mathcal{O}(r + z\log\log n) $ の空間を用い、パターン照会を $ \mathcal{O}(m^2 + \mathrm{occ}\log\log n) $ 時間で行う。これは、空間と時間計算量の両面で先行研究の境界を改善する。

ABSTRACT

To store and search genomic databases efficiently, researchers have recently started building compressed self-indexes based on grammars. In this paper we show how, given a straight-line program with $r$ rules for a string (S [1..n]) whose LZ77 parse consists of $z$ phrases, we can store a self-index for $S$ in $\Oh{r + z \log \log n}$ space such that, given a pattern (P [1..m]), we can list the $\occ$ occurrences of $P$ in $S$ in $\Oh{m^2 + \occ \log \log n}$ time. If the straight-line program is balanced and we accept a small probability of building a faulty index, then we can reduce the $\Oh{m^2}$ term to $\Oh{m \log m}$. All previous self-indexes are larger or slower in the worst case.

研究の動機と目的

  • 遺伝子データなど、非常に反復的な文字列を対象とした、高速なパターンマッチングとテキスト抽出をサポートする圧縮自己索引の設計。
  • 特に長いパターンに対して、文法ベースの圧縮索引におけるパターンマッチングの時間計算量を低減すること。
  • SLPとLZ77パースを組み合わせ、高度なデータ構造を用いることで、より良い空間-時間トレードオフを達成すること。
  • 圧縮形式での部分文字列抽出とパターン出現の報告を効率的に行えるようにすること。
  • バランスの取れたSLPに拡張することで、照会時間を $ \mathcal{O}(m\log m + \mathrm{occ}\log\log n) $ にさらに改善し、わずかな失敗確率を伴う。

提案手法

  • 索引は、文字列 $ S $ を表現するための直線的プログラム(SLP)に $ r $ 個の規則を用い、パターンマッチングを導くために $ z $ 個のフレーズを持つLZ77パースを拡張する。
  • 開始位置がフレーズ境界にある部分文字列と、終了位置がフレーズ境界にある部分文字列のそれぞれに対して、範囲報告情報を格納する2つの拡張されたパトリシアトライを構築する。
  • 短いパターン($ m \leq \log\log z $)に対しては、パトリシアツリーの上位 $ \log\log z $ 層に1次元の範囲報告データ構造を用い、$ \mathcal{O}(m\log m) $ の照会時間を達成する。
  • 中程度の長さのパターン($ \log\log z < m < \log z $)に対しては、フレーズ境界を跨ぐ部分文字列用の別個のパトリシアツリーを構築し、各リーフに境界跨ぎ位置を $ \mathcal{O}(\log\log z) $ ビットで格納する。
  • 波形木または4方向範囲報告構造を用いて範囲空検査クエリを実行し、候補となるパターン出現を効率的に検証する。
  • バランスの取れたSLPの場合、構造的性質を活用することで、照会時間の $ \mathcal{O}(m^2) $ 項を $ \mathcal{O}(m\log m) $ に低減する。

実験結果

リサーチクエスチョン

  • RQ1文法ベースのパターンマッチングの時間計算量を $ \mathcal{O}(m^2) $ から $ \mathcal{O}(m\log m) $ に低減できるか、かつ非線形空間を維持できるか。
  • RQ2SLPとLZ77パースをどのように組み合わせることで、圧縮自己索引におけるより良い空間-時間トレードオフを達成できるか。
  • RQ3バランスの取れたSLPを用いることで、照会性能と索引構築時間にどのような影響を与えるか。
  • RQ4$ \mathcal{O}(r + z\log\log n) $ の空間のみで、圧縮テキストにおける効率的な部分文字列抽出とパターン報告を実現できるか。
  • RQ5正確なマッチングプリミティブを用いて、近似パターンマッチングをサポートする実用的な自己索引を設計できるか。

主な発見

  • 提案された自己索引は、$ r $ をSLP規則の数、$ z $ を文字列のLZ77パースにおけるフレーズ数として、$ \mathcal{O}(r + z\log\log n) $ の空間を用いる。
  • パターンマッチングは $ \mathcal{O}(m^2 + \mathrm{occ}\log\log n) $ 時間でサポートされ、以前の $ \mathcal{O}(m^2 \log(\log n / \log r') + \mathrm{occ}\log r') $ の境界を改善している。
  • バランスの取れたSLPの場合、照会時間は $ \mathcal{O}(m\log m + \mathrm{occ}\log\log n) $ に低減され、わずかな失敗確率を伴う。
  • テキスト抽出は $ \mathcal{O}(\ell + \log n) $ 時間で高速に行え、文法ベース索引における最良の既知の境界と一致する。
  • 索引の構築は、Maruyamaらのオンラインアルゴリズムなど、実用的なSLP構築アルゴリズムと互換性がある。このアルゴリズムは、$ \mathcal{O}(z\log^2 n) $ 個の規則を持つバランスの取れたSLPを生成する。
  • 正確なマッチングプリミティブを活用することで、近似パターンマッチングを効率的に行える。距離保存型Karp-Rabinハッシュとの統合も可能性がある。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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