Eine Woche in meinem Kurs über Komplexitätstheorie am College bestand unser einziges Hausaufgabenproblem darin, zu beweisen, dass # 2-SAT # P-vollständig war, indem wir von #BIPARTITE PERFECT MATCHING reduzierten. Niemand konnte es lösen, selbst wenn wir uns schließlich alle zusammenschlossen, um daran zu arbeiten.
In der nächsten Klasse war der Professor überrascht, wie schwierig wir alle es gefunden hatten, und legte seinen Beweis vor. Es war falsch. Glücklicherweise konnte ein intelligenter Cookie die richtige Reduzierung erzielen, was absolut verrückt und widerlich kompliziert war. Der Professor hat übrigens einen Turing Award :)
Obwohl ich und meine Klassenkameraden dieses Problem nicht lösen konnten, konnten wir das einfachere Problem der Reduzierung von #BIPARTITE MATCHING auf # 2-SAT lösen. Hier ist der Beweis, den ich vor einigen Jahren gefunden habe.
Satz. #BIPARTITE MATCHING # 2-SAT.≤p
Beweis . Sei eine Instanz von #BIPARTITE MATCHING. Die Partitionsmengen seien
(also und ) .A = { a i ∣ i ∈ [ n ] } ,G = ( V., E.)| A | = n | B | = m
A = { aich∣ i ∈ [ n ] } ,B = { bich∣ i ∈ [ m ] }
| A | =n| B | =m
Nun reduzieren wir auf eine 2SAT-Formel , so dass jede erfüllende Zuordnung von eine Übereinstimmung von ist und umgekehrt. Zu Beginn erstellen Sie für jede Kante eine Variable . Die Idee ist, dass das Setzen der Variablen auf TRUE der Kante entspricht, die im Matching enthalten ist. Erstellen Sie für jeden Scheitelpunkt die 2SAT-Ausdrücke
Damit erfüllt ist, muss bis auf höchstens eines von falsch sein. Um dies zu sehen, nehmen Sie beideφ φ G a i b j ∈ E x i jGφφGeinichbj∈ E.xi jxi jeinichbjichA i x i j x i j x i k ( ¬ x i j ∨ ¬ x i k ) A i B i C = n ⋀ i = 1 A i ∧ m ⋀ i = 1 B.
EINich= ⋀j < k( ¬ xi j∨ ¬ xich k) ,B.ich: = ⋀j < k( ¬ xj i∨ ¬ xk i)
EINichxi jxi jund sind wahr. Dann ist falsch, ebenso wie . Gleiches gilt für . Wenn
wir , haben wir, dass genau dann erfüllt ist, wenn jeder Scheitelpunkt in auf höchstens eine von uns gewählte Kante trifft, und somit Die Kanten bilden eine Übereinstimmung.
xich k( ¬ xi j∨ ¬ xich k)EINichB.ich C G.C.= ⋀i = 1nEINich∧ ⋀i = 1mB.ich
C.G