文字列内の最長の繰り返し(散乱)サブシーケンス


26

非公式の問題声明:

ACCABBABなどの文字列が与えられたとき、左から右に赤い文字のみを読むと、読むのと同じ結果が得られるように、いくつかの文字を赤、いくつかの文字を青に色付けします。青い文字のみ。

例では、次のように色を付けることができますACCABBAB

したがって、CAB繰り返しサブシーケンスであると言いACCABBABます。また、最長の繰り返しサブシーケンスです(確認しやすい)。

最長の繰り返しサブシーケンスを効率的に計算できますか?

正式な質問:

文字列といくつかのkについて、長さ繰り返し部分シーケンスがk文字列に存在するかどうかを決定するのはNP困難ですか?

  • その場合:どの問題をこの問題に減らすことができますか?
  • そうでない場合:効率的なアルゴリズムとは何ですか?(明らかに、このアルゴリズムを使用して、最長の繰り返しサブシーケンスを計算できます)

ボーナス質問:

アルファベットのサイズが定数で制限されている場合、それらは常に長さ繰り返し部分シーケンスになりn/2o(n)ますか?

(これはバイナリアルファベットに当てはまることが知られています。)

編集2:ボーナス質問に対する否定的な答えは、少なくとも文字のアルファベットで既に知られています5。実際、サイズがアルファベットの場合、長さが単に最も長い繰り返しサブシーケンスを持つ文字列があります。これを表示するには、ランダムな文字列で十分です。結果はすでに存在していましたが、見落としていました。ΣO(n·Σ1/2)

編集: 注:

一部の人々は、「サブシーケンス」と言うときに「サブストリング」を意味します。しません。これは、サブストリングを2回見つける問題ではありません。


セクティ、ありがとう。そのとおりです。最初のコメントは間違っていました。今削除しました。一方、私の残りのコメント、不連続なサブシーケンスについてです。が固定されている場合、時間程度で問題を解決する方法があります(非連続のサブシーケンスで、重複しないことが義務付けられています。各dpサブ問題は、これまでに選択されたすべての赤文字とすべての青文字のインデックスを追跡します。が入力の一部である場合に何が起こるかを教えてくれないため、これはおそらく面白くないでしょう。kO(n2k+2)k
DW

@DW 最長共通部分列のこの修正では、正式な質問に効率的に回答できないのはなぜですか?おそらく私は何かを見逃していて、誰かが私のために明確にすることができます。
ブライスキル

@BryceKille、わかりません。多分それができます。あなたがそれを行う方法を見つけたなら、私はあなたが答えを書くことを願っています!
DW

回答:


-2

これはで解決できます 多項式時間各ノードがような反復サブシーケンス内のポイントを表すグラフ構築することにより。ノード間のエッジ及びことを意味するすることによって継続することができる長さ2の反復シーケンスを形成します。G(i,j)SS[i]=S[j]uvuv

1.ノードを見つけます。これは、各文字インデックスのソートされたリストを作成し、一意のペアを列挙することにより、時間で実行できます。せいぜいがないノード。O(n2)cm=n2

2.エッジを見つけます。ノードがノードを継続できるかどうかを確認するには時間かかるため、すべてのペア考慮するとこのステップには時間かかります。O(1)uv(u,v)O(m2)

3.の最長パスが有効な繰り返しサブシーケンスではない場合があることに注意してください。パスおよび検討します。エッジが存在する場合、は長さ3の有効な繰り返しサブシーケンスです。したがって、長さ3のすべての繰り返しサブシーケンスを見つけるには時間かかります。一般的な場合、2つの有効なパス長さの長さは、長さ有効なパスに結合できます。GabbcacabcO(m4)nn+1

4.パスが見つからなくなるまでステップ3を繰り返します。


うーん 速すぎる。ステップ3では、考慮するサブシーケンスの数がますます大きくなります。したがって、多項式ではありません。
noplogist

1
CS.SEへようこそ。この問題を解決してくれてありがとう!私はあなたのアルゴリズムを理解していないのではないかと心配しています。ステップ3とは何ですか?「3」に表示されるすべて。いくつかの宣言的なステートメント/オブザベーションですが、アルゴリズムが何をすべきかについての手続き上の仕様は見当たりません。また、ステップ3を繰り返すことの意味や、時間で十分だという主張の根拠がわかりません。あなたのその後のコメントは、あなたの答えが正しいともはや信じていないように聞こえます。もしそうなら、混乱を避けるために答えを削除する方が良いかもしれません。O(nnm2)
DW

後で解答を見つけた場合は、いつでも元に戻すか、新しい解答を投稿できます。
DW

DW、ありがとう。ステップ3への入力はすべて長さnの繰り返されるサブシーケンスであり、出力はすべて長さn + 1の繰り返されるサブシーケンスです。アルゴリズムは正しいと思いますが、多項式時間アルゴリズムではないと思います。私は今、私が間違っていると考える主張をマークしました。
noplogist

ありがとうございました。わかります。残念ながら、これらの改訂版では、この回答が質問された質問に答えていないのではないかと心配しています。問題は、これはNP困難ですか?効率的なアルゴリズムはありますか?指数時間アルゴリズムが存在することを示すことは、これらの質問のいずれかに答えるのに役立ちません。確かに、問題に対して指数関数的なアルゴリズムがあり、派手なテクニックを呼び出さずに存在することを確認するのは、ささいなことです。あなたの試みに感謝します。
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.