Decidere se un NC


27

Vorrei porre un caso speciale sulla domanda " Decidere se un determinato circuito NC 0 calcola una permutazione " di QiCheng che è stata lasciata senza risposta.

Un circuito booleano viene chiamato circuito NC 0 k se ciascuna porta di uscita dipende sintatticamente dalla maggior parte delle k porte di ingresso. (Diciamo che una porta di uscita g dipende sintatticamente da una porta di ingresso g ′ quando c'è un percorso diretto da g ′ a g nel circuito visto come un grafico aciclico diretto.)

Nella domanda sopra menzionata, QiCheng ha posto domande sulla complessità del seguente problema, in cui k è una costante:

Esempio : Un NC 0 k circuito con n ingresso bit e n uscita bit.
Domanda : Il circuito dato calcola una permutazione su {0, 1} n ? In altre parole, la funzione calcolata dal circuito è una biiezione da {0, 1} n a {0, 1} n ?

Come ha commentato Kaveh su questa domanda, è facile vedere che il problema è in coNP. In una risposta, ho mostrato che il problema è completo per k = 5 e che è in P per k = 2.

Domanda . Qual è la complessità per k = 3?

Chiarimento il 29 maggio 2013 : "Una permutazione su {0, 1} n " indica una mappatura biiettiva da {0, 1} n a se stessa. In altre parole, il problema chiede se ogni stringa n -bit è l'output del circuito dato per una stringa di input n -bit.


1
Nota personale: quando ho pubblicato una risposta alla domanda di QiCheng, l'ho fatto solo perché il problema sembrava interessante, senza alcuna particolare applicazione in mente. Diversi mesi dopo, mi è capitato di trovarmi in una situazione in cui dovevo spiegare a qualcuno che è tutt'altro che banale decidere se un determinato programma calcola o meno una permutazione. Grazie alla domanda di QiCheng, ho avuto un esempio perfetto (che coincidenza!). Successivamente, sono diventato più curioso dei casi di k = 3 e k = 4. Ho il sospetto che il caso di k = 3 sia già completo, ma non sono stato in grado di provare in entrambi i casi.
Tsuyoshi Ito,

questo problema sembra essere un caso particolare del problema del Circuito di Pigeonhole definito da Papadimitriou ( sciencedirect.com/science/article/pii/S0022000005800637 ) che è completo per PPP in relazione alle riduzioni del tempo tra i problemi di ricerca.
Marcos Villagra,

@Marcos Villagra: Grazie per il commento, ma temo che dicendo "caso particolare di" stai cambiando significativamente la definizione del problema del Circuito di Pigeonhole. Una proprietà importante del problema del circuito di Pigeonhole è che si tratta di un problema di ricerca totale , mentre l'attuale problema (visto come un problema di ricerca per due ingressi che producono lo stesso risultato) non è un problema di ricerca totale.
Tsuyoshi Ito,

Risposte:


3

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).NC30

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.ϕmGϕϕ

   |
   |               |
   |               |
   |               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 ϕϕGϕNC30n+vnϕvGϕ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 nu i n . Si noti che questa uscita dipende solo da due bit di ingresso.v(u,v)vout=vinuin

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 nl 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(uinlin)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 nw i n ) . Si noti che questa uscita dipende solo da tre bit di ingresso.v(u,v)(w,v)vout=vin(uinwin)

Poiché in tutti i casi l'uscita dipende solo da tre ingressi, il circuito che costruiamo è in come desiderato.NC30

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.NC30

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 nu 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 nu i n = 0 0 =v(u,v)vout=vinuinG sotto la prima serie di ingressi e v o u t = v i nu 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=vinuin=00=0vout=vinuin=11=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 nl ) . 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 nv(u,v)lvout=vin(uinl)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(uinl)=vin(uin0)=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 nl ) = v i n( u i n1 ) = v i nu i n = v i nvuin=vinl. Pertanto, gli output di questo modulo saranno sempre gli stessi (e in effetti zero) tra i due set di input.vout=vin(uinl)=vin(uin1)=vinuin=vinvin=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 nw 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(uinwin)

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 nw 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(uinwin)=0(00)=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 nw i n ) = (uin=L1winwin=L2vinvin=L1L2 . Pertanto, gli output di questo modulo saranno sempre gli stessi (e in effetti zero) tra i due set di input.vout=vin(uinwin)=(L1L2)(L1L2)=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 nw 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(uinwin)=0(00)=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 nw i n ) = 1 ( ( L 1 L 2 ) L 3 )uin=L1L2winwin=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(uinwin)=1((L1L2)L3)=1(L1L2L3)=11=0(L1L2L3)=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.NC30

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.ϕNC30

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

(L1L2L3)(u,v)Lvout=vin(uinL)L=0vout=vin(uinL)=vin(uin0)=vin0=vinvinvSS

SNC30

Non resta che provare i lemmi.

GSSvout=vinXXvSXvin=voutXvS

SS


-1

Non la risposta che l'autore stava cercando, vedere i commenti che chiariscono quale sia la "permutazione" in questo contesto.

Ho aumentato la dimensione del set minimo dominante per l'inclusione del gruppo di permutazione monogena digraph: https://oeis.org/A186202

Tutto quello che devi fare è testare un membro di ogni decomposizione del ciclo primo.

Per ogni ciclo primo dovrebbe essere sufficiente codificare gli elementi come (10101010 ...), quindi (01010101 ..)?

------ Chiarimento ------ L'obiettivo di questo approccio è quello di modellare i tuoi 2 ^ n casi di test come un digrafo. Se un caso di successo del test implica un altro caso di successo, allora devi solo testare il set minimo dominante di questo digraph dello spazio del test. Nello spazio delle permutazioni OEIS A186202 è il massimo che devi testare per rilevare un sottogruppo non banale o dimostrare che non esiste; questo numero è ancora grande ma molto più piccolo di n !.

--Musing-- Usando n-1 zeri e 1 uno in n iterazioni puoi rilevare la permutazione fissa che stai cercando. Dopodiché in O (n {(n-1) \ scegli (k-1)} (2 ^ (k-1)) puoi provare che ogni set di (k-1) variabili non ha effetto su ogni indice dello shuffle Dato che k è fisso, questo è polinomiale. Mi sto perdendo qualcosa?


Hmm. Non sono sicuro se (01) *, (10) * sia sufficiente. Potrebbe essere necessario provare tutte le configurazioni 2 ^ p per ciascun ciclo primo.
Chad Brewbaker,

2
(2n)!n11

2
C:{0,1}n{0,1}nx,x{0,1}nC(x)=C(x)xxCpermette (mescola / riordina / riordina) i bit di input. Vedi la differenza? Sospetto che tu abbia risposto alla domanda sbagliata.
DW,

2
Grazie per aver cercato di aiutare, ma come ha spiegato DW, temo che la domanda a cui hai risposto sia diversa da quella che ho posto. "Una permutazione su {0,1} ^ n" indica una funzione biiettiva da {0,1} ^ n a se stessa e non significa riordinare gli n bit.
Tsuyoshi Ito,

3
Ciad, ti dispiacerebbe cancellare questa risposta o almeno aggiungere una nota all'inizio che non sta rispondendo alla domanda di Tsuyoshi?
Kaveh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.