Dieses Problem mit ist coNP-hart (und daher coNP-vollständig).k = 3
Um dies zu beweisen, werde ich von 3-SAT auf das Komplement dieses Problems reduzieren (für eine gegebene -Schaltung übernimmt die Schaltung eine nicht-bijektive Funktion).NC03
Zuerst eine vorläufige Definition, die hilfreich sein wird:
Wir definieren einen beschrifteten Graphen als gerichteten Graphen, dessen Kanten teilweise mit Literalen beschriftet sind, mit der Eigenschaft, dass jeder Scheitelpunkt entweder eine unbeschriftete eingehende Kante, eine beschriftete eingehende Kante oder zwei unbeschriftete eingehende Kanten hat.
Die Reduzierung
Angenommen , wir haben eine 3-SAT Formel , bestehend aus m - Klauseln, von denen jede drei Literale. Der erste Schritt besteht darin, einen beschrifteten Graphen G aus ϕ zu konstruieren . Diese beschriftete Grafik enthält eine Kopie des folgenden Gadgets (Entschuldigung für das schreckliche Diagramm) für jede Klausel in ϕ . Die drei mit L1, L2 und L3 bezeichneten Kanten sind stattdessen mit den Literalen in der Klausel bezeichnet.ϕmGϕϕ
|
| |
| |
| O<-----\
| ^ |
| | |
| | |
| /----->O |
| | ^ |
| | | |
| | | |
| O O O
| ^ ^ ^
| | | |
| |L1 |L2 |L3
| | | |
| O O O
| ^ ^ ^
| | | |
| | | |
| \------O------/
| ^
| |
| |
| O
| ^
| |
|
Die Minianwendungen (eine für jede Klausel) sind alle in einem großen Zyklus angeordnet, wobei die Unterseite einer Minianwendung mit der Oberseite der nächsten verknüpft ist.
Beachten Sie, dass diese Anordnung der Minianwendungen tatsächlich ein beschriftetes Diagramm bildet (jeder Scheitelpunkt hat einen Grad 1 oder 2, wobei nur Kanten zu beschrifteten Scheitelpunkten des Grads 1 führen).
Aus der Formel und dem mit G bezeichneten Graphen (der aus ϕ konstruiert wurde) konstruieren wir als nächstes eine N C 0 3 -Schaltung (dies schließt die Reduktion ab). Die Anzahl der Ein- und Ausgänge für diese Schaltung beträgt n + v, wobei n die Anzahl der Variablen in ϕ und v die Anzahl der Eckpunkte in G ist . Jeder Variablen in ϕ und jedem Scheitelpunkt in G ist ein Eingang und ein Ausgang zugeordnet . Wenn x eine Variable in ϕ istϕGϕNC03n+vnϕvGϕGxϕdann bezeichnen wir die mit verbundenen Eingangs- und Ausgangsbits als x i n und x o u t . Außerdem, wenn L ein Literal mit ist l = x dann definieren wir l i n = x i n und wenn l ist ein Literal mit l = ¬ x dann definieren wir l i n = ¬ x i n . Schließlich, wenn v ein Scheitelpunkt in G istxxinxoutll=xlin=xinll=¬xlin=¬xinvGdann beziehen wir uns auf die Eingangs- und Ausgangsbits, die mit assoziiert sind, als v i n und v o u t .vvinvout
Es gibt vier Arten von Ausgangsbits:
1) für jede Variable in φ , x o u t = x i n . Beachten Sie, dass dieser Ausgang nur von einem Eingangsbit abhängt.xϕxout=xin
2) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante unmarkiert, v o u t = V i n ⊕ u i n . Beachten Sie, dass dieser Ausgang nur von zwei Eingangsbits abhängt.v(u,v)vout=vin⊕uin
3) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante markiert l , v o u t = V i n ⊕ ( u i n ∧ L i n ) . Beachten Sie, dass dieser Ausgang auf nur drei Eingangsbits hängt da l i n hängt nur von x i n für was auch immer Variable x im wörtlichen verwendet l .v(u,v)lvout=vin⊕(uin∧lin)linxinxl
4) für jede Ecke in dem markierten Graph mit genau zwei ankommenden Kanten ( u , v ) und ( w , v ) , v o u t = V i n ⊕ ( u i n ∨ w i n ) . Beachten Sie, dass dieser Ausgang nur von drei Eingangsbits abhängt.v(u,v)(w,v)vout=vin⊕(uin∨win)
Da der Ausgang in allen Fällen nur von drei Eingängen abhängt, befindet sich die von uns gebildete Schaltung wie gewünscht in .NC03
Korrektheitsnachweis Fall 1: ist erfüllbarϕ
Angenommen, es gibt eine zufriedenstellende Zuordnung für . Erstellen Sie dann die folgenden zwei Wertesätze für die Eingaben.ϕ
1) Die Eingänge , die mit den Variablen von werden die Werte der Befriedigung Zuordnung gegeben. Allen Eingaben, die den Eckpunkten von G zugeordnet sind, wird der Wert 0 gegeben.ϕG
2) Die den Variablen von Eingänge erhalten die Werte der erfüllenden Zuordnung. Betrachten Sie die Eckpunkte in einer Klausel Gadget in G . Wenn der Wert einer Beschriftung 0 ist (unter der befriedigenden Zuweisung), erhält die Eingabe, die dem Scheitelpunkt am Zielendpunkt der mit dieser Beschriftung beschrifteten Kante zugeordnet ist, den Wert 0. Wenn sowohl L1 als auch L2 den Wert 0 haben, dann den zweiten -top vertex im Gadget (wie oben gezeigt) erhält ebenfalls den Wert 0. Alle anderen Vertices erhalten den Wert 1.ϕG
Wir möchten zeigen, dass diese beiden Eingangssätze identische Ausgänge liefern und daher die -Schaltung keine Permutation codiert.NC03
Betrachten Sie die vier Arten von Ausgangsbits:
1) für jede Variable in φ , x o u t = x i n . Da x i n ist das gleiche für beiden Sätze von Eingängen, Ausgänge dieser Form werden immer das gleiche für die zwei Sätze von Eingängen.xϕxout=xinxin
2) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante unmarkiert, v o u t = V i n ⊕ u i n . Betrachtet man das Gadget, dessen Kopien G bilden , so stellt man fest, dass alle diese Kanten nur aus Scheitelpunktpaaren bestehen, deren Eingabewerte unter der zweiten Eingabemenge immer 1s betragen. Somit v o u t = V i n ⊕ u i n = 0 ⊕ 0 =v(u,v)vout=vin⊕uinG unter dem ersten Satz von Eingängen und v o u t = V i n ⊕ u i n = 1 ⊕ 1 = 0 unter dem zweiten Satz von Eingängen. Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin⊕uin=0⊕0=0vout=vin⊕uin=1⊕1=0
3) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante markiert l , v o u t = V i n ⊕ ( u i n ∧ L ) . Wenn l unter der Zuordnung falsch ist , dann v i n ist 0 unter beiden Sätzen von Eingängen; dann ist v o u t = v i n ⊕ ( u i n ∧v(u,v)lvout=vin⊕(uin∧l)lvin unter beiden Sätzen von Eingängen. Wenn l wahr unter der Zuweisung ist, V i n 0unter dem ersten Satz von Eingängen und 1 unter dem zweiten; Beachten Sie auch, dass in der Minianwendung die einzigen beschrifteten Kanten ( u , v ) Scheitelpunkte u haben, die immer u i n = 1 habenvout=vin⊕(uin∧l)=vin⊕(uin∧0)=vin=0lvin(u,v)uuin=1unter dem zweiten Satz von Eingaben. Als Ergebnis sehen wir, dass unter beiden Mengen von Eingaben wann immer l wahr ist; dann gilt v o u t = v i n ⊕ ( u i n ∧ l ) = v i n ⊕ ( u i n ∧ 1 ) = v i n ⊕ u i n = v i n ⊕ vuin=vinl. Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin⊕(uin∧l)=vin⊕(uin∧1)=vin⊕uin=vin⊕vin=0
4) für jede Ecke in dem markierten Graph mit genau zwei ankommenden Kanten ( u , v ) und ( w , v ) , v o u t = V i n ⊕ ( u i n ∨ w i n ) . In jedem Gadget gibt es zwei solcher Eckpunkte. Der obere Scheitelpunkt und der zweite Scheitelpunkt von oben. Wir betrachten diese beiden Fälle getrennt.v(u,v)(w,v)vout=vin⊕(uin∨win)
4a) Wenn der zweithöchste Scheitelpunkt in einem Gadget ist, sind u und w die beiden Zielendpunkte der mit L1 und L2 bezeichneten Kanten. Unter dem ersten Satz von Eingängen, v o u t = V i n ⊕ ( u i n ∨ w i n ) = 0 ⊕ ( 0 ∨ 0 ) = 0 . Unter dem zweiten Satz von Eingängen ist u i n 0, wenn L1 unter der befriedigenden Zuweisung den Wert 0 hat (auch bekannt als u i n =vuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin ); in ähnlicher Weise ist w i n 0, wenn L2 unter der erfüllenden Zuweisung den Wert 0 hat (auch bekannt als w i n = L 2 ); und schließlich v i n ist definiert 0 sein iff sowohl L1 und L2 habenWert 0 (auch bekannt als v i n = L 1 ∨ L 2 ). Somit unter dem zweiten Satz von Eingängen, v o u t = V i n ⊕ ( u i n ∨ w i n ) = (uin=L1winwin=L2vinvin=L1∨L2 . Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin⊕(uin∨win)=(L1∨L2)⊕(L1∨L2)=0
4b) Wenn der oberste Scheitelpunkt in einem Gadget ist, ist u der zweitoberste Scheitelpunkt und w ist der Zielendpunkt der mit L3 bezeichneten Kante. Unter dem ersten Satz von Eingängen, v o u t = V i n ⊕ ( u i n ∨ w i n ) = 0 ⊕ ( 0 ∨ 0 ) = 0 . Unter dem zweiten Satz von Eingängen ist u i n 0, wenn sowohl L1 als auch L2 den Wert 0 haben (auch bekannt als u i n = L)vuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin ); w i n ist 0, wenn L3 den Wert 0 hat (aka w i n = L 3 ); und schließlich v i n = 1 . Somit unter dem zweiten Satz von Eingängen, v o u t = V i n ⊕ ( u i n ∨ w i n ) = 1 ⊕ ( ( L 1 ∨ L 2 ) ∨ L 3 )uin=L1∨L2winwin=L3vin=1 wobei die Gleichheit ( L 1 ∨ L 2 ∨ L 3 ) = 1 per definitionem in einer zufriedenstellenden Zuordnung für jede Klausel gilt. Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin⊕(uin∨win)=1⊕((L1∨L2)∨L3)=1⊕(L1∨L2∨L3)=1⊕1=0(L1∨L2∨L3)=1
Wir sehen klar, dass die Ausgänge für zwei verschiedene Sätze von Eingängen gleich sind und daher der -Schaltkreis eine nicht-bijektive Funktion ausübt.NC03
Korrektheitsnachweis Fall 2: ist nicht befriedigendϕ
Nehmen wir jetzt an, dass es für keine befriedigende Zuordnung gibt . Nehmen wir dann zum Zwecke des Widerspruchs an, dass einige zwei verschiedene Sätze von Eingängen dazu führen, dass der N C 0 3 -Schaltkreis den gleichen Ausgang hat.ϕNC03
Es ist klar, dass die beiden Eingänge für für jede Variable x in ϕ dieselben Werte haben müssen . Somit können wir uns jetzt eindeutig auf den Wert von x beziehen .xinxϕx
Definieren der Satz von Scheitelpunkten sein v in G , so daß v i n in den beiden Sätzen von Eingangswerten unterscheiden.SvGvin
Wir werden die folgenden Lemmata beweisen:
Lemma 1: Wenn in einigen Gadget alle drei Scheitelpunkte an den Zielendpunkten der markierten Kanten nicht in sind dann keine Eckpunkte über jene drei im Gadget sind in S .SS
Lemma 2: Wenn in irgendeinem Gerät der obere Scheitelpunkt ist nicht in im nächsten Gadget dann nach oben keine Ecke in ist S .SS
Da die Minianwendungen eine Schleife bilden, bedeutet dies, dass, wenn sich in einer Minianwendung alle drei Eckpunkte an den Zielendpunkten der markierten Kanten nicht in kein Eckpunkt in G in S befindet (mit anderen Worten, S ist leer).SGSS
Betrachten Sie jedoch ein Gadget, das mit einer Klausel verknüpft ist, die nicht erfüllt ist. In diesem Gadget alle drei Etiketten Wert 0. Wir wissen , dass Kante ( u , v ) markierte L erfüllen muss , v o u t = v i n ⊕ ( u i n ∧ L ) , aber L = 0 , so v o u t = v i n(L1∨L2∨L3)(u,v)Lvout=vin⊕(uin∧L)L=0 . Somitda der Ausgang das gleiche für beiden Eingänge ist, die Werte von v i n müssen auch das gleiche für die zwei Sätze von Eingängen sein. Mit anderen Worten, wir haben gezeigt, dass v nicht in S ist . Wir sehen also, dass in diesem bestimmten Gadget die drei Eckpunkte an den Zielendpunkten der markierten Kanten nicht in S liegen .vout=vin⊕(uin∧L)=vin⊕(uin∧0)=vin⊕0=vinvinvSS
Infolgedessen schließen wir, dass leer ist. Dies impliziert jedoch, dass es zwischen den beiden Eingabesätzen keine Unterschiede gab, was der Annahme widerspricht, dass diese Eingabesätze unterschiedlich sind. Infolgedessen sehen wir, dass die von der N C 0 3 -Schaltung ausgeübte Funktion injektiv und daher eine Bijektion ist.SNC03
Alles was übrig bleibt ist, die Deckspelzen zu beweisen.
Zu diesem Zweck ist zu beachten, dass für jeden Scheitelpunkttyp in (Grad 1 mit Beschriftung, Grad 1 ohne Beschriftung und Grad 2), wenn alle eingehenden Kanten von Scheitelpunkten stammen, die nicht in S liegen, der betreffende Scheitelpunkt auch nicht in S liegt . Dies liegt daran , dass in allen drei Fällen v o u t = V i n ⊕ X , wo X ist eine Funktion der zugehörigen Eingänge mit Variablen und / oder Ecken mit Kanten v . Da sich nicht alle derartigen Eckpunkte unter der Annahme in S befinden , muss der Wert von X für beide Eingabesätze gleich sein. Deshalb v iGSSvout=vin⊕XXvSXist auch bei beiden Eingangssätzen gleich. Mit anderen Wortenvist nicht inS.vin=vout⊕XvS
Nachdem wir nun die Regel haben, dass ein Scheitelpunkt nicht in wenn alle seine Vorgänger nicht in S liegen , folgen die Lemmas, indem Sie die Regel einfach wiederholt auf das obige Minitool-Diagramm anwenden.SS