Esto es similar a SAT, excepto que conocemos la asignación de cada variable, pero no conocemos la asignación de ningún operador booleano. En ese caso, ¿encontrar la asignación de cada operador para que la expresión evalúe un valor booleano dado es un problema NPC?
En realidad, me preguntaba si encontrar asignación de operadores aritméticos para satisfacer una expresión aritmética entera (por ejemplo, = 10) ¿NP está completo?
cc.complexity-theory
np-hardness
DSounders
fuente
fuente
Respuestas:
Con la suma y la resta, creo que el problema de Partición , que es NP-hard, se reduce a su segundo problema.
Dado un conjunto creamos el problemaS={s1,s2,…,sn}
o p 1 s 2 o p 2 s 3 o p 3 … o p n - 1 s n = 0 .s1 op1 s2 op2 s3 op3 …opn−1 sn=0
Si existe una solución, creamos dos conjuntos:
Estos dos conjuntos tienen que tener la misma suma por la configuración de nuestro problema original, por lo que el problema de partición está resuelto. Esto muestra que no solo es difícil encontrar la solución real a este problema, de hecho es NP difícil determinar si existe una solución (al menos para sumar y restar).
Para un conjunto de operaciones que no permite la creación de enteros negativos, digamos multiplicación y suma, no está tan claro. Además, esto solo muestra que el problema es débilmente NP-duro; puede haber una reducción que dé un resultado más fuerte que esto.
fuente
Respuesta corta. La versión del operador de SAT se puede resolver de manera eficiente, al menos, si asumimos circuitos arbitrarios de puertas de dos entradas sin despliegue, sobre cualquier elección deseada de conjunto de puertas.
Respuesta larga. Asumo la siguiente forma del problema booleano:
En particular, no imponemos una estructura particular en los circuitos (aparte de ser árboles binarios), no permitimos el despliegue (por lo que cada bit de se usa solo una vez), y las puertas pueden ser asimétricas. Al permitir solo compuertas de dos bits, excluyo la compuerta NOT (pero que puede simularse teniendo múltiples compuertas que están relacionadas entre sí por negaciones, como AND / NAND ; y también excluyo compuertas que simplemente generan constantes sin entradas , de modo que el número de compuertas en el circuito de hecho siempre será para una entrada de bits. En aras de la brevedad, me referiré a 2-TREE-OPSAT a continuación simplemente como OPSATx n - 1 nC x n−1 n ; aunque el análisis del problema puede ser mucho más difícil para los circuitos que permiten puertas de entrada k arbitrarias ( k-TREE-OPSAT ) o que permiten el despliegue (que podríamos llamar k-FANOUT-OPSAT ).
[ Editado para agregar : podemos adaptar esto fácilmente para considerar el problema más general de la revisión actual de su pregunta, en la que intentamos asignar una dada a un valor objetivo , intercambiando los roles de y en el análisis a continuación; esto tiene el efecto de intercambiar los roles de AND y OR , NAND y NOR , etc. ] b ∈ { 0 , 1 } 0 1x∈{0,1}∗ b∈{0,1} 0 1
Para una elección fija de , el problema de elegir un árbol adecuado con puertas adecuadas no es diferente de una disyunción lógica: usar equivalencias como podemos realizar reducciones entre colecciones que relacionan conjuntos de compuertas más complicados con conjuntos de compuertas simples (y potentes); a puede hablar de que un conjunto de compuerta puede emular otras compuertas que no pertenecen al conjunto, eligiendo sabiamente algún elemento de que tenga el mismo efecto (cuando se presenta con una entrada particular) como una compuerta . En particular, ciertas combinaciones de compuertas (como ) pueden simular la función constante que producex∈{0,1}n
Procedemos considerando conjuntos de compuertas que incluyen diferentes tipos de compuertas , más tarde excluyendo esas compuertas de casos posteriores del análisis, para mostrar que los conjuntos de compuertas que involucran a cualquiera de las compuertas conducen a un problema tratable. Procederemos en el orden del número de cadenas de dos bits que satisfacen la puerta en cuestión, comenzando desde la puerta constante hasta la puerta constante .G 1 0
Para cualquier conjunto de compuerta que contenga la compuerta constante , simplemente podemos construir un circuito utilizando esa compuerta sola, en cuyo caso acepta cualquier .G G(x,y)=1 C C x
O y NAND. Para cualquier conjunto de compuerta que contenga : si todas las demás compuertas satisfacen , entonces no hay ventaja en elegir otra compuerta pero en la construcción del circuito . Un circuito de solo puertas acepta cualquier cadena excepto . De lo contrario, existe una puerta tal que es tautóloga. Entonces, cualquier instancia de OPSAT con es fácil; y observaciones similares se aplican para .G OR G∈G G(x,y)⟹OR(x,y) OR C OR x∈0∗ G∈G {G,OR} OR∈G NAND∈G
Puertas de implicación. Considere la puerta , que solo genera cero si . Para lo que sigue, se aplicará un análisis similar para la puerta . Considere cualquier cadena . Si termina en , descomponga en subcadenas de la forma ; en cada uno de estos , aplicamos recursivamente de derecha a izquierda, lo que produce la salida para cada . (Para una subcadena de longitud 1, usamos el circuito trivial, es decir, dejamos esa entrada sola). De manera similar, siG(x,y)=¬x∨y (x,y)=(1,0) G′(x,y)=x∨¬y
x∈{0,1}n x 0 x wj=1∗0 wj G 0 wj x termina en , descompone en subcadenas de la forma , y aplica recursivamente de izquierda a derecha en cada , lo que produce la salida para cada . Así, podemos reducir el problema a la construcción de circuitos que están satisfechos, ya sea por o , donde es el número de subseries o . Para , podemos aceptar ya sea usando puertas aplicando de forma recursiva de izquierda a derecha. Esto solo deja el caso1 x wj=0∗1 G wj 1 wj 0m 1m m 1∗0 0∗1 m⩾2 G G m=1 , para el cual el caso problemático son entradas . Para , cualquier circuito que consista solo en compuertas solo producirá cadenas más cortas de la forma , en última instancia, arrojará la cadena de un solo bit : de modo que ningún circuito de compuertas pueda satisfacerse esta entrada Si también hay una puerta para la cual , entonces es tautóloga; o, si hay una puerta para la cual , podemos reducir las cadenas de la formax∈1∗0
x=1∗0 G 1∗0 0 G H∈G H(1,0)=1 {G,H} H∈G H(1,1)=0 11∗0 a cadenas de la forma , aplicando a los primeros dos bits de . De lo contrario, no se puede construir un circuito que acepte .
Por lo tanto, para cualquier gate-set que contenga una compuerta de implicación, OPSAT es fácil.(1∗0)∗ H x x∈1∗0
G
Negaciones de proyecciones. Considere las puertas y . Consideramos , el análisis con es similar. Por sí solo, puede aceptar cualquier cadena en para al reducir los bits finales a un solo bit y luego aplicar ; y puede aceptar de manera similar para reduciendo los bits finales a un solo bit y luego aplicando el circuito¬π1(x,y)=¬x ¬π2(x,y)=¬y ¬π1 ¬π2 ¬π1 0(0|1)n−1 n⩾2 n−1 ¬π1 1(0|1)n−1 n⩾3 n−2 ¬π1(¬π1(x1,x2),x3) . Las únicas entradas que los circuitos no pueden aceptar son entonces u ; determinar si alguna puerta suplementaria los acepta es trivial. Por lo tanto, OPSAT es fácil para las negaciones de proyecciones.¬π1 10 11
PARIDAD E IGUALDAD . Considere la puerta . El conjunto de puertas obviamente solo puede satisfacerse con precisión mediante cadenas con un número impar de 1s; Consideramos el beneficio de agregar cualquier otra puerta.PARITY(x,y)=(x∨¬y)∧(¬x∨y) G={PARITY} x∈{0,1}n
Por lo tanto, OPSAT es fácil para cualquier contenga . Se aplica un análisis similar para la puerta como para la puerta : porque , circuitos Las puertas de cuentan esencialmente la paridad del número de s en la entrada. Entonces podemos reducir el análisis para al de intercambiando y .G PARITY
EQUAL PARITY EQUAL(x,y)=¬PARITY(x,y)=¬PARITY(¬x,¬y) EQUAL 0 EQUAL PARITY 0 1
Puertas de proyección. Las puertas y , tomadas solas, solo pueden construir circuitos que acepten cadenas que comiencen o terminen en , respectivamente. Considere el efecto de aumentar la puerta con cualquier otra puerta (un análisis similar es válido para ):π1(x,y)=x π2(x,y)=y 1 π1 π2
Por lo tanto, para cualquier otra puerta con la que podamos complementar (o ), obtenemos un conjunto , no obtenemos poder de aceptación adicional sobre solo (o ), o podemos reducirlo a un caso fácil anterior de OPSAT . Entonces, cualquier instancia de OPSAT con o es fácil.π1 π2 π1 π2 π1∈G π2∈G
Puertas con función Delta. Considere las compuertas de dos bits para las cuales solo hay una entrada que las satisface: , , , y . Los circuitos hechos solo con compuertas solo pueden aceptar la cadena : complementarlos con cualquier otra compuerta de función delta les permite simular , o , que son casos resueltos; observaciones similares se aplican a . Además, el conjunto de puertas se puede utilizar para simular también laAND NOR G10(x,y)=x∧¬y G01(x,y)=¬x∧y AND 1∗ EQUAL π1 π2 NOR {G01,G10} PARITY portón. Por lo tanto, podemos centrarnos en la puerta o , posiblemente complementada con la puerta . Nos centramos en , siendo el caso de similar. Los circuitos hechos de solo se pueden construir para aceptar , excepto para la cadena , aplicando un circuito arbitrario a los bits finales y luego aplicando el circuito . Claramente, la cadena no puede ser aceptada por o por ; y podemos demostrar por inducción que cualquierG10 G01 Z(x,y)=0 G10 G01
G10 1(0|1)n−1 11 n−2 G10(x1,G10(x2,x3)) 11 G10 Z G10 El circuito que acepta una cadena debe tener resultados intermedios de las compuertas en la rama más a la izquierda, todos con un , hasta la entrada más a la izquierda. No se obtienen beneficios adicionales al agregar puertasPor lo tanto, los circuitos solo pueden aceptar .1 Z G10 x∈1(0|10|11)(0|1)∗
Finalmente, los circuitos compuestos solo por puertas no aceptan entradas.Z
Como cada puerta da lugar a una clase de entradas bien definida y, en general bastante grandes que acepta, con puertas adicionales que tienden a trivializar el problema, nos encontramos con que 2-ÁRBOL-OPSAT está en P .
fuente