される文字列のリスト、べ$(x,y)$が$x$はサブシーケンスの$y$.可能になり$O(n^2)$?
-
29-09-2020 - |
質問
考え、以下のアルゴリズムの問題:される文字列のリスト $L=[s_1,s_2,\dots,般]$, お知りたいすべてのペア $(x,y)$ 場所 $x$ は部分シーケンス $y$.であると推測できますべての文字列の長さは最大 $m$, では、 $m << n$ は、有限文字 $\Sigma$ と $|\Sigma| << n$.またその番号のペア $(x,y)$ 場所 $x$ は部分シーケンス $y$ より極めて小さいため $n$.
なアルゴリズムもこの
1. foreach x in L:
2. foreach y in L:
3. if x is subsequence of y:
4. OUTPUT x,y
しかし、この複雑性 $O(n^2\cdot m)$ -私は好奇心にあるのかがより速くアルゴリズム(高速化の対数 $(x,y)$ より極めて小さいため $n$, では、例えばアルゴリズムの複雑さによっては番号の出力pairs).
この質問にはフォローアップとして、また この質問, は、同じ問題での部分文字列がないsubsequences).が、アホ--Corasickアルゴリズムの解明私の問題であっsomethignこのようなものsubsequences?
解決
いいえ、できないのでカスタマーサポート/よくないとの強い指数関数時間の仮説(SETH)失敗します。もしこの問題を解決大幅に高速化するとともに、より $O(n^2)$ 今すぐに手をより高速アルゴリズムの問題は、NP完全問題Satisfiability.これはも $m$ より少し多めに $\log(n)$ の場合をしたいか否かを決定するなどの対 $(x,y)$ が存在する。
例えば、 これらの講義ノート 下記の3つる"-"苦しいとは限らず、直交ベクトル.その証明は、類似の定理2これらの講義します。
また、より一般的な問題の二つの文字列の集合 $X,Y$, をかどうかのstring $X$ であるサブシーケンスの文字列 $Y$.
与えられ日(土)式を分割 $n$ 変数が二つの同等のセット $n/2$ 変数.に $\Sigma$ また文字に対応するべてを提供しています。に $X$ を追加しましたstringらゆる課題に最初の半分の変数は、文字にする条項 不満足 それらの変数.一方、 $Y$, を追加文字列のすべての課題で、後半は変数のキャラクター毎に条項を満たそれらの変数.この式はsatisfiable場合にだけ、その一部の文字列 $X$ であるサブシーケンスの文字列 $Y$.
この問題を解決することができ大幅に高速化するとともに、より $O(n^2)$, そのことを大幅に高速化するとともに、よりアルゴリズムSatisfiabilityよ $2^n$.仮にこの問題を解決するには $O(n^{1.99})$ 時に、そのSatisfiabilityを解決するには $(2^{n/2})^{1.99}=O(2^{0.996n})$ る反SETH.
に問題があり、単一の文字列のできるサブシーケンスです。これはしかしな問題としてできるだけ変更の文字列の当社のインスタンスなどのグローバル文字列 $Y$ であるサブシーケンスのその他の文字列(インスタンスによるパディングすべての文字列 $Y$ 同じ長)、同様にパディング毎に文字列 $X$ 同じ長さの文字列 $X$ が大幅に短縮文字列 $Y$).
こうして作成することも一定のサイズ(がもバイナリ)文字が要求されるのが賢いエンコーディングです。