2つの文字列のシャッフルは、文字列を散在させて新しい文字列にし、各文字列の文字を順番に並べることによって形成されます。例えば、MISSISSIPPI
のシャッフルであるMISIPP
とSSISI
。2つの同一の文字列のシャッフルである場合、文字列の正方形を呼び出します。例えば、ABCABDCD
それはのシャッフルであるため、正方形であるABCD
とABCD
、しかし、文字列はABCDDCBA
、正方形ではありません。
文字列が正方形か、NP困難かを判断するための高速アルゴリズムはありますか?明らかな動的プログラミングのアプローチはうまくいかないようです。
次の特殊なケースでさえ難しいようです:(1)各文字が最大4 回6回現れる文字列、および(2)2つの異なる文字のみを含む文字列。 Per Austrinが以下で指摘しているように、各キャラクターが最大4回出現する特殊なケースは2SATに減らすことができます。
更新: この問題には、硬度をより簡単に証明できる別の定式化があります。
頂点が1〜nの整数であるグラフGを考えます。エンドポイント間の実際の間隔で各エッジを識別します。Gの2つのエッジは、一方の間隔に他方が適切に含まれている場合にネストされると言います。たとえば、エッジ(1,5)と(2,3)はネストされていますが、(1,3)と(5,6)はネストされておらず、(1,5)と(2,8)はネストされていません。Gでの一致は、エッジのペアがネストされていない場合、ネストされません。 Gがネストされていない完全一致を持っているかどうかを判断する高速なアルゴリズムはありますか、それとも問題はNP困難ですか?
文字列のシャッフル解除は、クリークの互いに素な結合(入れ子になっていない文字間のエッジを持つ)でネストされていない完全一致を見つけることと同じです。特に、バイナリ文字列のシャッフル解除は、2つのクリークの互いに素な結合でネストされていない完全一致を見つけることと同じです。しかし、この問題が一般的なグラフにとって難しいのか、グラフの興味深いクラスにとって簡単なのかさえ、私には分かりません。
完全な非交差マッチングを見つける簡単な多項式時間アルゴリズムがあります。
更新(2013年6月24日):問題は解決しました! 現在、正方形の文字列を識別することがNP完全であるという2つの独立した証拠があります。
2012年11月に、Sam BussとMichael Soltysは3パーティションからの削減を発表しました。これは、9文字のアルファベットの文字列でも問題が難しいことを示しています。Journal of Computer System Sciences 2014の「正方形のシャッフル解除はNPハード」を参照してください。
2013年6月、Romeo RizziとStéphaneVialetteは、最も一般的なサブシーケンス問題からの削減を発表しました。「を参照してくださいシャッフル製品のための正方形で単語認識では、」PROCを。ロシアでの第8回国際コンピューターサイエンスシンポジウム、Springer LNCS 7913、pp。235–245。
2009年のShuai Cheng LiとMing Liによる、ネストされていない完全一致の検索はNP困難であるというより単純な証拠もあります。「2間隔パターンの2つの未解決問題」、Theoretical Computer Science 410(24–25 ):2410–2423、2009。