Skip to main content
QUICK REVIEW

[論文レビュー] In-Place Longest Common Extensions.

Nicola Prezza|arXiv (Cornell University)|Aug 17, 2016
Algorithms and Data Compression参考文献 26被引用数 5
ひとこと要約

この論文は、サイズ $n\lceil\log_2|\Sigma|\rceil$ ビットのテキストを置換するインプレースデータ構造を提示する。この構造は最適時間でのテキスト抽出と $\mathcal{O}(\log n)$ 時間のLCEクエリをサポートしており、元のテキストのみを用いた場合と比べて指数的に高速である。この構造により、$\mathcal{O}(n\log n)$ 期待時間でLCP配列を計算する最初のインプレースアルゴリズムと、$\mathcal{O}(n + b\log^2 n)$ 期待時間で $b$ 個のサフィックスをソートするインプレースアルゴリズムが可能となり、従来のインプレース手法に比べ顕著な改善が達成される。

ABSTRACT

Longest Common Extension (LCE) queries are a fundamental sub-routine in several string-processing algorithms, including (but not limited to) suffix-sorting, string matching, compression, and identification of repeats and palindrome factors. A LCE query takes as input two positions $i,j$ in a text $T\in\Sigma^n$ and returns the length $\ell$ of the longest common prefix between $T$'s $i$-th and $j$-th suffixes. In this paper, we present the following result: we can replace the (plain) text with a data structure of the \emph{exact same size}---$n\lceil\log_2|\Sigma| ceil$ bits---supporting text extraction in optimal time and LCE queries in logarithmic time---i.e. \emph{exponentially} faster than what can be achieved using the plain text alone. Our structure can be built in $\mathcal O(n\log n)$ expected time and linear space. We show that our result is a powerful tool that can be used to efficiently solve in-place a wide variety of string processing problems: we provide the first in-place algorithms to compute the LCP array in $\mathcal O(n\log n)$ expected time (the previous fastest in-place algorithm runs in $\mathcal O(n^2)$ time) and to suffix-sort---with high probability of success---any set of $b$ text suffixes in $\mathcal O(n+b\log^2 n)$ expected time (the previous fastest in-place algorithm runs in $\mathcal O(nb)$ time).

研究の動機と目的

  • 元のテキストと同じサイズの空間で効率的なLCEクエリをサポートするデータ構造の設計。
  • 従来の $\mathcal{O}(n^2)$ のインプレース境界を改善し、$\mathcal{O}(n\log n)$ 期待時間でLCP配列をインプレースで計算できるようにすること。
  • 従来の $\mathcal{O}(nb)$ の境界を上回り、$\mathcal{O}(n + b\log^2 n)$ 期待時間で $b$ 個のサフィックスをインプレースでソートできるアルゴリズムの開発。
  • 同じデータ構造が、広範なクラスの文字列処理問題をインプレースで効率的に解けることを示すこと。

提案手法

  • この構造は、元のテキストを圧縮されたインプレース表現に置き換え、$\mathcal{O}(\log n)$ 時間でテキスト抽出とLCEクエリを両方サポートする。
  • テキストの短縮表現を $n\lceil\log_2|\Sigma|\rceil$ ビットで使用し、元のテキストのサイズと一致する。
  • 乱択的な構築プロセスを用いて、$\mathcal{O}(n\log n)$ 期待時間で構造を構築する。
  • LCEクエリは、サフィックス配列およびLCP配列に上に構築されたワブレットツリーに類似した構造をたどることで答えられる。
  • この構造がテキスト上のランクおよびセレクト操作をサポートしていることを利用し、効率的なサフィックス比較を実現する。
  • LCP配列およびサフィックスソーティングのインプレースアルゴリズムは、この構造の上に構築され、サフィックスへのアクセスとそれらのLCEのシミュレーションが可能であることに依存している。

実験結果

リサーチクエスチョン

  • RQ1$\mathcal{O}(\log n)$ 時間でLCEクエリをサポートし、$n\lceil\log_2|\Sigma|\rceil$ ビットのみを用いるインプレースデータ構造を設計可能か?
  • RQ2このデータ構造により、$\mathcal{O}(n\log n)$ 期待時間でLCP配列を計算する最初のインプレースアルゴリズムが可能になるか?
  • RQ3この構造は、$\mathcal{O}(n + b\log^2 n)$ 期待時間で $b$ 個のサフィックスを効率的にインプレースでソートできるか?
  • RQ4この構造を用いることで、従来のインプレース手法と比較して、インプレース文字列処理アルゴリズムの性能がどのように向上するか?

主な発見

  • 提案されたデータ構造は、$\mathcal{O}(\log n)$ 時間でLCEクエリをサポートしており、これは元のテキストのみを用いた場合の $\mathcal{O}(n)$ 時間と比べて指数的に高速である。
  • LCP配列は $\mathcal{O}(n\log n)$ 期待時間でインプレースアルゴリズムにより計算可能であり、従来の $\mathcal{O}(n^2)$ の境界に比べ顕著な改善である。
  • サフィックス $b$ 個のソーティングは $\mathcal{O}(n + b\log^2 n)$ 期待時間で達成され、従来の $\mathcal{O}(nb)$ のインプレース手法を上回っている。
  • このデータ構造は正確に $n\lceil\log_2|\Sigma|\rceil$ ビットを用い、元のテキストのサイズと一致するため、真のインプレース動作が可能である。
  • このデータ構造の構築には $\mathcal{O}(n\log n)$ 期待時間と線形空間が必要であり、大規模なテキストに対しても実用的である。
  • このフレームワークにより、広範な文字列処理問題がインプレースで効率的に解けることが示され、広範な適用可能性が裏付けられている。

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

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

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

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