En la teoría de la complejidad computacional , el problema de máxima satisfacibilidad ( MAX-SAT ) es el problema de determinar el número máximo de cláusulas, de una fórmula booleana dada en forma normal conjuntiva , que pueden hacerse verdaderas mediante una asignación de valores de verdad a las variables de la formula. Es una generalización del problema booleano de satisfacibilidad , que pregunta si existe una asignación de verdad que haga verdaderas todas las cláusulas.
La fórmula de la forma normal conjuntiva.
no es satisfactoria: no importa qué valores de verdad se asignen a sus dos variables, al menos una de sus cuatro cláusulas será falsa. Sin embargo, es posible asignar valores de verdad de tal manera que tres de cuatro cláusulas sean verdaderas; de hecho, toda asignación de verdad hará esto. Por tanto, si se da esta fórmula como un ejemplo del problema MAX-SAT, la solución al problema es la número tres.
El problema MAX-SAT es OptP-completo, [1] y por lo tanto NP-difícil , ya que su solución conduce fácilmente a la solución del problema de satisfacibilidad booleano , que es NP-completo .
También es difícil encontrar una solución aproximada del problema que satisfaga una serie de cláusulas dentro de un ratio de aproximación garantizado de la solución óptima. Más precisamente, el problema es APX completo y, por lo tanto, no admite un esquema de aproximación en tiempo polinómico a menos que P = NP. [2] [3] [4]
De manera más general, se puede definir una versión ponderada de MAX-SAT de la siguiente manera: dada una fórmula conjuntiva en forma normal con pesos no negativos asignados a cada cláusula, encontrar valores de verdad para sus variables que maximicen el peso combinado de las cláusulas satisfechas. El problema MAX-SAT es un ejemplo de MAX-SAT ponderado donde todos los pesos son 1. [5] [6] [7]
Asignar aleatoriamente cada variable para que sea verdadera con probabilidad 1/2 da una aproximación 2 esperada . Más precisamente, si cada cláusula tiene al menos k variables, entonces esto produce una aproximación (1 − 2 − k ). [8] Este algoritmo se puede desaleatorizar utilizando el método de probabilidades condicionales . [9]
MAX-SAT también se puede expresar utilizando un programa lineal entero (ILP). Fije una fórmula de forma normal conjuntiva F con variables x 1 , x 2 , ..., x n , y sea C las cláusulas de F . Para cada cláusula c en C , sean S + c y S − c los conjuntos de variables que no se niegan en c y las que se niegan en c , respectivamente. Las variables y x del ILP corresponderán a las variables de la fórmula F , mientras que las variables z c corresponderán a las cláusulas. El ILP es el siguiente:
El programa anterior se puede relajar al siguiente programa lineal L :
El siguiente algoritmo que utiliza esa relajación es una aproximación esperada (1-1/ e ): [10]
Este algoritmo también se puede desaleatorizar utilizando el método de probabilidades condicionales.
El algoritmo de aproximación 1/2 funciona mejor cuando las cláusulas son grandes, mientras que la aproximación (1-1/ e ) funciona mejor cuando las cláusulas son pequeñas. Se pueden combinar de la siguiente manera:
Esta es una aproximación de factor determinista (3/4). [11]
sobre la fórmula
donde , la aproximación (1-1/ e ) establecerá cada variable en Verdadero con probabilidad 1/2 y, por lo tanto, se comportará de manera idéntica a la aproximación 1/2. Suponiendo que la asignación de x se elige primero durante la desrandomización, los algoritmos desrandomizados elegirán una solución con peso total , mientras que la solución óptima tiene peso . [12]
Durante los últimos años se han desarrollado muchos solucionadores exactos para MAX-SAT, y muchos de ellos se presentaron en la conocida conferencia sobre el problema de satisfacibilidad booleana y problemas relacionados, la Conferencia SAT. En 2006, la Conferencia SAT organizó la primera evaluación MAX-SAT que compara el rendimiento de solucionadores prácticos para MAX-SAT, como lo ha hecho en el pasado para el problema de satisfacibilidad pseudobooleano y el problema de fórmula booleana cuantificada . Debido a su dureza NP, las instancias MAX-SAT de gran tamaño en general no pueden resolverse exactamente y, a menudo, es necesario recurrir a algoritmos de aproximación y heurísticas [13].
Hay varios solucionadores presentados a las últimas Evaluaciones Max-SAT:
MAX-SAT es una de las extensiones de optimización del problema de satisfacibilidad booleana , que es el problema de determinar si las variables de una fórmula booleana determinada se pueden asignar de tal manera que la fórmula se evalúe como VERDADERA. Si las cláusulas se restringen a tener como máximo 2 literales, como en 2-satisfactability , obtenemos el problema MAX-2SAT . Si se restringen a un máximo de 3 literales por cláusula, como en 3-satisfability , obtenemos el problema MAX-3SAT .
Hay muchos problemas relacionados con la satisfacibilidad de fórmulas booleanas de forma normal conjuntiva.