Los solucionadores de SAT se están volviendo cada vez más eficientes en la resolución de grandes instancias y se están utilizando como back-end en varios contextos. Cada vez que uno quiere usarlos para resolver un problema en un dominio específico, tiene que encontrar una codificación ad-hoc que no solo tenga el conjunto correcto de soluciones, sino que también ponga las restricciones (incluso redundantes) en una forma eso ayuda a la heurística de los solucionadores a encontrar una solución más rápido.
Muchas de estas codificaciones me parecen muy comunes, por ejemplo: afirmar que un conjunto finito de nodos está vinculado como un árbol, o como un DAG, o se ordena una lista ...
¿Existe un repositorio / libro de recetas de codificaciones comunes para problemas comunes con soluciones optimizadas?
fuente
Respuestas:
Hace unos años leí una encuesta que parece relevante, " Técnicas de codificación SAT exitosas " de Magnus Björk.
Resumen:
fuente
Siempre es una buena idea consultar primero el Manual de satisfacción [1] (supongo que no está disponible de forma gratuita, lo siento). Aquí, el Capítulo 2 se titula "Codificaciones CNF". Por lo menos, el libro proporciona referencias bibliográficas sobre el estado del arte en el momento de la escritura, y puede ampliar su búsqueda a través de ellas.
Además, aquí y aquí hay dos diapositivas recientes sobre el preprocesamiento SAT. Las diapositivas ofrecen una visión general concisa de las técnicas de preprocesamiento y también referencias adicionales. La idea es que en lugar de intentar modelar "manualmente" el problema de una manera eficiente, simplemente modelarlo de la manera más fácil, presionar go, y un software le proporciona una codificación eficiente.
[1] Biere, Armin, Marijn Heule y Hans van Maaren, eds. Manual de satisfacción. Vol. 185. IOS Press, 2009.
fuente
no es exactamente una respuesta directa, sino otro ángulo cada vez más estrechamente relacionado: parte de esto está cubierto por un área de investigación relativamente nueva conocida como SMT, Satisfiability Modulo Theories . La idea básica es combinar codificaciones de problemas (por ejemplo, aritmética de enteros, gráficos, etc.) en el solucionador SAT, pero también usar / aprovechar el conocimiento adicional que proviene de este acoplamiento para construir algoritmos de solución más avanzados. Heres una encuesta. Como se señaló, pueden ser mucho más eficientes que combinar un mecanismo de codificación ad-hoc con solucionadores SAT estándar.
Teorías del módulo de satisfacción: un aperitivo / Leonardo de Moura y Nikolaj Bjørner
fuente