Gegeben ein 3CNF mit Klauseln für Variablen x 1 , … , x n . Angenommen , sowohl x i und ¯ x i in der Formel erscheinen für höchstens k i mal jeweils.ϕ1,…,ϕkx1,…,xnxichxi¯¯¯¯¯ki
Wir entwerfen einen farbigen DAG dessen Eckpunkte aus drei Teilen bestehen:G
- "Zuordnung" Eckpunkten und ˉ v i ( j ) , 1 ≤ i ≤ n , 1 ≤ j ≤ k i . Farbe v i ( j ) mit der "Farbe" x i ( j ) und ˉ v i ( j ) mit ¯ x i ( j ) .vi(j)v¯i(j)1≤i≤n1≤j≤kivi(j)xi(j)v¯i(j)xi¯¯¯¯¯(j)
- "Klausel" -Scheitelpunkte , 1 ≤ i ' ≤ k , j ' = 1 , 2 , 3 . Farb w i ' ( j ' ) mit der Farbe x i ( j ) (oder ¯ x i ( j ) ) , wenn ¯ x i (oder x i , resp.) Ist die j 'wi′(j′)1≤i′≤kj′=1,2,3wi′(j′)xi(j)xi¯¯¯¯¯(j)xi¯¯¯¯¯xij′-te Literal von Klausel , und es ist die j -te Klausel, die dieses Literal enthält.ϕi′j
- "Schneide" Eckpunkte . Färben Sie sie mit anderen Farben als oben.s=s0,s1,…,sn,sn+1,…sn+k=t
Die Kanten umfassen:
- , v i ( j ), v i ( j + 1 ) , v i ( k i ), s i ;si−1vi( 1 )vich( j ) vich( j + 1 )vich( kich) sich
- , ≤ v i ( j ) ≤ v i ( j + 1 ) , ≤ v i ( k i ) s i ;si - 1v¯ich( 1 )v¯ich( j ) v¯ich( j + 1 )v¯ich( kich) sich
- und , w i ' ( j ' ) s n + i ' .sn + i′- 1wich′( j′)wich′( j′) sn + i′
Zum Beispiel aus dem 3CNF
Das folgende Diagramm aufgebaut ist (die Kantenrichtung von links nach rechts) ist.
( x1∨ x2∨ x3¯¯¯¯¯) ∧ ( x1∨ x2¯¯¯¯¯∨ x3)
Nun ist es nicht schwer zu erkennen, dass der ursprüngliche 3CNF genau dann zufriedenstellend ist, wenn es in G einen - t - Pfad mit verschiedenen Scheitelfarben gibt .stG
(Übrigens ist es ein Nebenprodukt, dass das Vorhandensein von - t path mit verschiedenen Scheitelfarben in farbiger DAG NP-schwer ist . Ich habe in rechnerischer Hinsicht nicht viele Literatur zu diesem Problem gefunden. Wenn Sie wissen, bitte Kommentar!)stNP-schwer
Wie ist also die Beziehung zwischen dem Problem von und OP? Intuitiv werden wir eine Matrix h entwerfen , so dass jede Farbe einer Zeile (die eine Person ist) und die Kanten aufeinanderfolgenden Spalten (Zeitschlitzen) zugeordnet werden. Eine maximale Einteilung, die in der Matrix grundsätzlich von links nach rechts verläuft, entspricht daher einem s - t - Pfad.Ghst
Unsere Matrix hat 2 n + 1 + ∑ i 2 k i + k Spalten mit Indizes ab 0 . In der folgenden constrcution X ein Y sind zwei Werte erfüllen 1 « X « Y . Die Verhältnisse X / 1 , Y / X können große Potenzen von k und n sein . Sei K i = 2 i + 2 ∑ i jh2n+1+∑i2ki+k0XY1≪X≪YX/1,Y/ Xkn.Kich= 2 i + 2 ∑ichj = 1kich
- Für jeden , 0 ≤ i ≤ n , lassen h ( s i , K i ) = h ( s i , K i - k i - 1 ) = h ( s i , K i + k i + 1 + 1 ) = Y (falls die Koordinate existiert, siehe unten).sich0 ≤ i ≤ nh ( sich, Kich) = h ( sich, Kich- kich- 1 ) = h ( sich, Kich+ ki + 1+1)=Y
- Für jedes sei h ( x i ( j ) , K i - 1 + j ) = X ; Für jede ¯ x i ( j ) sei h ( ¯ x i ( j ) , K i - 1 + k i + 1 + j ) = X .xi(j)h(xi(j),Ki−1+j)=Xxi¯¯¯¯¯(j)h(xi¯¯¯¯¯(j),Ki−1+ki+1+j)=X
- Für jedes , 1 ≤ i ' ≤ k und ein Literal x in der Klausel ϕ i ' sei h ( x , K n + i ' ) = 1 .ϕi′1≤i′≤kxϕi′h(x,Kn+i′)=1
- Alle anderen Einträge sind 0.
Für das obige Beispieldiagramm lautet die entsprechende Matrix beispielsweise
Nun behaupten wir: Der ursprüngliche 3CNF ist genau dann erfüllbar, wenn der Maximalwert .(2n+1)Y+∑ikiX+k
Berücksichtigen Sie die Planung, die den Maximalwert erreicht. Da es in h genau Spalten gibt, die Y enthalten , sollten alle abgedeckt werden. Nehmen wir für die Spalte K i + k i + 1, die zwei Möglichkeiten von Y hat , an, dass die Planung sie s i zuweist . Da Spalte K i zu s i zugeordnet werden muss, müssen wir durch die Aufeinanderfolge die Spalten K i + 1 zu K i + k verlieren(2n+1)hYKi+ki+1YsichKichsichKich+ 1 . Die gleichen Dinge passieren, wenn die Planung die Spalte K i + k i + 1 zu s i + 1 zuweist .Kich+ kichKich+ kich+ 1si + 1
Um den Wert , müssen wir daher alle übrigen verfügbaren X in der Matrix auswählen , was einer Zuweisung für Variablen entspricht. Der Restwert von k ist also nur dann erreichbar, wenn die Zuweisung alle Klauseln erfüllt.∑ichkichXXk
Zusammenfassend lässt sich sagen, dass die Entscheidung über den Maximalwert einer gesetzlichen Terminplanung in fällt . Vielleicht ist dies der Grund, warum alle unsere vorherigen Versuche, einen Algorithmus zu finden, fehlgeschlagen sind.NP-schwer
Diese Lösung hat Probleme und wird in Kürze gelöscht. Siehe templatetypedefs Kommentar.
Sie können dies in polynomialer Zeit mit minimalem Kostenfluss lösen . Im Folgenden haben alle Kanten die Einheitenkapazität.
Ein Mindestkostenfluss in diesem Netzwerk hat Gesamtkosten in Höhe des Negativs des bestmöglichen Gewinns. (Diese Kosten sind negativ, aber das ist kein Problem.) Es gibt eine optimale integrale Lösung, bei der jede Person, für die eine einzelne Kante habe, s i mit einem Fluss von 1 verlässt und eine einzelne Kante bei t i mit einem Fluss von 1 ankommt und alle anderen Kanten trifft auf entweder s i oder t i 0 Fluss haben. Lassen Sie diese Fluss-1-Kanten für Person i sein s i v j und v k t i : dann k ≥ ji si ti si ti i sivj vkti k≥j , da die einzigen Pfade unter Vertices diejenigen sind, die den Index erhöhen. Wenn k = j , dann wird der Person i kein Zeitschlitz zugewiesen; andernfalls wird der Person i der Block von Zeitschlitzen j + 1 , ... , k zugewiesen .v k=j i i j+1,…,k
Intuitiv "bekommt" jede Person 1 Durchflusseinheit von und wählt eine Startzeit (Flanke) und eine Endzeit (Flanke); Diese Start- und Endkanten sind die einzigen Kanten mit Kosten ungleich Null im Netzwerk, und wir können den Wert eines Blocks j + 1 , … , k als Differenz zweier Präfixsummen darstellen. Die Einheitenkapazitäten an den Kanten zwischen den v- Vertices verhindern, dass 2 Personen den gleichen Zeitschlitz verwenden.s j+1,…,k v
Interessanterweise funktioniert diese Formulierung auch dann, wenn die Werte negativ sein können.h(i,j)
quelle