Este problema con es coNP-hard (y por lo tanto coNP-complete).k=3
Para probar esto, de 3-SAT al complemento de este problema (para un circuito dado , el circuito promulga una función no biyectiva).NC03
Primero una definición preliminar que será útil:
Definimos un gráfico etiquetado como un gráfico dirigido, algunos de cuyos bordes están etiquetados con literales, con la propiedad de que cada vértice tiene un borde entrante sin etiquetar, un borde entrante etiquetado o dos bordes entrantes sin etiquetar.
La reducción
Supongamos que tenemos una fórmula 3-SAT consta de cláusulas, cada una con tres literales. El primer paso es construir un gráfico etiquetado partir de . Este gráfico etiquetado contiene una copia del siguiente gadget (perdón por el terrible diagrama) para cada cláusula en . Los tres bordes etiquetados como L1, L2 y L3 están etiquetados con los literales en la cláusula.m G ϕ ϕϕmGϕϕ
|
| |
| |
| O<-----\
| ^ |
| | |
| | |
| /----->O |
| | ^ |
| | | |
| | | |
| O O O
| ^ ^ ^
| | | |
| |L1 |L2 |L3
| | | |
| O O O
| ^ ^ ^
| | | |
| | | |
| \------O------/
| ^
| |
| |
| O
| ^
| |
|
Los gadgets (uno para cada cláusula) se organizan en un gran ciclo con la parte inferior de un gadget unida a la parte superior del siguiente.
Tenga en cuenta que esta disposición de gadgets de hecho forma un gráfico etiquetado (cada vértice tiene un grado 1 o 2 con solo bordes que conducen a vértices del grado 1 etiquetados).
A partir de la fórmula y el gráfico etiquetado (que se construyó a partir de ), a continuación construimos un circuito (esto concluirá la reducción). El número de entradas y salidas de este circuito es , donde es el número de variables en y es el número de vértices en . Una entrada y una salida se asigna a cada variable en y para cada vértice en . Si es alguna variable en , nos referiremos a los bits de entrada y salida asociados con comoG ϕ N C 0 3 n + v n ϕ v G ϕ G x ϕ x x i n x o u t l l = x l i n = x i n l l = ¬ x l i n = ¬ x i n v G v v i n v o u tϕGϕNC03n+vnϕvGϕGxϕxxin y . Además, si es un literal con entonces definimos y si es un literal con entonces definimos . Finalmente, si es algún vértice en , nos referiremos a los bits de entrada y salida asociados con como y .xoutll=xlin=xinll=¬xlin=¬xinvGvvinvout
Hay cuatro tipos de bits de salida:
1) Para cada variable in , . Tenga en cuenta que esta salida depende de un solo bit de entrada.ϕ x o u t = x i nxϕxout=xin
2) Para cada vértice en el gráfico etiquetado con exactamente un borde entrante modo que el borde no esté etiquetado, . Tenga en cuenta que esta salida depende de solo dos bits de entrada.( u , v ) v o u t = v i n ⊕ u i nv(u,v)vout=vin⊕uin
3) Para cada vértice en el gráfico etiquetado con exactamente un borde entrante modo que el borde esté etiquetado como , . Tenga en cuenta que esta salida depende de solo tres bits de entrada, ya que depende solo de para cualquier variable utilizada en el literal .( u , v ) l v o u t = v i n ⊕ ( u i n ∧ l i n ) l i n x i n x lv(u,v)lvout=vin⊕(uin∧lin)linxinxl
4) Para cada vértice en el gráfico etiquetado con exactamente dos bordes entrantes y , . Tenga en cuenta que esta salida depende de solo tres bits de entrada.( u , v ) ( w , v ) v o u t = v i n ⊕ ( u i n ∨ w i n )v(u,v)(w,v)vout=vin⊕(uin∨win)
Como en todos los casos la salida depende de solo tres entradas, el circuito que construimos está en como se desee.NC03
Prueba de corrección caso 1: es satisfactoriaϕ
Supongamos que existe una asignación satisfactoria para . Luego construya los siguientes dos conjuntos de valores para las entradas.ϕ
1) Las entradas asociadas con las variables de reciben los valores de la asignación satisfactoria. Todas las entradas asociadas con vértices de reciben el valor 0.ϕG
2) Las entradas asociadas con las variables de reciben los valores de la asignación satisfactoria. Considere los vértices en un gadget cláusula en . Si el valor de una etiqueta es 0 (bajo la asignación satisfactoria), la entrada asociada con el vértice en el punto final objetivo del borde etiquetado con esa etiqueta tiene un valor de 0. Si L1 y L2 tienen el valor 0, entonces el segundo -vértice superior en el gadget (como se muestra arriba) también tiene un valor de 0. Todos los demás vértices tienen un valor de 1.ϕG
Queremos mostrar que estos dos conjuntos de entradas producen salidas idénticas y, por lo tanto, que el circuito no codifica una permutación.NC03
Considere los cuatro tipos de bits de salida:
1) Para cada variable in , . Como es igual para ambos conjuntos de entradas, las salidas de esta forma siempre serán las mismas en los dos conjuntos de entradas.xϕxout=xinxin
2) Para cada vértice en el gráfico etiquetado con exactamente un borde entrante modo que el borde no esté etiquetado, . Al examinar el dispositivo cuyas copias componen , vemos que todos esos bordes consisten solo en pares de vértices cuyos valores de entrada son siempre 1 bajo el segundo conjunto de entradas. Por lo tanto, bajo el primer conjunto de entradas y bajo el segundo conjunto de entradas. Por lo tanto, las salidas de esta forma siempre serán las mismas (y de hecho cero) en los dos conjuntos de entradas.v(u,v)vout=vin⊕uinGvout=vin⊕uin=0⊕0=0vout=vin⊕uin=1⊕1=0
3) Para cada vértice en el gráfico etiquetado con exactamente un borde entrante modo que el borde esté etiquetado como , . Si es falso bajo la asignación, entonces es 0 bajo ambos conjuntos de entradas; entonces en ambos conjuntos de entradas. Si es verdadero bajo la asignación, es 0 bajo el primer conjunto de entradas y 1 bajo el segundo; También tenga en cuenta que en el gadget, los únicos bordes etiquetados tienen vértices que siempre tienenv(u,v)lvout=vin⊕(uin∧l)lvinvout=vin⊕(uin∧l)=vin⊕(uin∧0)=vin=0lvin(u,v)uuin=1 bajo el segundo conjunto de entradas. Como resultado, vemos que bajo ambos conjuntos de entradas, siempre que sea verdadero; entonces . Por lo tanto, las salidas de esta forma siempre serán las mismas (y de hecho cero) en los dos conjuntos de entradas.uin=vinlvout=vin⊕(uin∧l)=vin⊕(uin∧1)=vin⊕uin=vin⊕vin=0
4) Para cada vértice en el gráfico etiquetado con exactamente dos bordes entrantes y , . Hay dos vértices en cada gadget. El vértice superior y el segundo vértice superior. Consideramos esos dos casos por separado.v(u,v)(w,v)vout=vin⊕(uin∨win)
4a) Cuando es el segundo vértice superior en un gadget, y son los dos puntos finales objetivo de los bordes etiquetados como L1 y L2. En el primer conjunto de entradas, . Bajo el segundo conjunto de entradas, es 0 si L1 tiene el valor 0 bajo la asignación satisfactoria (también como ); de manera similar, es 0 si L2 tiene el valor 0 bajo la asignación satisfactoria (también como ); y finalmente, se define como 0 si L1 y L2 tienen el valor 0 (también conocido como ). Así, bajo el segundo conjunto de entradas,vuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uinuin=L1winwin=L2vinvin=L1∨L2vout=vin⊕(uin∨win)=(L1∨L2)⊕(L1∨L2)=0 . Por lo tanto, las salidas de esta forma siempre serán las mismas (y de hecho cero) en los dos conjuntos de entradas.
4b) Cuando es el vértice superior de un dispositivo, es el segundo vértice superior y es el punto final objetivo del borde etiquetado como L3. En el primer conjunto de entradas, . Bajo el segundo conjunto de entradas, es 0 si L1 y L2 tienen el valor 0 (también como ); es 0 si L3 tiene el valor 0 (también como ); y finalmente . Por lo tanto, bajo el segundo conjunto de entradas, donde la igualdadvuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uinuin=L1∨L2winwin=L3vin=1vout=vin⊕(uin∨win)=1⊕((L1∨L2)∨L3)=1⊕(L1∨L2∨L3)=1⊕1=0(L1∨L2∨L3)=1 mantiene por definición en una asignación satisfactoria para cada cláusula. Por lo tanto, las salidas de esta forma siempre serán las mismas (y de hecho cero) en los dos conjuntos de entradas.
Claramente, vemos que las salidas son las mismas para dos conjuntos diferentes de entradas y, por lo tanto, que el circuito realiza una función no biyectiva.NC03
Prueba de corrección caso 2: es insatisfactorioϕ
Supongamos ahora que no existe una asignación satisfactoria para . Luego, supongamos, en aras de la contradicción, que unos dos conjuntos diferentes de entradas conducen al circuito que tiene la misma salida.ϕNC03
Claramente, las dos entradas deben tener los mismos valores para para cada variable en . Por lo tanto, ahora podemos referirnos sin ambigüedad al valor de .xinxϕx
Defina como el conjunto de vértices en modo que sea diferente en los dos conjuntos de valores de entrada.SvGvin
A continuación demostraremos los siguientes lemas:
Lema 1: Si en algún aparato los tres vértices en los puntos finales de destino de los bordes marcados no están en entonces no hay vértices superiores a los tres de la herramienta están en .SS
Lema 2: Si en algún aparato el vértice superior no está en a continuación, en el siguiente aparato hasta ningún vértice está en .SS
Dado que los gadgets forman un bucle, esto implica que si en cualquier gadget los tres vértices en los puntos finales de destino de los bordes etiquetados no están en entonces ningún vértice en está en (en otras palabras, está vacío).SGSS
Sin embargo, considere un dispositivo asociado con una cláusula que no está satisfecho. En este gadget, las tres etiquetas tienen un valor 0. Sabemos que el borde etiquetado como debe satisfacer , pero , entonces . Por lo tanto, dado que la salida es la misma para ambas entradas, los valores de también deben ser los mismos en los dos conjuntos de entradas. En otras palabras, hemos demostrado que no está en(L1∨L2∨L3)(u,v)Lvout=vin⊕(uin∧L)L=0vout=vin⊕(uin∧L)=vin⊕(uin∧0)=vin⊕0=vinvinvS. Así vemos que en este dispositivo particular, los tres vértices en los puntos finales de destino de los bordes marcados no están en .S
Como resultado, concluimos que está vacío. Sin embargo, esto implica que entre los dos conjuntos de entradas, no hubo diferencias, lo que contradice el supuesto de que estos conjuntos de entradas son diferentes. Como resultado, vemos que la función realizada por el circuito es inyectiva y, por lo tanto, una biyección.SNC03
Todo lo que queda es probar los lemas.
Para hacer esto, notamos que para cada tipo de vértice en (grado 1 con etiqueta, grado 1 sin etiqueta y grado 2), si todos los bordes entrantes provienen de vértices que no están en entonces el vértice en cuestión tampoco está en . Esto se debe a que en los tres casos donde es alguna función de las entradas asociadas con variables y / o vértices con aristas a . Dado que todos estos vértices no están en por suposición, el valor de debe ser el mismo en ambos conjuntos de entradas. Por lo tanto, también es el mismo en ambos conjuntos de entradas. En otras palabrasGSSvout=vin⊕XXvSXvin=vout⊕Xvno está en .S
Ahora que tenemos la regla de que un vértice no está en cuando todos sus predecesores no están en , los lemas siguen simplemente aplicando la regla repetidamente al diagrama de gadgets anterior.SS