Questo problema con è coNP-hard (e quindi coNP-complete).k = 3
Per dimostrarlo, ridurrò da 3-SAT al complemento di questo problema (per un dato circuito , il circuito attiva una funzione non biiettiva).NC03
Innanzitutto una definizione preliminare che sarà utile:
Definiamo un grafico etichettato come un grafico diretto, alcuni dei cui bordi sono etichettati con valori letterali, con la proprietà che ogni vertice ha un bordo in entrata senza etichetta, un bordo in entrata con etichetta o due bordi in entrata senza etichetta.
La riduzione
Supponiamo di avere una formula 3-SAT composta da m clausole, ciascuna contenente tre letterali. Il primo passo è costruire un grafico con etichetta G da ϕ . Questo grafico etichettato contiene una copia del seguente gadget (scusate il diagramma terribile) per ogni clausola in ϕ . I tre bordi etichettati L1, L2 e L3 sono invece etichettati con i letterali nella clausola.φmsolφφ
|
| |
| |
| O<-----\
| ^ |
| | |
| | |
| /----->O |
| | ^ |
| | | |
| | | |
| O O O
| ^ ^ ^
| | | |
| |L1 |L2 |L3
| | | |
| O O O
| ^ ^ ^
| | | |
| | | |
| \------O------/
| ^
| |
| |
| O
| ^
| |
|
I gadget (uno per ogni clausola) sono tutti disposti in un grande ciclo con la parte inferiore di un gadget collegata alla parte superiore di quella successiva.
Si noti che questa disposizione dei gadget in realtà forma un grafico etichettato (ogni vertice ha l'indegree 1 o 2 con solo i bordi che portano ai vertici dell'indegree 1 che sono etichettati).
Dalla formula e dal grafico marcato G (che è stato costruito da ϕ ) costruiamo successivamente un circuito N C 0 3 (questo concluderà la riduzione). Il numero di ingressi e uscite per questo circuito è n + v dove n è il numero di variabili in φ e v è il numero di vertici in G . Un ingresso e un'uscita è assegnato a ciascuna variabile φ e ad ogni vertice in G . Se x è una variabile in ϕφsolφNC03n + vnφvsolφGxϕpoi si farà riferimento ai bit di ingresso e di uscita associati da x i n e x o u t . Inoltre, se l è un letterale con l = x allora definiamo l i n = x i n e se l è un letterale con l = ¬ x allora definiamo l i n = ¬ x i n . Infine, se v è un vertice in Gxxinxoutll=xlin=xinll=¬xlin=¬xinvGpoi si farà riferimento ai bit di ingresso e di uscita associati come v i n e v o u t .vvinvout
Esistono quattro tipi di bit di uscita:
1) Per ogni variabile in ϕ , x o u t = x i n . Si noti che questa uscita dipende solo da un bit di ingresso.xϕxout=xin
2) Per ogni vertice nel grafico etichettato con esattamente un bordo in arrivo ( u , v ) in modo tale che il bordo sia senza etichetta, v o u t = v i n ⊕ u i n . Si noti che questa uscita dipende solo da due bit di ingresso.v(u,v)vout=vin⊕uin
3) Per ogni vertice nel grafico etichettato con esattamente un bordo in entrata ( u , v ) tale che il bordo sia etichettato l , v o u t = v i n ⊕ ( u i n ∧ l i n ) . Si noti che questa uscita dipende solo tre bit di ingresso poiché l i n dipende solo x i n per qualsiasi variabile x viene utilizzata nel letterale l .v(u,v)lvout=vin⊕(uin∧lin)linxinxl
4) Per ogni vertice nel grafico etichettato con esattamente due bordi in entrata ( u , v ) e ( w , v ) , v o u t = v i n ⊕ ( u i n ∨ w i n ) . Si noti che questa uscita dipende solo da tre bit di ingresso.v(u,v)(w,v)vout=vin⊕(uin∨win)
Poiché in tutti i casi l'uscita dipende solo da tre ingressi, il circuito che costruiamo è in come desiderato.NC03
Caso di prova di correttezza 1: è soddisfacenteϕ
Supponiamo che esista un compito soddisfacente per . Quindi costruire i seguenti due set di valori per gli input.ϕ
1) Agli ingressi associati alle variabili di vengono dati i valori dell'incarico soddisfacente. A tutti gli input associati ai vertici di G viene assegnato il valore 0.ϕG
2) Agli ingressi associati alle variabili di vengono dati i valori dell'incarico soddisfacente. Consideriamo i vertici in un gadget clausola G . Se il valore di un'etichetta è 0 (sotto l'assegnazione soddisfacente), l'ingresso associato al vertice nell'endpoint target del bordo etichettato con quell'etichetta ha un valore di 0. Se sia L1 che L2 hanno valore 0, allora il secondo -top vertice nel gadget (come mostrato sopra) ha anche un valore di 0. Tutti gli altri vertici hanno un valore di 1.ϕG
Desideriamo dimostrare che questi due gruppi di ingressi producono uscite identiche e quindi che il circuito non codifica una permutazione.NC03
Considera i quattro tipi di bit di uscita:
1) Per ogni variabile in ϕ , x o u t = x i n . Poiché x i n è la stessa per entrambi i gruppi di ingressi, uscite di questo modulo saranno sempre gli stessi attraverso le due serie di ingressi.xϕxout=xinxin
2) Per ogni vertice nel grafico etichettato con esattamente un bordo in arrivo ( u , v ) in modo tale che il bordo sia senza etichetta, v o u t = v i n ⊕ u i n . Esaminando il gadget le cui copie compongono G , vediamo che tutti questi bordi sono costituiti solo da coppie di vertici i cui valori di input sono sempre 1s sotto il secondo set di input. Quindi v o u t = v i n ⊕ u i n = 0 ⊕ 0 =v(u,v)vout=vin⊕uinG sotto la prima serie di ingressi e v o u t = v i n ⊕ u i n = 1 ⊕ 1 = 0 sotto la seconda serie di ingressi. Pertanto, gli output di questo modulo saranno sempre gli stessi (e in effetti zero) tra i due set di input.vout=vin⊕uin=0⊕0=0vout=vin⊕uin=1⊕1=0
3) Per ogni vertice nel grafico etichettato con esattamente un bordo in entrata ( u , v ) tale che il bordo sia etichettato l , v o u t = v i n ⊕ ( u i n ∧ l ) . Se l è falso nell'assegnazione, v i n è 0 in entrambi i gruppi di ingressi; allora v o u t = v i n ⊕ ( u i n ∧v(u,v)lvout=vin⊕(uin∧l)lvin sotto entrambi gli insiemi di ingressi. Se l è vero sotto l'assegnazione, v i n è 0 sotto la prima serie di ingressi e 1 sotto la seconda; nota inoltre che nel gadget, gli unici bordi etichettati ( u , v ) hanno vertici u che hanno sempre u i n = 1vout=vin⊕(uin∧l)=vin⊕(uin∧0)=vin=0lvin(u,v)uuin=1sotto la seconda serie di input. Come risultato si vede che forza dei due distinti ingressi, ogniqualvolta l è vero; allora 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. Pertanto, gli output di questo modulo saranno sempre gli stessi (e in effetti zero) tra i due set di input.vout=vin⊕(uin∧l)=vin⊕(uin∧1)=vin⊕uin=vin⊕vin=0
4) Per ogni vertice nel grafico etichettato con esattamente due bordi in entrata ( u , v ) e ( w , v ) , v o u t = v i n ⊕ ( u i n ∨ w i n ) . Esistono due vertici di questo tipo in ciascun gadget. Il vertice superiore e il secondo vertice dall'alto. Consideriamo questi due casi separatamente.v(u,v)(w,v)vout=vin⊕(uin∨win)
4a) Quando è il vertice secondo piano in un gadget, u e w sono le due endpoint di destinazione degli archi etichettati L1 e L2. Sotto la prima serie di ingressi, v o u t = v i n ⊕ ( u i n ∨ w i n ) = 0 ⊕ ( 0 ∨ 0 ) = 0 . Sotto la seconda serie di input, u i n è 0 se L1 ha valore 0 sotto l'assegnazione soddisfacente (aka u i n =vuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin ); allo stesso modo, w i n è 0 se L2 ha valore 0 sotto l'incarico soddisfacente (aka w i n = L 2 ); e infine, v i n è definito come 0 se sia L1 che L2 hanno valore 0 (aka v i n = L 1 ∨ L 2 ). Pertanto, sotto la seconda serie di input, v o u t = v i n ⊕ ( u i n ∨ w i n ) = (uin=L1winwin=L2vinvin=L1∨L2 . Pertanto, gli output di questo modulo saranno sempre gli stessi (e in effetti zero) tra i due set di input.vout=vin⊕(uin∨win)=(L1∨L2)⊕(L1∨L2)=0
4b) Quando è il vertice superiore di un gadget, u è il secondo vertice superiore e w è l'endpoint target del bordo etichettato L3. Sotto la prima serie di ingressi, v o u t = v i n ⊕ ( u i n ∨ w i n ) = 0 ⊕ ( 0 ∨ 0 ) = 0 . Sotto la seconda serie di ingressi, u i n è 0 se sia L1 che L2 hanno valore 0 (aka u i n = Lvuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin ); w i n è 0 se L3 ha valore 0 (aka w i n = L 3 ); e infine v i n = 1 . Pertanto, sotto la seconda serie di ingressi, 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 dove l'uguaglianza ( L 1 ∨ L 2 ∨ L 3 ) = 1 vale per definizione in un compito soddisfacente per ogni clausola. Pertanto, gli output di questo modulo saranno sempre gli stessi (e in effetti zero) tra i due set di input.vout=vin⊕(uin∨win)=1⊕((L1∨L2)∨L3)=1⊕(L1∨L2∨L3)=1⊕1=0(L1∨L2∨L3)=1
Chiaramente, vediamo che le uscite sono le stesse per due diversi set di ingressi e quindi che il circuito attua una funzione non biiettiva.NC03
Caso di prova di correttezza 2: non è soddisfacenteϕ
Supponiamo ora che non esista un compito soddisfacente per . Quindi supponiamo per contraddizione che alcuni due diversi set di ingressi conducano al circuito N C 0 3 con la stessa uscita.ϕNC03
Chiaramente, i due ingressi devono avere gli stessi valori per per ogni variabile x in φ . Quindi ora possiamo fare in modo inequivocabile riferimento al valore di x .xinxϕx
Definire come l'insieme dei vertici v in G in modo tale che v i n sia diverso nei due insiemi di valori di input.SvGvin
Dimostreremo di seguito i seguenti lemmi:
SS
SS
SGSS
(L1∨L2∨L3)(u,v)Lvout=vin⊕(uin∧L)L=0vout=vin⊕(uin∧L)=vin⊕(uin∧0)=vin⊕0=vinvinvSS
SNC03
Non resta che provare i lemmi.
GSSvout=vin⊕XXvSXvin=vout⊕XvS
SS