Está en la página 1de 3

¿Cómo puedo expresar problemas de programación en minisat?

Pedido Hace 6 años, 11 meses

Activo hace 4 años, 6 meses

Visto 2k veces

https://stackoverflow.com/questions/27507206/how-can-i-express-scheduling-problems-in-
minisat/27532607

Minisat es una herramienta de programación / satisfacción de restricciones, hay una


versión de Minisat que funciona aquí en el
navegador http://www.msoos.org/2013/09/minisat-in-your-browser/

¿Cómo puedo expresar un problema de programación con Minisat? ¿Existe un


lenguaje de nivel superior que compile a Minisat que me permita expresarlo?

Me refiero a resolver problemas como el horario de


exámenes. http://docs.jboss.org/drools/release/6.1.0.Final/optaplanner-
docs/html_single/#examination
Otro lenguaje de modelado de alto nivel es Picat ( http://picat-lang.org/ ), que tiene una
opción para resolver / 2 para convertir a CNF cuando se usa el módulo sat, por ejemplo,
"solve ([dump], Vars)". La sintaxis cuando se usa el módulo sat, así como para los módulos
cp y mip, es similar a la sintaxis estándar de CLP.

Para ver algunos ejemplos de Picat, consulte mi página de


Picat: http://hakank.org/picat/ .
Cuota
Seguir
Fuente CompartirCrear 17 dic.

hakank
5.64711 insignia de oro1717 insignias de plata2525 insignias de bronce
• 2
Estoy aprendiendo minizinc, y reconozco que su sitio es el mejor recurso (así como sus
respuestas aquí en SO) ... lamentablemente, algunos días no responde ... De todos modos,
su repositorio de github todavía está disponible. Gracias
- CapelliC
22 de enero de 2015 a las 8:41
• @CapelliC: Gracias por sus amables palabras. Mi sitio hakank.org está caído en este momento,
pero hago todo lo posible para solucionarlo lo antes posible. Genial que hayas encontrado el
repositorio de GitHub.
- hakank
22/01/15 a las 16:54
Añadir un comentario
4
Los solucionadores de SAT como Minisat o Cryptominisat suelen leer un conjunto de
cláusulas de ORexpresiones lógicas en forma normal conjuntiva (CNF) . Se necesita
un paso de codificación para traducir su problema a este formato CNF.

Los solucionadores de circuitos SAT procesan una expresión booleana anidada en lugar
de una CNF. Pero parece que este tipo de solucionadores hoy en día es superado por los
solucionadores CNF SAT.

Los solucionadores de programación de restricciones como Minizinc utilizan un lenguaje


de alto nivel que es más fácil de escribir y comprender. Dependiendo de las funciones que
se utilicen, Minizinc puede traducir su idioma de entrada a un CNF/DIMACSformato
adecuado para un solucionador SAT.

El artículo de Peter Stuckey " No hay problemas de CNF " explica la


idea. Sus diapositivas también contienen algunas ideas sobre la programación.

Eche un vistazo a los ejemplos de programación de Minizinc escritos por Hakan


Kjellerstrand .

Scheduling and SAT de Emmanuel Hebrard es un tratamiento extenso del tema.


Cuota
Seguir
Editado el 13 de abril de 2017 a las 12:19

Comunidad Bot
111 insignia de plata
contestada 16 de Dic '14 a las 21:43

Axel Kemper
8.35922 insignias de oro2727 insignias de plata5050 insignias de bronce
Añadir un comentario
0
Trabajé en este proyecto hace unos meses.

Fue muy interesante de hacer.

Para utilizar miniSAT (o cualquier otro solucionador de SAT), tendrá que reducir el
problema de programación a un problema de SAT.

Puedo recomendarle esta pregunta que le hice en 3 partes.

Programación de clases para la satisfacibilidad booleana [Reducción del tiempo


polinomial]

Programación de clases para la satisfacibilidad booleana [Reducción del tiempo


polinómico] parte 2

Programación de clases para la satisfacibilidad booleana [Reducción del tiempo


polinomial] Parte final

Y básicamente verá, paso a paso, cómo transformar el problema de programación en un


problema de SAT que MiniSAT puede leer y resolver :).

Gracias de nuevo a @ amit, que fue de gran ayuda en este proyecto.

Con esta respuesta, podrá resolver N aulas con T profesores, que están enseñando S
asignaturas a G diferentes grupos de estudiantes :) que creo que es suficiente para el 99%
de los problemas de programación.

También podría gustarte