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 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 .
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 . 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.
fuente
Respuestas:
Dada una instancia de SAT, un enterok 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 unk k k 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#P⊆FPSPACE
fuente
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 ψk x x k φ φ 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 ψk M(φ)≥k M(φ) k=m/2 k lgm+1 M(φ) . Cada iteración requiere una consulta a nuestro oráculo para MAJSAT.
fuente