¿Qué tan eficientes son los solucionadores de SAT basados ​​en DPLL en instancias satisfactorias de PHP?


15

Sabemos que los solucionadores de SAT basados ​​en DPLL no responden correctamente en casos insatisfactorios de (principio del agujero de paloma), por ejemplo, "hay un mapeo inyectivo de n + 1 a n ":PAGHPAGnorte+1norte

PAGHPAGnortenorte+1: =(yo[norte+1] j[norte] pagyo,j)(yoyo[norte+1] j[norte] (¬pagyo,j¬pagyo,j))

Estoy buscando resultados sobre cómo funcionan en instancias satisfactorias de , por ejemplo, "hay un mapeo inyectivo de n a n ".PAGHPAGnortenorte

¿Encuentran una tarea satisfactoria rápidamente en tales casos?


1
Por "no responder correctamente", ¿quiere decir "quedarse sin recursos en valores suficientemente grandes de n"?
Vijay D

@Kaveh ¿Estás permitiendo la repetición de cláusulas y / o la repetición de variables en la misma cláusula? Gracias
Tayfun Pay

@VijayD, quiero decir que el algoritmo no devuelve una respuesta correcta en tiempo polinómico para suficientemente grande . Espero que se pueda demostrar que un algoritmo basado en DPLL funcionaría en tiempo polinómico en esta familia. norte
Kaveh

@Geekster, no estoy seguro de lo que quieres decir. Tengo una familia particular de fórmulas. ¿Estás preguntando si hay una repetición en esa fórmula?
Kaveh

Respuestas:


14

En casos satisfactorios de , los solucionadores SAT basados ​​en DPLL proporcionarán una asignación satisfactoria en tiempo lineal.PAGHPAG

Para ver por qué, observe cómo la codificación CNF de una instancia insatisfactoria de con n agujeros y n + 1 palomas es sintacticamente idéntica a una instancia de k = n Graph Coloring, donde el gráfico de entrada es una camarilla de n + 1 vértices .PAGHPAGnortenorte+1k=nortenorte+1

De manera similar, la codificación CNF de una instancia satisfactoria de con n agujeros y n palomas es sintacticamente idéntica a una instancia de k = n Graph Coloring, donde el gráfico de entrada es una camarilla de n vértices.PAGHPAGnortenortek=nortenorte

Ahora, colorear una camarilla de vértices con n colores es sencillo: escanee los vértices y asigne a cada uno de ellos uno de los colores restantes (los colores ya asignados se descartan automáticamente por la cadencia del gráfico, utilizando la propagación unitaria) . Cualquiera que sea el color restante que elija, será bueno y lo llevará a una tarea satisfactoria.nortenorte

Desde el punto de vista del solucionador DPLL: cada vez que intente adivinar el valor booleano de una variable , dicho valor será correcto (sea lo que sea), porque ciertamente habrá una asignación satisfactoria en la que la variable v i tiene el valor adivinado La propagación de la unidad hará el resto del trabajo, guiando al solucionador a lo largo del camino satisfactorio (en otras palabras: evitando que adivine valores incorrectos).vyovyo

La búsqueda luego continúa una variable después de la otra, linealmente, cada vez haciendo la suposición correcta.


Gracias, esto es lo que esperaba. Por cierto, ¿conoce una referencia que indique esto (es decir, "el algoritmo DPLL resuelve las instancias satisfactorias de PHP / GC en tiempo lineal")?
Kaveh

1
De nada. No conozco ninguna referencia que indique esto, solo la he derivado yo mismo a través de un razonamiento en bruto. No debería ser difícil demostrarlo formalmente, confiando en el hecho de que cada solucionador de SAT utiliza alguna heurística razonable tanto para elegir la siguiente variable como para adivinar su valor booleano. Debe observarse, de hecho, que existe al menos una heurística irrazonable que nos impide llegar a una solución en el tiempo lineal (una heurística tan irracional sería establecer en falso cada variable, hasta que sea posible). Mientras que con una heurística razonable, el tiempo lineal está asegurado.
Giorgio Camerani

Estoy de acuerdo. Espero que alguien haya dicho esto en algún lugar para poder citar cuando lo necesite. Me gustaría esperar unos días más y si nadie da una referencia, aceptaré esta respuesta. Gracias de nuevo. :)
Kaveh

Un placer ;-) Saludos!
Giorgio Camerani
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.