Complejidad de calcular la paridad de la fórmula CNF de lectura dos veces opuesta (

11

En una fórmula CNF de lectura dos veces opuesta, cada variable aparece dos veces, una vez positiva y otra negativa.

Estoy interesado en el problema , que consiste en calcular la paridad del número de asignaciones satisfactorias de una fórmula CNF de lectura dos veces opuesta.Rtw-Opp-CNF

No pude encontrar ninguna referencia sobre la complejidad de tal problema. Lo más cercano que pude encontrar es que la versión de conteo es # P -completa (consulte la sección 6.3 de este documento ).#Rtw-Opp-CNF#P

Gracias de antemano por tu ayuda.


Actualización 10 de abril de 2016

  • En este documento , se muestra que el problema es P- completo, sin embargo, la fórmula producida por la reducción de 3 SAT no está en CNF, y tan pronto como intentas convertirlo nuevamente en CNF obtienes un Fórmula de lectura tres veces.Rtw-Opp-SATP3SAT
  • La versión monótona se muestra como P -completa en este documento . En dicho documento, Rtw-Opp-CNF se menciona rápidamente al final de la sección 4: Valiant dice que está degenerado. No me queda claro qué significa exactamente ser degenerado, ni qué implica en términos de dureza.Rtw-Mon-CNFPRtw-Opp-CNF

Actualización 12 de abril de 2016

También sería muy interesante saber si alguien ha estudiado alguna vez la complejidad del problema . Dada una fórmula CNF de lectura dos veces opuesta, dicho problema requiere calcular la diferencia entre el número de asignaciones satisfactorias que tienen un número impar de variables establecidas en verdadero y el número de asignaciones satisfactorias que tienen un número par de variables establecidas en verdadero. No he encontrado ninguna literatura al respecto.ΔRtw-Opp-CNF


Actualización 29 de mayo de 2016

Como señaló Emil Jeřábek en su comentario, no es cierto que Valiant haya dicho que el problema es degenerado. Solo dijo que una versión más restringida de ese problema, Pl-Rtw-Opp-3CNF , es degenerada. Mientras tanto, sigo sin saber qué significa exactamente degenerar, pero al menos ahora parece claro que es sinónimo de falta de poder expresivo.Rtw-Opp-CNFPl-Rtw-Opp-3CNF

Giorgio Camerani
fuente
⊕Rtw-Opp-CNF es tan difícil como ⊕Rtw-Mon-CNF. Puede compilar el gadget de negación: (i0 v x0 v x1) (x1 v x2) (i1 v x0 v x2). Si i0 = i1, entonces peso = 0 (en el módulo 2). De lo contrario, peso = 1.
No puedo encontrar la reducción de ⊕Rtw-Mon-CNF a ⊕Rtw-Opp-CNF, pero encontré un algoritmo polinómico para resolver ⊕Rtw-Opp-CNF. Entonces ⊕Rtw-Opp-CNF es más simple.
No puedo encontrar una mención de ⊕Rtw-Opp-CNF en el artículo de Valiant. Afirma que ⊕Pl-Rtw-Opp-3CNF está "degenerado", pero eso implica varias restricciones adicionales.
Emil Jeřábek
@ EmilJeřábek: Definitivamente tienes razón. Fui engañado por mi ignorancia del significado de "degenerar" , y apliqué el mismo tipo de razonamiento que normalmente se aplica en presencia de resultados completos: si cierto problema está completo para alguna clase, eliminar las restricciones de él obviamente conserva la integridad. Incluso si todavía no sé qué significa exactamente "degenerar" , al menos ahora me queda claro que ese término es de alguna manera sinónimo de debilidad (es decir, falta de poder expresivo), por lo tanto, el razonamiento antes mencionado no puede aplicarse. He corregido la pregunta en consecuencia.
Giorgio Camerani
1
@Maciej: ¿En serio? ¿Cómo funciona tu algoritmo polinomial?
Giorgio Camerani

Respuestas:

3

Resulta que cada fórmula de lectura doble opuesta tiene un número par de tareas satisfactorias. Aquí hay una buena prueba de ello, aunque probablemente se podría eliminar la terminología de la teoría de grafos.

Sea una fórmula CNF de lectura opuesta dos veces. Sin pérdida de generalidad, ninguna cláusula contiene tanto una variable como su negación.ϕ

Considere el gráfico cuyo conjunto de vértices son las cláusulas de ϕ , y para cada variable x , agregamos un borde (no dirigido) que incide en las dos cláusulas que contienen x . Nuestra suposición de WLOG en ϕ dice que este gráfico no tiene bucles automáticos. Además, piense en etiquetar cada borde por la variable que lo define; De esta manera podemos distinguir entre aristas paralelas.Gϕxxϕ

Una orientación de es un gráfico dirigido cuyos bordes están formados mediante la asignación de una dirección a cada borde en G . Llame a una orientación de G admisible si cada vértice de G tiene un borde saliente. Es fácil ver que satisfagan las asignaciones a φ están en correspondencia biyectiva con las orientaciones admisibles de G .GGG GϕG

Ahora afirmo que el número de orientaciones admisibles de es par. El argumento es "por involución": construyo un mapa Φ con las siguientes propiedades:GΦ

  1. está totalmente definido (cada orientación admisible está asignada en algún lugar)Φ
  2. envía orientaciones admisibles a orientaciones admisiblesΦ
  3. es una involución ( Φ Φ es la identidad)ΦΦΦ
  4. no tiene puntos fijosΦ

Una vez que estos se establecen, podemos observar que las órbitas de tienen un tamaño de 2 y una partición de las orientaciones admisibles de G . De ello se deduce que el número de orientaciones admisibles es par.ΦG

Para definir , deje que G sea ​​una orientación admisible y considere dividir G en sus componentes fuertemente conectados. Sends luego envía G a la orientación formada al invertir todos los bordes dentro de los componentes fuertemente conectados. Las propiedades se verifican directamente:ΦGGΦG

  1. Cada gráfico dirigido se puede dividir en componentes fuertemente conectados.
  2. Considere el "DAG de componentes fuertemente conectados" en ; llámalo el gráfico del cociente. Tenga en cuenta que Φ ( G ) tendrá la misma estructura de cociente, ya que Φ no afecta los bordes entre los SCC, y los gráficos fuertemente conectados permanecen fuertemente conectados al invertir todos sus bordes. Además, si un SCC tiene más de un vértice, todos sus vértices constituyentes tienen un borde entrante. Si un SCC tiene un solo vértice y no es una fuente en el cociente, entonces todos sus vértices constituyentes tienen un borde entrante. Entonces para mostrar Φ ( G )GΦ(G)ΦΦ(G)G
  3. Φ(G)G
  4. G
Andrew Morgan
fuente
Buena observación! Una forma más simple de ver esto (como usted dice, "eliminar la terminología de la teoría de grafos") es observar que si una asignación a satisface F, entonces la asignación a '(x) = 1-a (x) también satisface F. Esto se puede mostrar fácilmente por inducción en el número de variables de F.
holf
Φ01203101200310
x¬xy¬z¬yz(1,1,1)(0,0,0)
ΦMxyxxyM
@Emil: Ah sí, tienes razón. Si entiendo bien su sugerencia, está diciendo dividir la orientación en componentes fuertemente conectados e invertir los bordes dentro de los componentes. Creo que esto funciona. Actualizaré mi respuesta en consecuencia. ¡¡Muchas gracias!!
Andrew Morgan
0

No estoy seguro de si mi idea es comprensible, así que explicaré el ejemplo de Giorgio:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

Primero necesito cambiar esto en el formulario DNF:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

Esto debería dar la misma respuesta. Y no importa si calculo el número de soluciones del módulo 2 para esto:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

o para esto:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

Así que elijo el segundo. Tengo implicantes:

i0(x1x2x3)

i1(¬x1¬x3x4)

i2(¬x4x5)

i3(¬x2¬x5¬x6)

Ahora estoy construyendo un sistema de ecuaciones:

j0j1=1

j0j3=1

j0j1=1

j2j3=1

j3=1

x6

Maciej
fuente
Si mi pensamiento está bien, entonces la respuesta es "no". Por supuesto, supongo que la variable ocurre una vez en positivo y otra en negación.
Maciej
x4j1j2j3j2j1j0
-1

Rtw-Opp-CNFf(X)g(X)f(X)g(X)f(X)g(X)

i0i1i2...in1

ijx0x1¬x2

2ki0i1i2...in1

i0i1i2...in1

ab=ab(ab)

1) tiene todas las variables,

2) cada variable ocurre exactamente una (si la variable ocurre dos veces, entonces tenemos positivo y negativo en un implicante, por lo que esto dará como 0).

x0i0x0i1

j0j1=1

j0j1i0i1i0j0j02l

Maciej
fuente
Rtw-Opp-CNF
@ AndrewMorgan Pero una fórmula con una cláusula única que contenga todas las variables exactamente una vez no sería una fórmula de lectura doble. La restricción es exactamente dos veces, no como máximo dos veces.
Giorgio Camerani
x6(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)x6
(x1x2)(x1¯)(x2¯)(x1x2)(x1¯x2¯)(x1)(x1¯)(x2)(x2¯)
@ AndrewMorgan OK, ahora veo. Sin embargo, tenga en cuenta que también en la familia de casos a los que se refería, el número de tareas satisfactorias parece mantenerse incluso. La pregunta planteada por Maciej en su comentario resulta desafiante.
Giorgio Camerani