所与によってバイナリ行列(エントリがまたは)、問題は、2つのバイナリベクトルが存在するかどうかを決定することであるよう(すべての操作を介して実行)。この問題はNP困難ですか?
証人として2つのベクトルを与えることができるので、明らかにNPにあります。
同等:が与えられた場合、ようなゼロ以外のベクトルがありますか?
同等:上のベクトル与えられた、ような2つの異なるサブセットがあります?
所与によってバイナリ行列(エントリがまたは)、問題は、2つのバイナリベクトルが存在するかどうかを決定することであるよう(すべての操作を介して実行)。この問題はNP困難ですか?
証人として2つのベクトルを与えることができるので、明らかにNPにあります。
同等:が与えられた場合、ようなゼロ以外のベクトルがありますか?
同等:上のベクトル与えられた、ような2つの異なるサブセットがあります?
回答:
私はuser17410と同等の定式化を使用します。
入力:ベクトル over、は入力の一部です
質問:2つの異なるサブセットがあり、
{ 0 、1 } N N A 、B ⊆ X Σ X ∈ A X = Σ X ∈ B X
硬度の証明には、標準の等式部分集合の問題の硬度を証明するために使用されるのと同じ「チェーン」に従う多くの中間的な減少が含まれます。
X3CサブセットSUMパーティション EVEN-ODDパーティション EQUAL SUBSET SUM≤ ≤ ≤
(私はまだチェックしていますので、間違っているかもしれません:)
ステップ1
次の問題(0-1 VECTOR SUBSET SUM)はNP完全です:与えられ 、上のベクトルとターゲット和ベクトルが決定しますような がある場合:証明:3-SETSによるEXACT COVER BYからの直接還元(X3C):要素のセットと収集の三つの要素の部分集合我々構築0-1 VECTOR SUMインスタンス設定対応の場合に限りの要素X I { 0 、1 } N T A ⊆ X ΣNY={Y1、。。。、YN}C、MC={C1、。。。、Cm}xi
STEP 2 検索二つの等しい和サブセット間の 0-1ベクター上、二つの等しい和サブセット発見に相当する有界サイズの要素を有するベクトルをここで、固定するための。m { A 、Bは、xは1。。。x m m a x { x i } = O ((m n )k)k
たとえば、ベクトルのセット:
x1 2 1 0 1
x2 1 2 3 1
0-1ベクトルと同等です:
x1 1 1 0 1 1 0 0 0 0
1 0 0 0 0 1 0 0 0
0 0 0 0 1 1 0 0 0
^ ^
+-- 0 elsewhere
x2 1 1 1 1 0 0 1 0 0
0 1 1 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1
0 0 0 0 0 0 1 1 1
^ ^ ^
+-- 0 elsewhere
非公式には0〜1のベクトルがグループ化され(x2グループの1つのベクトルを選択してサブセット追加すると、他の2つをに含め、最後をサブセット入れます)、合計が行われます単項(これが、対応する非バイナリベクトルがに関して多項式で区切られた要素を含まなければならない理由です)。A B m n
したがって、次の問題はNP完全です。
ステップ3
次のような問題(0-1 VECTORパーティション所与:)NP完全である 、上ベクトルかどうかを判断 2つのサブセットに分割することができますよう xはI { 0 、1 } nは X B 1、B 2 Σ のx ∈ B 1、X = Σ X ∈ B 2 Xを
証明:0-1 ベクトル合計からの削減:とターゲット合計ベクトル与えられた 場合; 聞かせて、我々はに追加する以下のベクター:と : 。t S = ∑ x i X b ′ = − t + 2 S b ″ = t + S
()ようなが存在すると仮定します。我々が設定とを。我々は A ⊆ X Σ X ∈ A、X = T B 1 = A ∪ { B ' } B 2 = B ∖Σ X ∈ B 1 = B ' + Σ X ∈ A x = t − t + S = 2 S
()と合計が等しいと仮定します。両方が同じセットに属することはできません(そうでなければ、それらの合計はあり、他のセットの要素によって「バランス」を取ることはできません)。その仮定。我々は持っています:B 1 B 2 B '、B " ≥ 3 SのB ' = - T + 2 S ∈ B 1
したがって、でなければならず、は0-1 VECTOR SUMの有効なソリューションです。B 1 ∖ { B ' }
セットには0〜1のベクトルのみが許可されるため、ステップ2に示すようにベクトルは「単項で表現」する必要があります。B "、B "
ステップ3
ベクトルがから番号付けされ、2つのサブセットサイズが等しくなければならず、にのための(SO、等しいサイズの制約により、対の他方の要素が中に含まれていなければならない)(0-1 VECTOR偶奇PARTITION)。X 1 X 2 I - 1、X 2 、I 1 ≤ I ≤ N X 2
証明::削減は0-1 VECTOR PARTITIONからであり、PARTITIONからEVEN-ODD PARTITIONへの削減に類似しています。もしであるベクター上上の2つのベクターを用いて、各ベクトルを置き換える。M { 0 、1 } nは { 0 、1 } 2 N + 2 M
1 2 n
--------------------
x_i b_1 b_2 ... b_n
becomes:
1 2 ... 2i ... 2m
--------------------------
x'_2i-1 0 0 ... 1 ... 0 b_1 b_2 ... b_n 0 0 ... 0
x'_2i 0 0 ... 1 ... 0 0 0 ... 0 b_1 b_2 ... b_n
起因する要素、ベクトル及び同じサブセットに含まれることができません。0-1 VECTOR EVEN-ODD PARTITIONの有効なソリューションは、元の0-1 VECTOR PARTITIONの有効なソリューションに対応します(すべてのベクトルを含むソリューションの各ベクトルの要素2m + 1..2m + nを選択するだけです)それらの位置にゼロ)。
ステップ4
0-1 VECTOR EQUAL SUBSET SUM(問題の問題)はNP完全です:0-1 VECTOR EVEN-ODD PARTITIONからの減少は、ゲルハルトJ. 、Zhongliang Yu、等サブセット和問題について:上のベクトルのの順序セットが与えられると、上のベクトルのを設定します。
すべてのベクトルについては、我々は、ベクター構築以上、このように:
1 2 ... i i+1 ... m m+1 m+2 ... m+i ... 2m 2m+1 ... 2m+n
------------------------------------------------------
0 0 ... 2 0 ... 0 0 0 1 0 x_{2i-1}
すべてのベクトルについては我々は、ベクター構築オーバー、このように:
1 2 ... i i+1 ... m m+1 m+2 ... m+i ... 2m 2m+1 ... 2m+n
------------------------------------------------------
0 0 ... 0 2 ... 0 0 0 1 0 x_{2i}
我々は、要素マップに
1 2 ... ... m m+1 m+2 ... . 2m 2m+1 ... 2m+n
------------------------------------------------------
2 0 ... ... 0 0 0 1 x_{2m}
最後に、ダミー要素を追加します。
1 2 ... ... m m+1 m+2 ... ... 2m 2m+1 ... 2m+n
------------------------------------------------------
4 0 ... ... 0 0 0 0 0 ... 0
0 4 ... ... 0 0 0 0 0 ... 0
...
0 0 ... ... 4 0 0 0 0 ... 0
繰り返しますが、を値を含むベクトルは、STEP 2で示したような0〜1のベクトルのグループを使用して「単項」で表すことができます。
Y 1、Y 2 Xに偶奇パーティションがある場合にのみは等しい合計を持つ2つの互いに素なサブセットがあります。
編集:私の元の証明にはバグがありました。私は今それが修正されたと信じています。
EQUAL SUMサブセットの問題をこの問題に軽減します。EQUAL SUMサブセットは、次の問題です整数のセットが与えられた場合、同じ合計を持つ2つの互いに素なサブセットを見つけます。EQUAL SUMサブセットはNP完全であることが知られています。
これらのビット文字列がベクトルではなく、バイナリのビット数の表現であるとします。その場合、問題はEQUAL SUMサブセットからの削減によりNP完全になります。これらのベクトルを2進数のように動作させる方法を示します。必要なのは、キャリーを実行できるようにすることです。つまり、隣接する座標のペアごとに、ベクトル..02 ..を..10 ..に置き換えることができる必要があります。
どうすればそれができますか?それを可能にするガジェットが必要です。特に、合計が..02 .. xと..10 .. xである2つのサブセットが必要です。ここで、xは新しい座標(つまり、バイナリを構成する座標のいずれでもない座標)を使用するビット文字列です表現)、およびxに対応する新しいビット位置に同じ合計を持つ2つのサブセットを作成する方法は1つしかありません。
これは非常に簡単です。隣接するビット位置のペアごとに、次の形式の3つのベクトルを追加します。ここで、最後の2ビットはこれらの3つのベクトルでのみ非ゼロの座標であり、以下で明示的に指定されていないビットはすべて0です。
..10 .. 11
..01 .. 10
..01 .. 01
例を挙げましょう。5 + 3 = 8の仕組みを示したいと思います。
バイナリで8 = 5 + 3です。
1000
=
0101
0011
これらのビット文字列は、バイナリで同じ合計を与えますが、ベクトル加算では与えません。
これで、1、2、4の場所にキャリーがあるので、これらのキャリーを実行するために、3つのベクトルの3つのセットを方程式に追加する必要があります。
1000 00 00 00
0001 00 00 01
0001 00 00 10
0010 00 01 00
0010 00 10 00
0100 01 00 00
0100 10 00 00
=
0101 00 00 00
0011 00 00 00
0010 00 00 11
0100 00 11 00
1000 11 00 00
これらのセットのベクトル加算の合計は同じになりました。合計は次のとおりです。
1222 11 11 11
両方の場合において。
この構造は、位置ごとに1つのだけのキャリーがあれば素晴らしい作品、それだけには潜在的にそこに可能性があり位置ごとに運び、あなたの建設は、最大処理できることを確認する必要があり運び、そして異なるが干渉しない運ぶことお互いに。たとえば、隣接する位置の同じペアに対して3つのベクトルの2つの異なるセットを追加した場合(これは元の証明で提案したものです):
..01 .. 01 00
..01 .. 10 00
..10 .. 11 00
..01 .. 00 01
..01 .. 00 10
..10 .. 00 11
同じ合計を与えるベクトルの2つの異なるセットを取得するという問題があります。
..01 .. 01 00
..01 .. 10 00
..10 .. 00 11
=
..01 .. 00 01
..01 .. 00 10
..10 .. 11 00
これを修正する方法は?1を運ぶことができるベクトルのセットを1つ、2を運ぶことができるセットを1つ、、、2セットし。今はこの構造の詳細を説明するつもりはありませんが、かなり簡単なはずです。各数値には一意のバイナリ表現があるため、これによりまでの任意の数値を保持できます。たとえば、4を運ぶには、2つのベクトルと同じ合計を持ち、これが2つのセット間の唯一の線形関係である4つのベクトルを見つける必要があります。たとえば、セット
..01 .. 11000
..01 .. 00100
..01 .. 00010
..01 .. 00001
..10 .. 10001
..10 .. 01110
動作します。関係が簡単に確認できます
11000
00100
00010
00001
=
10001
01110
これらの6つの行で形成される行列のランクは5であるため、これらの6つのベクトル間の唯一の可能な関係です。
これは質問に答えませんが、いくつかの有用な観察が含まれる場合があります。コメントとして読みたくなかった
質問に対する私のコメントで述べられている問題の再定式化:
入力:ベクトル over、は入力の一部
質問:ような2つの異なるサブセットがありますか
たぶんをマルチセット(ベクトルは一意であってはなりません)と見なし、合計が超えていることに注意する必要があります。
バイナリベクトルの2つのサブセットを探しているため、この問題を2SUBSET-BINARY-VECTOR-SUMと呼ぶことを提案します。
いくつかの観察:
に1つのベクトルが複数回含まれている場合、答えは簡単になります。ましょうと。次に、が証人として機能します。
のベクトルの1つが0のみを含む場合、それは簡単です。ましょそのベクトルとします。次に、すべてのが続きますは証人です。
ような目撃者が存在すると仮定します。これは、ではなくあるすべてのベクトルがゼロのみで構成されて必要があることを意味します。
上記の2つの点を包含するには、のベクトルの少なくとも1つにゼロのみが含まれている場合に、持つ監視が存在します。
などの目撃者が存在すると仮定します。両方のセットの共通要素を削除しても、正しい目撃者を保持できます。
これらの点は本質的に、 2つのセット()または3つのセットへのパーティションを探していることを意味します。3番目のセットは、またはいずれにも選択されなかったベクトルを表します。LET一連の分割するいくつかの方法-第二種のスターリング数であるにオブジェクトを、非空のパーティション。次に、可能な解決策があるため、ブルートフォースはここでは実行できません。A ∪ B = X A B S (N 、K )N K S (N 、3 )+ S (N 、2 )
ベクトルが(2SUBSET-VECTOR-SUM)を超えることを許可する場合、UNIQUE-PARTITIONをこの問題に減らすことができます。ましょうと単にUNIQUEパーティション(それが0を含む場合、自明な解を避けるために、最初にそれを削除する)のインスタンスを渡します。ただし、可能な解決策は必ずしもすべての入力要素が含まれているわけではないため、これは機能しません。 m=1A、B
検討してください。これはUNIQUE-PARTITIONではなく、2SUBSET-VECTOR-SUMでです。多分用い我々が強制的に追加のベクトル・エントリを使用することができる入力を分割します。M > 1 A 、B