Skip to main content
QUICK REVIEW

[論文レビュー] Fast and Simple Computation of All Longest Common Subsequences

Ronald I. Greenberg|arXiv (Cornell University)|Nov 1, 2002
Algorithms and Data Compression参考文献 19被引用数 5
ひとこと要約

本稿では、任意の入力シーケンスのペアに対してすべての最長共通部分列(LCS)埋め込みを効率的に列挙できる、すべての接頭辞LCSグラフを構築するO(mn)の単純なアルゴリズムを提示する。動的計画法と輪郭ベースのリンクリストを活用することで、線形時間の前処理の後、出力サイズに比例する時間ですべての異なるLCSまたはすべての埋め込みを生成する。

ABSTRACT

This paper shows that a simple algorithm produces the {\em all-prefixes-LCSs-graph} in $O(mn)$ time for two input sequences of size $m$ and $n$. Given any prefix $p$ of the first input sequence and any prefix $q$ of the second input sequence, all longest common subsequences (LCSs) of $p$ and $q$ can be generated in time proportional to the output size, once the all-prefixes-LCSs-graph has been constructed. The problem can be solved in the context of generating all the distinct character strings that represent an LCS or in the context of generating all ways of embedding an LCS in the two input strings.

研究の動機と目的

  • 2つの入力シーケンスに対して、すべての異なる最長共通部分列(LCS)文字列とそれらの埋め込みを、重複を生成せずに効率的に列挙する課題に対処すること。
  • 重複を生成するため、後処理で除去が必要となる、単純なバックトラッキング手法の非効率性を克服すること。
  • 任意の接頭辞ペアに対して、LCSと埋め込みを高速かつ出力に依存する時間で列挙できるデータ構造—すべての接頭辞LCSグラフ—を構築すること。
  • 異なるLCS文字列と1つのLCSごとの複数の埋め込みを、最小限のオーバーヘッドで統合的に扱えるフレームワークを提供すること。
  • 前処理に最適なO(mn)時間、列挙に出力サイズに比例する時間で実行可能な、既存の手法を改善する時間計算量の最適化を達成すること。

提案手法

  • 標準的な再帰関係を用いて動的計画法テーブルL[i,j]を構築する:a_i = b_j ならばL[i,j] = L[i-1,j-1]+1、さもなくばmax(L[i-1,j], L[i,j-1])。
  • 各セル[i,j]が、同じランク(L[i,j])で、かつ以前のインデックス(i' ≤ i, j' ≤ j)を持つマッチのリンクリスト(head, tail, pretail)を保持する、すべての接頭辞LCSグラフを構築する。
  • ラベルベースの走査を用いる:マッチはランクごとにグループ化され、順序を保ちながら重複を避けるためにジグザグの輪郭で接続される。
  • 2段階のマージを適用する:各[i,j]に対して、L[i,j]と同じランクを持つ[i-1,j]および[i,j-1]の隣接リストをマージするが、その際、重複のない埋め込みが保証される。
  • 冗長なパスを排除するために、反優位性および優位性の条件を強制することで、各LCS埋め込みが正確に1回だけ生成されることを保証する。
  • 自己ポインタとリンクリストポインタ(head, tail, pretail)を用いて、動的計画法走査中に隣接リストを効率的に維持・更新する。

実験結果

リサーチクエスチョン

  • RQ1重複を生成せずに、重複を避けることなく、すべての異なるLCS文字列とその埋め込みを計算する単純で効率的なアルゴリズムは存在するか?
  • RQ2O(mn)の前処理時間で、任意の接頭辞ペアに対してすべてのLCSと埋め込みを出力に依存する時間で列挙できるデータ構造を構築することは可能か?
  • RQ3標準的なLCS動的計画法テーブルを、重複の爆発的増加を避けるために、すべての埋め込みを列挙できるように拡張することは可能か?
  • RQ4マッチの構造的性質(例:優位性、輪郭)を活用することで、冗長なパスの生成を最小限に抑えることは可能か?
  • RQ5線形時間の前処理フェーズの後、すべてのLCS埋め込みの列挙を出力サイズに比例する時間で達成することは可能か?

主な発見

  • すべての接頭辞LCSグラフは、リンクリスト拡張を施した単純な動的計画法アプローチを用いてO(mn)時間で構築可能である。
  • グラフが構築されれば、任意の接頭辞ペアA_iとB_jについて、すべての異なるLCSまたはLCSのすべての埋め込みを、出力サイズに比例する時間で列挙可能である。
  • 隣接リスト構築時に反優位性および優位性の条件を強制することで、重複列挙を回避している。
  • 本手法は、後処理による重複除去が不要な状態で、異なるLCS文字列の生成とそれらの文字列のすべての埋め込みの列挙を両方ともサポートする。
  • 単純なバックトラッキング手法に続く重複除去処理の出力と一致するC言語実装が提供されており、正しさが確認されている。
  • ラベルベースのリンクとpretailポインタの使用により、関連性があり、重複のないパスのみが隣接リストに保持される。

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

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

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

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