Dieses Problem ist durch Reduzierung von Vertex Cover NP-schwer.
Im Vertex Cover-Problem erhalten wir einen Graphen und eine Zahl , und unsere Aufgabe besteht darin, zu bestimmen, ob es eine Teilmenge von höchstens Eckpunkten von so dass jede Kante in einfällt auf zumindest einen Scheitelpunkt in . (Entsprechend: Ist es möglich, jede Kante in zu töten, indem höchstens Eckpunkte gelöscht werden ?)r U r V E U G rG=(V,E)rUrVEUGr
Zuerst Partitionieren in disjunkte Untermengen entspricht , jedes Element in der Zuweisung genau einer der möglichen Etiketten. Die Grundidee der Reduktion besteht darin, für jeden Scheitelpunkt in eine Beschriftung zu erstellen und jeder Kante nur eine der beiden Beschriftungen zu "erlauben", die ihren Endpunkten entsprechen, im folgenden Sinne: Zuweisen einer Kante eine entsprechende Mit label wird keine (echte) Einschränkung eingeführt, welche anderen Kanten derselben Beschriftung zugewiesen werden können, während durch Zuweisen einer Kante zu einer nicht entsprechenden Beschriftung verhindert wird, dass einer anderen Kante dieselbe Beschriftung zugewiesen wird - was natürlich dazu führt, dass die Nummer nach oben verschoben wird von verschiedenen Etiketten erforderlich.s A s S j v j V.AsAsSjvjV
So erstellen Sie eine Instanz Ihres Problems aus einer Instanz von Vertex Cover:( G , r )(A,a,s)(G,r)
- Setze aufUnd ein Element schaffen in für jede Kante in . (Diese Paare können als die ganzen Zahlen ; jede Bijektion zwischen ihnen reicht aus.)| E | ( i , j ) A v i v j E 1 , … , kk|E|(i,j)AvivjE1,…,k
- Setze aufwenn oder ; Andernfalls setzen Sie auf 1. | E | d = b d = c a ( b , c ) , da(b,c),d|E|d=bd=ca(b,c),d
- Setze .s=r
WennS j v j U v b v c ∈ E ( b , c ) ∈ A S b S c s a i j | E |(G,r) eine YES-Instanz von Vertex Cover ist, ist es leicht zu erkennen, dass die gerade konstruierte Instanz Ihres Problems auch eine YES-Instanz ist: einfach die Bezeichnungen , die den Vertices in einer beliebigen Lösung und weisen Sie für jede Kante das entsprechende Element je nachdem, welche der Bezeichnungen oder ausgewählt wurde (wählen Sie willkürlich, wenn beide Bezeichnungen ausgewählt wurden). Diese Lösung verwendet Teilmengen und ist gültig, da nur die entsprechenden für die Entsprechung geltenSjvjUvbvc∈E(b,c)∈ASbScsaijLabels, die den (Nicht-) Effekt haben, mehr alsKanten, denen das gleiche Etikett zugewiesen wurde.|E|
Es bleibt zu zeigen, dass eine YES-Instanz Ihres Problems impliziert, dass das Original( G , r ) Y X ( i , j ) S m m ∉ { i , j } U Y.X=(A,a,s)(G,r) eine YES-Instanz von Vertex Cover ist. Dies ist etwas komplizierter, da eine gültige Lösung bis im Allgemeinen einer Kante eine nicht entsprechende Bezeichnung zuweisen kann , dh , was bedeutet, dass wir dies nicht können notwendigerweise eine gültige Scheitelpunktabdeckung aus einer gültigen Lösung "ablesen" .YX(i,j)Smm∉{i,j}UY
Das Zuweisen eines nicht entsprechenden Etiketts ist jedoch mit hohen Kosten verbunden, die die Struktur der Lösung stark einschränken: immer dann, wenn eine Kante vorhanden ist S m m ∉ { i , j } a ( i , j ) , m = 1 Y ( i , j ) ↦ S m Y '(i,j) solches Etikett zugewiesen wird , ist die Tatsache dass sicherstellt, dass es die einzige Kante sein muss, der diese Bezeichnung zugewiesen wurde. In jeder Lösung die eine solche nicht entsprechend markierte Kante , könnten wir also eine alternative Lösung wie folgt konstruieren :Smm∉{i,j}a(i,j),m=1Y(i,j)↦SmY′
- Wählen Sie willkürlich die neue Bezeichnung für als oder .Sz(i,j)SiSj
- Weisen Sie diesem neuen Label . Wenn dies zu einer ungültigen Lösung führt, muss dies daran liegen, dass genau einer anderen Kante , bereits die Bezeichnung zugewiesen wurde . In diesem Fall setzen Sie und fahren Sie mit Schritt 1 fort.(i,j)(i′,j′)z∉{i′,j′} ( i , j ) = ( i ' , j ' )Sz(i,j)=(i′,j′)
s - 1 sSzs−1s|E|Y′′
Diese Konstruktion ist eindeutig eine Polynomzeit, daher ist Ihr Problem NP-schwer.