¿Cuál es la complejidad de Median-SAT?

14

Sea una fórmula CNF con n variables y m cláusulas. Supongamos que t { 0 , 1 } n representa una asignación variable y f φ ( t ) { 0 , ... , m } cuenta el número de cláusulas satisfechas por una asignación variable a φ . Luego defina Median-SAT como el problema de calcular el valor mediano de f φ ( t ) sobre todo t } n . Por ejemplo, siφnmt{0,1}nfφ(t){0,,m}φfφ(t)t{0,1}n es una tautología, entonces la solución para Median-SAT será m ya que, independientemente de la asignación, cada cláusula será satisfecha. Sin embargo, en el caso de ¯ S A T, la solución para Median-SAT podría estar entre 0 y mφmSAT¯0 .m1

Esta pregunta surgió cuando estaba considerando dos extensiones naturales de SAT, MAX-SAT y #SAT, y cuál sería la dificultad del problema resultante si se unieran. Para MAX-SAT tenemos que encontrar una asignación de variable particular para maximizar el número de variables satisfechas por . Para #SAT tenemos que contar cuántas asignaciones satisfacen todas las cláusulas m deφm . Esta variante termina principalmente como una extensión de #SAT (y de hecho de#WSAT), pero conserva algo del sabor de MAX-SAT en que contamos el número de cláusulas satisfechas en lugar de solo decidir si todas están satisfechas o no. no.φ

Este problema parece más difícil que #SAT o #WSAT. Para cada asignación variable, #SAT decide el problema booleano de si esa asignación satisface o no, mientras que Median-SAT determina "en qué medida" φ se satisface en términos del número de cláusulas que satisface una asignación.φφ

Me doy cuenta de que este problema es algo arbitrario; calcular el promedio o la cantidad de cláusulas de modo satisfechas por cada asignación variable parece capturar la misma calidad. Probablemente muchos otros problemas también.

¿Se ha estudiado este problema, tal vez bajo una apariencia diferente? ¿Qué tan difícil es en comparación con #SAT? No me queda claro a priori que Median-SAT incluso esté contenido en FPSPACE, aunque parece estar contenido en FEXPTIME.

Huck Bennett
fuente
3
Está en : para cada k m podemos contar el número de asignaciones que satisfacen al menos k cláusulas usando un oráculo #P. FP#PFPSPACEkmk
Colin McQuillan
1
¿@Colin convierte esto en una respuesta?
Suresh Venkat
Sí, esto sería una buena respuesta. ¿Podría explicar cómo consultar el oráculo #P para verificar si se cumplen las cláusulas ? No pude descubrir cómo hacerlo de manera eficiente. km
Huck Bennett
@ Tsuyoshi, ¿cuál es tu definición de SAT? ¿Estamos permitiendo la repetición de cláusulas? o literales y / o variables en una cláusula dada? Porque si no permite la repetición de literales y / o variables en una cláusula determinada, no puede tener una fórmula CNF que sea una tautología ...
Tayfun Pay
@Tayfun - Realmente hice esta pregunta, Tsuyoshi ayudó con una edición menor. Tienes razón sobre una tautología en una fórmula CNF que requiere literales repetidos. Cualquier variante SAT sería interesante, CNF-SAT sin repetición var en cláusulas (en cuyo caso las tautologías son imposibles), o quizás CIRCUIT-SAT en general. No creo que esta elección cambie el sabor de la pregunta.
Huck Bennett

Respuestas:

13

Dada una instancia de SAT, un entero k y una asignación variable, podemos decidir en tiempo polinómico si se cumplen exactamente cláusulas, simplemente contando el número de cláusulas que se cumplen y probando si ese número es igual a k . Por lo tanto, podemos calcular el número total de asignaciones variables que satisfacen exactamente k cláusulas usando unkkk oráculo #P .

Entonces, al igual que Max-SAT, Median-SAT se puede calcular en tiempo polinómico usando un oráculo Esto muestra que el problema está en F P # P#P .FP#PFPSPACE

Colin McQuillan
fuente
Estás absolutamente en lo correcto. Este es un argumento muy limpio, y supongo que es bastante obvio por la definición de #P. Aprendí algo
Huck Bennett
1
Permítanme explicar un poco más sobre esto: Colin dice que debido a que podemos determinar en tiempo polinomial si una asignación variable particular satisface cláusulas, podemos adivinar de manera no determinista una asignación variable y luego contar cuántas rutas de aceptación (es decir, aceptar asignaciones variables) esta consulta había usado el oráculo # P (por definición de # P ). Por iteración a través de k = 1 a m, podemos contar el número medio de cláusulas satisfechos en F P # P .k#P#PFP#P
Huck Bennett
3

Este problema se puede resolver usando lgm+1 invocaciones de un oráculo para MAJSAT.

Deje denotar el valor medio deseado para φ . Para k fijo , defina la fórmula ψ k para que sea cierto para la asignación x iff x satisface al menos k de las cláusulas de φ . Tenga en cuenta que dado φ en forma CNF y dado k , puede construir fácilmente ψ k en forma CNF en tiempo polinómico.M(φ)φkψkxxkφφkψk

Ahora supongamos que tenemos un oráculo para MAJSAT. Al consultarlo con la fórmula nos diría si la mayoría de las asignaciones hacen que la fórmula ψ k sea verdadera, o de manera equivalente, si M ( φ ) k . Entonces, para aprender M ( φ ) , aplique la búsqueda binaria (comience con k = m / 2 , luego aumente o disminuya k de acuerdo con los resultados del oráculo). Después de lg m + 1 iteraciones, la búsqueda binaria revela el valor de M ( φ )ψkψkM(φ)kM(φ)k=m/2klgm+1M(φ). Cada iteración requiere una consulta a nuestro oráculo para MAJSAT.

DW
fuente