Skip to main content
QUICK REVIEW

[論文レビュー] Algorithms to Compute the Lyndon Array

František Franěk, A. S. M. Sohidull Islam|arXiv (Cornell University)|May 28, 2016
Algorithms and Data Compression参考文献 9被引用数 13
ひとこと要約

本稿では、後ろ向き配列のようなグローバルデータ構造を避ける2つの新しい$ϵ(nackslash\log n)$時間法を含む、文字列のリンドン配列を計算するための5つのアルゴリズムを提示する。主な貢献は、線形時間で動作する素朴なアルゴリズムが存在する可能性についての仮説であり、実験的証拠により、実際にはほとんどのアルゴリズムが近似的に線形時間で動作することが示されている。

ABSTRACT

We first describe three algorithms for computing the Lyndon array that have been suggested in the literature, but for which no structured exposition has been given. Two of these algorithms execute in quadratic time in the worst case, the third achieves linear time, but at the expense of prior computation of both the suffix array and the inverse suffix array of x. We then go on to describe two variants of a new algorithm that avoids prior computation of global data structures and executes in worst-case n log n time. Experimental evidence suggests that all but one of these five algorithms require only linear execution time in practice, with the two new algorithms faster by a small factor. We conjecture that there exists a fast and worst-case linear-time algorithm to compute the Lyndon array that is also elementary (making no use of global data structures such as the suffix array).

研究の動機と目的

  • リンドン配列を効率的に計算するための、既存および新規のアルゴリズムを体系的かつ明示的に分析・提示すること。
  • 後ろ向き配列のような重いグローバルデータ構造に依存しないリンドン配列を計算するアルゴリズムの開発と評価。
  • 理論的分析と実験的性能に基づいて、リンドン配列に対する線形時間で動作する素朴なアルゴリズムが存在するかどうかを調査すること。
  • さまざまな文字列タイプにおける、時間計算量と定数要因の観点から、異なる手法の実用的効率を比較すること。
  • これまでに形式的・非構造的かつ不完全に記述されたアルゴリズムを包括的に解説すること。

提案手法

  • 2つの$O(n^2)$時間の既存アルゴリズムと、1つの後ろ向き配列および逆後ろ向き配列を用いた$O(n)$時間のアルゴリズムを提案。
  • 新規アルゴリズムNSV$^*$の2つの変種を導入。範囲比較にパリック・ベクトルを用いることで、$O(\sigma)$時間の範囲比較を可能にする。
  • 範囲の内容を表すパリック・ベクトル$P_r[1..\sigma]$を用い、$O(\sigma)$時間で部分文字列の辞書式比較を実現($O(\ell)$時間の代わりに)。
  • スタックベースのアクティブ範囲追跡機構と$\text{nextequal}[j]$を用い、周期性を検出し、重複比較を回避。
  • 2つの実装バージョンを実装:NPNSV$^*$(パリック・ベクトルなし)とPNSV$^*$(パリック・ベクトルあり)、両者とも$O(n\backslash\log n)$の最悪ケース時間で動作。
  • パリック・ベクトルの事前計算を$O(n)$時間で行い、本計算フェーズにおける効率的な範囲比較を可能にする。

実験結果

リサーチクエスチョン

  • RQ1後ろ向き配列を構築せずに、素朴なデータ構造のみを用いてリンドン配列を$O(n)$時間で計算できるか?
  • RQ2ランダムおよび周期的であるようなさまざまな文字列タイプにおいて、既存および新規のリンドン配列計算アルゴリズムの実用的性能はいかがなものか?
  • RQ3パリック・ベクトルの使用が、リンドン配列計算アルゴリズムの効率性と最悪ケース計算量に与える影響は?
  • RQ4後ろ向き配列を用いるアルゴリズムと用いないアルゴリズムとの間に、特に定数要因とキャッシュ動作の観点から顕著な性能差があるか?
  • RQ5新規の$O(n\backslash\log n)$時間法が、既存の$O(n^2)$時間法よりも大規模な入力においても実際のところ優れているか?

主な発見

  • テストされた5つのアルゴリズムのうち、MaxLynおよび2つの新規NSV$^*$変種を除くすべてが、最悪ケースの境界が異なるにもかかわらず、実際には近似的に線形時間で動作することが判明した。
  • パリック・ベクトルを用いるPNSV$^*$は、小さなバイナリ文字列ではMaxLynの約10倍遅いが、より長い文字列では競争力を持つ。
  • ランダムバイナリ文字列では、PNSV$^*$とNPNSV$^*$が最も速く、MaxLynを2〜3倍速く達成しており、平均ケース入力における優れた性能を示している。
  • 非常に周期的な文字列では、MaxLynがNSV$^*$変種を同程度の速度差で上回っており、アルゴリズムの選択が入力構造に依存することを示している。
  • NSV$^*$の最悪ケース入力では$O(n\backslash\log n)$の範囲マッチが発生し、理論的$O(n\backslash\log n)$境界が確認された。パリック・ベクトル版はこの複雑さを$O(\sigma)$要因を伴って引き継いでいる。
  • 理論的最悪ケース境界にかかわらず、実験的結果から、リンドン配列に対する線形時間で動作する素朴なアルゴリズムが存在する可能性が示唆され、著者らのその存在に関する仮説が支持された。

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

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

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

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