[論文レビュー] Alphabet-Dependent String Searching with Wexponential Search Trees
本稿では、重み付き指数探索木と仮想分岐ノード、および段階的更新を組み合わせることで、アルファベットサイズ $\sigma$ に依存する文字列探索を実現するデータ構造 Wexponential Search Trees を提示する。静的トライでは最悪計算時間が $O(m + \lg\lg\sigma)$ であり、動的トライでは $O(m + \frac{\lg^2\lg\sigma}{\lg\lg\lg\sigma})$ である。従来の $O(m + \lg\sigma)$ の境界を上回る性能を達成する。
It is widely assumed that $O(m+\lg σ)$ is the best one can do for finding a pattern of length $m$ in a compacted trie storing strings over an alphabet of size $σ$, if one insists on linear-size data structures and deterministic worst-case running times [Cole et al., ICALP'06]. In this article, we first show that a rather straightforward combination of well-known ideas yields $O(m+\lg\lg σ)$ deterministic worst-case searching time for static tries. Then we move on to dynamic tries, where we achieve a worst-case bound of $O(m+\frac{\lg^{2}\lgσ}{\lg\lg\lgσ})$ per query or update, which should again be compared to the previously known $O(m+\lgσ)$ deterministic worst-case bounds [Cole et al., ICALP'06], and to the alphabet \emph{in}dependent $O(m+\sqrt{\lg n/\lg\lg n})$ deterministic worst-case bounds [Andersson and Thorup, SODA'01], where $n$ is the number of nodes in the trie. The basis of our update procedure is a weighted variant of exponential search trees which, while simple, might be of independent interest. As one particular application, the above bounds (static and dynamic) apply to suffix trees. There, an update corresponds to pre- or appending a letter to the text, and an additional goal is to do the updates quicker than rematching entire suffixes. We show how to do this in $O(\lg\lg n + \frac{\lg^{2}\lgσ}{\lg\lg\lgσ})$ time, which improves the previously known $O(\lg n)$ bound [Amir et al., SPIRE'05].
研究の動機と目的
- 従来最適とされていた線形空間の決定的トライにおける $O(m + \lg\sigma)$ の最悪計算時間境界を克服すること。
- アルファベットサイズ $\sigma$ に改善された依存関係を有する、効率的な更新とクエリをサポートする動的データ構造を設計すること。
- suffix tree の更新とパターンマッチングを高速化し、最悪計算時間を $O(\lg n)$ から $O(\lg\lg n + \frac{\lg^2\lg\sigma}{\lg\lg\lg\sigma})$ に短縮すること。
- 段階的かつ決定的な更新が可能で、最悪計算時間のオーバーヘッドを制御できる、指数探索木の重み付き変種を導入すること。
提案手法
- エッジ長を制御するために、動的挿入により仮想分岐ノードを追加することでバランスを保つ重み付き指数探索木の変種を導入する。
- 各エッジごとにマスタープロセスを設け、$\frac{s}{4}$ 回の更新ごとに長すぎるエッジを段階的に分割し、ノードを分岐ノードにする。各分割処理は $O(\sigma)$ 時間で実行される。
- 更新中は各ノードで二重ポインタ(旧エッジと新エッジ)を維持し、リンクリストを用いてソフトリンクを追跡することで、段階的な配列構築を可能にする。
- ノードの走査順の逆順に文字を走査し、ポインタを更新することで、新エッジの配列を段階的に構築し、整合性を保つ。
- テキストの拡張を文字列挿入とみなして、この構造を suffix tree に適用し、更新後にオンラインでのパターンマッチングを効率的に行えるようにする。
- エッジ長が閾値 $s$ を超えると検出されるキュー制御システムを用い、エッジ分割とノード分岐をトリガーすることで、性能境界を維持する。
実験結果
リサーチクエスチョン
- RQ1線形空間で、静的コンパクトトライにおいて、$O(m + \lg\lg\sigma)$ の決定的最悪計算時間で前継者クエリやプレディセサークエリを実現できるか?
- RQ2動的トライにおいて、$O(m + \lg\sigma)$ の更新時間から $O(m + \frac{\lg^2\lg\sigma}{\lg\lg\lg\sigma})$ に短縮しつつ、線形空間を維持できるか?
- RQ3提案されたデータ構造を suffix tree に適用し、より高速なテキスト拡張とパターン照会を可能にできるか?
- RQ4完全なサフィックスの再処理を回避する段階的更新によって、決定的最悪計算時間性能を維持できるか?
主な発見
- 本稿では、静的コンパクトトライにおけるプレフィックスおよびプレディセサークエリについて、$O(m + \lg\lg\sigma)$ の決定的最悪計算時間で実現し、従来の $O(m + \lg\sigma)$ の境界を改善した。
- 動的トライにおいて、提案された構造は $O(m + \frac{\lg^2\lg\sigma}{\lg\lg\lg\sigma})$ の決定的最悪計算時間で更新とクエリをサポートし、従来の $O(m + \lg\sigma)$ の境界を上回る。
- 文字の接頭辞を追加する場合、suffix tree の最悪計算時間の更新コストを $O(\lg n)$ から $O(\lg\lg n + \frac{\lg^2\lg\sigma}{\lg\lg\lg\sigma})$ に短縮した。
- 仮想分岐ノードと段階的エッジ分割の使用により、どのエッジの長さも $\frac{3}{2}s$ を超えないことが保証され、効率的な探索と更新性能が維持される。
- マスタープロセス機構により、各ノードはその軽量部分木の更新が $\frac{s}{2}$ 回以内に分岐ノードとして設定され、均等化された効率性が保証される。
- このデータ構造は線形空間のストレージをサポートし、$\sigma = n^{O(1)}$ の場合に静的トライに対して $O(n)$ 時間で決定的構築が可能である。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。