Bei einem gegebenen von binären Matrix (Einträge sind oder ), ist das Problem , zu bestimmen , ob es existiert zwei binäre Vektoren , so daß (alle Operationen durchgeführt über ). Ist das Problem NP-schwer?
Es ist eindeutig in NP, da Sie zwei Vektoren als Zeugen angeben können.
Äquivalent: Gibt es bei gegebenem einen Nicht-Null-Vektor so dass ?
Äquivalent: Wenn Vektoren X = { x 1 , … , x n } über { 0 , 1 } m gegeben sind , gibt es zwei verschiedene Teilmengen A , B ⊆ X, so dass ∑ x ∈ A x = ∑ x ∈ B x ?
cc.complexity-theory
np-hardness
linear-algebra
Mohammad Al-Turkistany
quelle
quelle
Antworten:
Ich verwende die äquivalente Formulierung user17410:
Eingabe: Vektoren X = { x 1 , … , x m } über { 0 , 1 } n , n ist Teil der Eingabe Frage: Gibt es zwei verschiedene Teilmengen A , B ⊆ X, so dass ∑ x ∈ A x = ∑ x ∈ B xn X={x1,…,xm} {0,1}n n
A,B⊆X
Der Härtenachweis beinhaltet viele Zwischenreduktionen, die der gleichen "Kette" folgen, die zum Nachweis der Härte des Standardproblems EQUAL SUBSET SUM verwendet wird:
X3C≤ SUBSET SUM PARTITION ≤ Gerade-Ungerade - PARTITION ≤ EQUAL SUBSET SUM≤ ≤ ≤
(Ich überprüfe es immer noch, damit es falsch sein kann :)
SCHRITT 1
Das folgende Problem ( 0-1 VECTOR SUBSET SUM ) ist NP-vollständig: Wenn , x i Vektoren über { 0 , 1 } n und ein Zielsummenvektor t gegeben sind , entscheiden Sie, ob es existiert A ⊆ x , so daß Σ x ∈ A x = t Proof : Direktreduktion von EXACT COVER BY 3-SETS (X3C): ein Satz von gegebenen n Elemente Y = { yX={x1,…,xm} xi {0,1}n t A⊆X
SCHRITT 2 Das Finden von zwei gleichen Summenteilmengen unter m 0-1 Vektoren über { 0 , 1 } n entspricht dem Finden von zwei gleichen Summenteilmengen A , B von Vektoren mit einem Element der begrenzten Größe x 1 . . . x m mit m a x { x i } = O ( ( m n ) k ) für festes k .A,B m {0,1}n A,B x1...xm max{xi}=O((mn)k) k
Zum Beispiel die Menge der Vektoren:
Entspricht den 0-1 Vektoren:
Informell werden die 0-1-Vektoren gruppiert (wenn Sie einen Vektor der x2-Gruppe auswählen und zu Untergruppe hinzufügen , müssen Sie die anderen beiden in A aufnehmen und die letzten in Untergruppe B einfügen ) und die Summen werden in erstellt unär (dies ist der Grund, warum die entsprechenden nicht-binären Vektoren Elemente enthalten müssen, die in Bezug auf m n polynomiell begrenzt sind ).A A B mn
Das folgende Problem ist also NP-vollständig.
SCHRITT 3
Das folgende Problem ( 0-1 VECTOR PARTITION ) ist NP-vollständig: Wenn , x i Vektoren über { 0 , 1 } n gegeben sind, entscheidet dies, ob X in zwei Teilmengen B 1 aufgeteilt werden kann. B 2 so, dass ∑ x ∈ B 1 x = ∑ x ∈ B 2 xB={x1,…,xm} xi {0,1}n X B1,B2
Beweis : Reduktion von 0-1 VEKTORSUMME: gegebenes und der Zielsummenvektor t ; sei S = ∑ x i , addieren wir zu X die folgenden Vektoren: b ′ = - t + 2 S und b ″ = t + SX={x1,…,xm} t S=∑xi X b′=−t+2S b′′=t+S : .B=X∪{b′,b′′}
( ) Angenommen , dass es existiert A ⊆ X , so daß Σ x ∈ A x = t ; wir setzen B 1 = A ∪ { b ′ } und B 2 = B ∖ B 1 = X ∖ { A } ∪ { b ″ } ; wir haben ∑ x ∈ B 1 = b ′ + ∑ x ∈ A⇒ A⊆X ∑x∈Ax=t B1=A∪{b′} B2=B∖B1=X∖{A}∪{b′′} Σ x ∈ B 2 = b " + Σ x ∈ X ∖ A x = b " + S - Σ x ∈ A
( ) Angenommen, B 1 und B 2 haben die gleiche Summe. b ' , b' ' können nicht beide zu derselben Menge gehören (andernfalls ist ihre Summe ≥ 3 S und kann nicht durch die Elemente in der anderen Menge "ausgeglichen" werden). Nehmen wir an, dass b ' = - t + 2 S ∈ B 1 ; wir haben:⇐ B1 B2 b′,b′′ ≥3S b′=−t+2S∈B1
Wir müssen also und B 1 ∖ { b ′ } ist eine gültige Lösung für die 0-1-VEKTORSUMME.∑x∈B1∖{b′}x=t B1∖{b′}
Wir erlauben nur 0-1 Vektoren in dem Satz , also Vektoren , b ' , b " müssen„in unäre dargestellt“ , wie in Schritt 2 gezeigt ist .B b′,b′′
SCHRITT 3
Das Problem ist noch NP-vollständig , wenn die Vektoren aus nummeriert sind und die beiden Teilmengen X 1 , X 2 müssen gleich groß sein, und wir fordern, dass X 1 genau eines von x 2 i - 1 , x 2 i für 1 ≤ i ≤ n enthält (also durch die Bedingung gleicher Größe) muss das andere Element des Paares in X enthalten seinx1,...,x2n X1,X2 X1 x2i−1,x2i 1≤i≤n ) enthalten sein (0-1 VECTOR EVEN-ODD PARTITION).X2
Beweis: Die Verkleinerung erfolgt von 0-1 VECTOR PARTITION und ähnelt der Verkleinerung von PARTITION auf EVEN-ODD PARTITION. Wenn sind m Vektoren über { 0 , 1 } n Ersetzen Sie jeden Vektor durch zwei Vektoren über { 0 , 1 } 2 n + 2 m :X={x1,...,xm} m {0,1}n {0,1}2n+2m
Aufgrund des -Elements können die Vektoren x ' 2 i - 1 und x ' 2 i nicht in derselben Teilmenge enthalten sein; und eine gültige Lösung für die 0-1 VECTOR EVEN-ODD PARTITION entspricht einer gültigen Lösung der ursprünglichen 0-1 VECTOR PARTITION (wählen Sie einfach die Elemente 2m + 1..2m + n jedes Vektors der Lösung aus und verwerfen Sie Vektoren, die alle enthalten Nullen in diesen Positionen).2i x′2i−1 x′2i
SCHRITT 4
0-1 VECTOR EQUAL SUBSET SUM (das Problem in der Frage) ist NP-vollständig: Reduktion von 0-1 VECTOR EVEN-ODD PARTITION ähnlich der Reduktion von EVEN-ODD PARTITION auf EQUAL SUM SUBSET, wie in Gerhard J. Woeginger bewiesen , Zhongliang Yu, auf dem Gleich-Subset-sum Problem : Bei einer gegebenen Satz bestellen von 2 m Vektoren über { 0 , 1 } n bilden wir eine Menge Y von 3 m Vektoren über { 0 ,A={x1,...,x2m} 2m {0,1}n Y 3m {0,1}2m+n .
Schließlich fügen wir hinzum Dummy-Elemente:
Beachten Sie erneut, dass Vektoren Werte enthalten> 1 kann unter Verwendung einer Gruppe von 0-1 Vektoren wie in SCHRITT 2 gezeigt "unär" dargestellt werden.
quelle
EDIT: Mein Original-Proof hatte einen Fehler. Ich glaube jetzt, dass es behoben ist.
Wir reduzieren das Problem von EQUAL SUM SUBSETS auf dieses Problem. EQUAL SUM SUBSETS ist das Problem von: gegeben einer Menge vonm Ganzzahlen finden Sie zwei disjunkte Teilmengen, die die gleiche Summe haben. Es ist bekannt, dass EQUAL SUM SUBSETS NP-vollständig sind.
Angenommen, diese Bitfolgen waren keine Vektoren, sondern Darstellungen vonn -Bit-Zahlen im Binärformat. Dann wäre das Problem NP-vollständig durch eine Reduktion von EQUAL SUM SUBSETS. Ich werde zeigen, wie diese Vektoren sich wie Binärzahlen verhalten. Was wir brauchen, ist in der Lage zu sein zu tragen; Das heißt, für jedes Paar benachbarter Koordinaten müssen wir in der Lage sein, den Vektor ..02 .. durch ..10 .. zu ersetzen.
Wie können wir das machen? Wir brauchen ein Gerät , mit dem wir das machen können. Insbesondere benötigen wir zwei Teilmengen mit den Summen ..02 .. x und ..10 .. x, wobei x eine Bitfolge ist, die neue Koordinaten verwendet (dh Koordinaten, die keine der Koordinaten sind)n Koordinaten, die die binären Darstellungen bilden), und wo es nur einen Weg gibt, zwei Teilmengen mit der gleichen Summe in den neuen Bitpositionen zu erzeugen, die x entsprechen.
Das ist ziemlich einfach. Addieren Sie für jedes Paar benachbarter Bitpositionen drei Vektoren der folgenden Form. Hier sind die letzten beiden Bits Koordinaten, die nur in diesen drei Vektoren nicht Null sind, und jedes nicht explizit unten angegebene Bit ist 0.
Lassen Sie mich ein Beispiel machen. Wir wollen zeigen, wie 5 + 3 = 8 funktioniert.
Hier ist 8 = 5 + 3 in binärer Form:
=
Diese Bitfolgen ergeben die gleiche Summe in binärer Form, jedoch nicht in Vektoraddition.
Nun haben wir Überträge an den Stellen 1, 2, 4, also müssen wir der Gleichung drei Sätze von drei Vektoren hinzufügen, um diese Überträge auszuführen.
=
Diese Mengen haben nun die gleiche Summe bei der Vektoraddition. Die Summen sind:
in beiden Fällen.
Diese Konstruktion funktioniert gut, wenn es nur einen Übertrag pro Position gibt, aber möglicherweise bis zun trägt pro Position, und Sie müssen sicherstellen, dass Ihre Konstruktion bis zu verarbeiten ist n trägt, und dass die verschiedenen trägt sich nicht gegenseitig stören. Wenn Sie beispielsweise zwei verschiedene Sätze von drei Vektoren für dasselbe Paar benachbarter Positionen hinzugefügt haben (was ich in meinem ursprünglichen Beweis vorgeschlagen habe):
Sie haben das Problem, dass Sie zwei verschiedene Vektorsätze erhalten, die dieselbe Summe ergeben:
=
Wie kann man das beheben? Fügen Sie einen Satz Vektoren hinzu, mit dem Sie 1, einen Satz mit 2 und einen Satz für 4, 8 tragen können.… , 2⌊ logn ⌋ . Ich werde im Moment nicht die Details dieser Konstruktion herausarbeiten, aber es sollte ziemlich einfach sein. Da jede Zahl eine eindeutige Binärdarstellung hat, können Sie jede Zahl bis zu tragenn . Zum Tragen von 4 benötigen Sie beispielsweise vier Vektoren, die die gleiche Summe wie zwei Vektoren haben und für die dies die einzige lineare Beziehung zwischen den beiden Mengen ist. Zum Beispiel das Set
funktioniert. Sie können leicht überprüfen, ob die Beziehung
=
ist die einzig mögliche Beziehung zwischen diesen sechs Vektoren, da die durch diese sechs Zeilen gebildete Matrix Rang 5 hat.
quelle
Dies beantwortet die Frage nicht, kann aber einige hilfreiche Beobachtungen enthalten. Ich wollte es nicht als Kommentar formulieren, da ich lange, fragmentierte Kommentare als lästig empfinde
Die Neuformulierung des Problems wie in meinem Kommentar zur Frage ausgeführt:
Eingang:n Vektoren X= { x1, … , Xn} Über { 0 , 1 }m , m ist ein Teil der Eingabe
Frage: Gibt es zwei verschiedene Teilmengen?A , B ⊆ X so dass
Vielleicht sollte ich beachten, dass man beachten sollteX, A , B als Multisets (die Vektoren dürfen nicht eindeutig sein) und die Summen sind vorbei N .
Ich schlage vor, dieses Problem 2SUBSET-BINARY-VECTOR-SUM zu nennen, da wir nach 2 Teilmengen von Binärvektoren suchen.
Einige Beobachtungen:
ObX enthält einen Vektor mehrmals die Antwort wird trivial. Lassenxich, xj∈ X und xich= xj . DannA = { xich} , B = { xj} arbeitet als Zeuge.
Wenn einer der Vektoren inX enthält nur 0en ist es trivial. Lassen0 ∈ X sei dieser Vektor. Dann für jedenA ⊆ X∖ { 0 } es folgt B = A ∪ { 0 } ist ein Zeuge.
Angenommen, es gibt einen solchen ZeugenA ⊂ B . Dies impliziert, dass sich jeder Vektor in befindetB aber nicht in EIN darf nur aus Nullen bestehen.
Um die beiden oben genannten Punkte zusammenzufassen: ein ZeugeA , B mit A ⊂ B existiert, wenn mindestens einer der Vektoren in X enthält nur Nullen
Angenommen, es gibt einen ZeugenA , B so dass A ∩ B & ne; ∅ . Sie können die gemeinsamen Elemente in beiden Sätzen entfernen und trotzdem einen korrekten Zeugen haben.
Diese Punkte bedeuten im Wesentlichen, dass Sie nach einer Partition von suchenX in zwei Sätze (A ∪ B = X ) oder drei Sätze. Der dritte Satz repräsentiert die Vektoren, die auch nicht ausgewählt wurdenEIN oder B . LassenS( n , k ) seien Sie die Stirling-Zahlen der zweiten Art - die Anzahl der Möglichkeiten, eine Menge von zu partitionieren n Objekte in k nicht leere Partitionen. Dann gibt esS( n , 3 ) + S( n , 2 ) Mögliche Lösungen, daher ist hier keine rohe Gewalt möglich.
Wenn Sie den Vektoren erlauben, vorbei zu seinNm (2SUBSET-VECTOR-SUM), dann können wir versuchen, UNIQUE-PARTITION auf dieses Problem zu reduzieren . Lassenm = 1 und übergeben Sie einfach die Instanz von UNIQUE-PARTITION (wenn sie 0 enthält, entfernen Sie sie zuerst, um triviale Lösungen zu vermeiden). Dies funktioniert jedoch nicht, da mögliche LösungenA , B Enthält nicht unbedingt alle Eingabeelemente:
Erwägen{ 1 , 2 , 3 , 5 } . Dies ist aber nicht in EINZIGARTIGER TEILUNGA = { 1 , 2 } , B = { 3 } in 2SUBSET-VECTOR-SUM. Vielleicht mitm > 1 Wir können die zusätzlichen Vektoreinträge verwenden, um zu erzwingen A , B um die Eingabe zu partitionieren.
quelle