stringtranslate.com

Solucionador SAT

En informática y métodos formales , un solucionador SAT es un programa informático que tiene como objetivo resolver el problema de satisfacibilidad booleano . Al ingresar una fórmula sobre variables booleanas , como "( x o y ) y ( x o no y )", un solucionador SAT muestra si la fórmula es satisfacible , lo que significa que hay posibles valores de x e y que hacen que la fórmula sea verdadera, o insatisfacible, lo que significa que no existen tales valores de x e y . En este caso, la fórmula es satisfacible cuando x es verdadera, por lo que el solucionador debe devolver "satisfacible". Desde la introducción de algoritmos para SAT en la década de 1960, los solucionadores SAT modernos se han convertido en artefactos de software complejos que involucran una gran cantidad de heurísticas y optimizaciones de programas para funcionar de manera eficiente.

Según un resultado conocido como el teorema de Cook-Levin , la satisfacibilidad booleana es un problema NP-completo en general. Como resultado, solo se conocen algoritmos con complejidad exponencial en el peor de los casos. A pesar de esto, durante la década de 2000 se desarrollaron algoritmos eficientes y escalables para SAT, que han contribuido a avances espectaculares en la capacidad de resolver automáticamente instancias de problemas que involucran decenas de miles de variables y millones de restricciones. [1]

Los solucionadores SAT suelen comenzar convirtiendo una fórmula a la forma normal conjuntiva . A menudo se basan en algoritmos básicos como el algoritmo DPLL , pero incorporan una serie de extensiones y características. La mayoría de los solucionadores SAT incluyen tiempos de espera, por lo que finalizarán en un tiempo razonable incluso si no pueden encontrar una solución con un resultado como "desconocido". A menudo, los solucionadores SAT no solo brindan una respuesta, sino que pueden brindar información adicional, incluida una asignación de ejemplo (valores para x , y , etc.) en caso de que la fórmula sea satisfacible o un conjunto mínimo de cláusulas insatisfacibles si la fórmula es insatisfacible.

Los solucionadores SAT modernos han tenido un impacto significativo en campos como la verificación de software , el análisis de programas , la resolución de restricciones , la inteligencia artificial , la automatización del diseño electrónico y la investigación de operaciones . Los solucionadores potentes están disponibles como software gratuito y de código abierto y están integrados en algunos lenguajes de programación, como la exposición de los solucionadores SAT como restricciones en la programación de lógica de restricciones .

Descripción general

Una fórmula booleana es cualquier expresión que se pueda escribir utilizando variables booleanas (proposicionales) x, y, z, ... y las operaciones booleanas AND, OR y NOT. Por ejemplo,

( x Y y ) O ( x Y (NO z ))

Una asignación consiste en elegir, para cada variable, una asignación VERDADERA o FALSA. Para cualquier asignación v , se puede evaluar la fórmula booleana, que se evalúa como verdadera o falsa. La fórmula es satisfacible si existe una asignación (denominada asignación satisfactoria ) para la que la fórmula se evalúa como verdadera.

El problema de satisfacibilidad booleana es un problema de decisión que pide, a partir de una fórmula booleana, determinar si la fórmula es satisfacible o no. Este problema es NP-completo .

Algoritmos básicos

Los solucionadores SAT generalmente se desarrollan utilizando uno de dos enfoques principales: el algoritmo Davis–Putnam–Logemann–Loveland (DPLL) y el aprendizaje de cláusulas impulsado por conflictos (CDCL).

DPLL

Un solucionador SAT DPLL emplea un procedimiento sistemático de búsqueda de retroceso para explorar el espacio (de tamaño exponencial) de asignaciones de variables en busca de asignaciones satisfactorias. El procedimiento de búsqueda básico se propuso en dos artículos fundamentales a principios de la década de 1960 (consulte las referencias a continuación) y ahora se lo conoce comúnmente como el algoritmo DPLL . [2] [3] Muchos enfoques modernos para la resolución práctica de SAT se derivan del algoritmo DPLL y comparten la misma estructura. A menudo, solo mejoran la eficiencia de ciertas clases de problemas SAT, como instancias que aparecen en aplicaciones industriales o instancias generadas aleatoriamente. [4] Teóricamente, se han demostrado límites inferiores exponenciales para la familia de algoritmos DPLL. [ cita requerida ]

CDCL

Los solucionadores SAT modernos (desarrollados en la década de 2000) vienen en dos versiones: "basados ​​en conflictos" y "anticipados". Ambos enfoques descienden de DPLL. [4] Los solucionadores basados ​​en conflictos, como el aprendizaje de cláusulas basado en conflictos (CDCL), amplían el algoritmo de búsqueda DPLL básico con un análisis de conflictos eficiente, aprendizaje de cláusulas, saltos hacia atrás , una forma de propagación de unidades de "dos literales vigilados" , ramificación adaptativa y reinicios aleatorios. Se ha demostrado empíricamente que estos "extras" de la búsqueda sistemática básica son esenciales para manejar las grandes instancias SAT que surgen en la automatización del diseño electrónico (EDA). [5] La mayoría de los solucionadores SAT de última generación se basan en el marco CDCL a partir de 2019. [6] Las implementaciones más conocidas incluyen Chaff [7] y GRASP . [8]

Los solucionadores de anticipación tienen reducciones especialmente fortalecidas (que van más allá de la propagación de cláusulas unitarias) y las heurísticas, y generalmente son más fuertes que los solucionadores impulsados ​​por conflictos en instancias difíciles (mientras que los solucionadores impulsados ​​por conflictos pueden ser mucho mejores en instancias grandes que en realidad tienen una instancia fácil adentro). [ cita requerida ]

El solucionador de conflictos MiniSAT, que tuvo un éxito relativo en la competencia SAT de 2005, solo tiene alrededor de 600 líneas de código. Un solucionador de SAT paralelo moderno es ManySAT. [9] Puede lograr aceleraciones superlineales en clases importantes de problemas. Un ejemplo de solucionadores de anticipación es march_dl, que ganó un premio en la competencia SAT de 2007. El solucionador CP-SAT de Google, parte de OR-Tools , ganó medallas de oro en las competencias de programación con restricciones Minizinc en 2018, 2019, 2020 y 2021.

Ciertos tipos de grandes instancias aleatorias satisfacibles de SAT se pueden resolver mediante propagación de encuesta (SP). [ cita requerida ] Particularmente en aplicaciones de diseño y verificación de hardware , la satisfacibilidad y otras propiedades lógicas de una fórmula proposicional dada a veces se deciden en función de una representación de la fórmula como un diagrama de decisión binaria (BDD).

A los distintos solucionadores del SAT les resultará fácil o difícil resolver distintos casos, y algunos se destacan en demostrar la insatisfacción y otros en encontrar soluciones. Todos estos comportamientos se pueden observar en los concursos de resolución del SAT. [10]

Enfoques paralelos

Los solucionadores SAT paralelos se dividen en tres categorías: algoritmos de cartera, de divide y vencerás y de búsqueda local paralela . Con carteras paralelas, se ejecutan varios solucionadores SAT diferentes al mismo tiempo. Cada uno de ellos resuelve una copia de la instancia SAT, mientras que los algoritmos de divide y vencerás dividen el problema entre los procesadores. Existen diferentes enfoques para paralelizar algoritmos de búsqueda local.

La Competencia Internacional de Resolución de Problemas SAT tiene una trayectoria paralela que refleja los avances recientes en la resolución de problemas SAT en paralelo. En 2016, [11] 2017 [12] y 2018, [13] las pruebas de referencia se ejecutaron en un sistema de memoria compartida con 24 núcleos de procesamiento , por lo que los solucionadores diseñados para memoria distribuida o procesadores de múltiples núcleos podrían no haber estado a la altura.

Carteras

En general, no existe ningún solucionador de SAT que tenga un mejor rendimiento que el resto de solucionadores en todos los problemas de SAT. Un algoritmo puede tener un buen rendimiento en casos de problemas con los que otros tienen dificultades, pero tendrá un peor rendimiento en otros casos. Además, dada una instancia de SAT, no hay una forma fiable de predecir qué algoritmo resolverá esta instancia con especial rapidez. Estas limitaciones motivan el enfoque de cartera paralela. Una cartera es un conjunto de algoritmos diferentes o configuraciones diferentes del mismo algoritmo. Todos los solucionadores de una cartera paralela se ejecutan en procesadores diferentes para resolver el mismo problema. Si un solucionador finaliza, el solucionador de la cartera informa que el problema es satisfacible o insatisfacible según este solucionador. Todos los demás solucionadores finalizan. La diversificación de las carteras mediante la inclusión de una variedad de solucionadores, cada uno con un buen rendimiento en un conjunto diferente de problemas, aumenta la solidez del solucionador. [14]

Muchos solucionadores utilizan internamente un generador de números aleatorios . Diversificar sus semillas es una forma sencilla de diversificar una cartera. Otras estrategias de diversificación implican habilitar, deshabilitar o diversificar ciertas heurísticas en el solucionador secuencial. [15]

Una desventaja de las carteras paralelas es la cantidad de trabajo duplicado. Si se utiliza el aprendizaje de cláusulas en los solucionadores secuenciales, compartir cláusulas aprendidas entre solucionadores que se ejecutan en paralelo puede reducir el trabajo duplicado y aumentar el rendimiento. Sin embargo, incluso la simple ejecución de una cartera de los mejores solucionadores en paralelo hace que un solucionador paralelo sea competitivo. Un ejemplo de un solucionador de este tipo es PPfolio. [16] [17] Fue diseñado para encontrar un límite inferior para el rendimiento que un solucionador SAT paralelo debería ser capaz de ofrecer. A pesar de la gran cantidad de trabajo duplicado debido a la falta de optimizaciones, funcionó bien en una máquina de memoria compartida. HordeSat [18] es un solucionador de cartera paralela para grandes grupos de nodos informáticos. Utiliza instancias configuradas de forma diferente del mismo solucionador secuencial en su núcleo. Particularmente para las instancias SAT duras, HordeSat puede producir aceleraciones lineales y, por lo tanto, reducir significativamente el tiempo de ejecución.

En los últimos años, los solucionadores de SAT de cartera paralela han dominado la vía paralela de las Competiciones Internacionales de Solución de SAT. Entre los ejemplos notables de dichos solucionadores se incluyen Plingeling y painless-mcomsps. [19]

Divide y vencerás

A diferencia de las carteras paralelas, el algoritmo de dividir y vencer en paralelo intenta dividir el espacio de búsqueda entre los elementos de procesamiento. Los algoritmos de dividir y vencer, como el algoritmo de división y vencer secuencial, ya aplican la técnica de dividir el espacio de búsqueda, por lo que su extensión hacia un algoritmo paralelo es sencilla. Sin embargo, debido a técnicas como la propagación de unidades, después de una división, los problemas parciales pueden diferir significativamente en complejidad. Por lo tanto, el algoritmo de división y vencer normalmente no procesa cada parte del espacio de búsqueda en la misma cantidad de tiempo, lo que genera un problema de equilibrio de carga desafiante . [14]

Árbol que ilustra la fase de anticipación y los cubos resultantes.
Fase de cubo para la fórmula . La heurística de decisión elige qué variables (círculos) asignar. Después de que la heurística de corte decide detener la ramificación adicional, los problemas parciales (rectángulos) se resuelven de forma independiente utilizando CDCL.

Debido al retroceso no cronológico, la paralelización del aprendizaje de cláusulas impulsadas por conflictos es más difícil. Una forma de superar esto es el paradigma Cube-and-Conquer [20] . Sugiere resolver en dos fases. En la fase "cubo", el problema se divide en muchos miles, hasta millones, de secciones. Esto se hace mediante un solucionador de anticipación, que encuentra un conjunto de configuraciones parciales llamadas "cubos". Un cubo también puede verse como una conjunción de un subconjunto de variables de la fórmula original. Junto con la fórmula, cada uno de los cubos forma una nueva fórmula. Estas fórmulas pueden ser resueltas de forma independiente y concurrente por solucionadores impulsados ​​por conflictos. Como la disyunción de estas fórmulas es equivalente a la fórmula original, se informa que el problema es satisfacible, si una de las fórmulas es satisfacible. El solucionador de anticipación es favorable para problemas pequeños pero difíciles, [21] por lo que se utiliza para dividir gradualmente el problema en múltiples subproblemas. Estos subproblemas son más fáciles pero aún grandes, lo que es la forma ideal para un solucionador impulsado por conflictos. Además, los solucionadores de anticipación consideran el problema completo, mientras que los solucionadores impulsados ​​por conflictos toman decisiones basadas en información que es mucho más local. Hay tres heurísticas involucradas en la fase del cubo. Las variables en los cubos son elegidas por la heurística de decisión. La heurística de dirección decide qué asignación de variable (verdadera o falsa) explorar primero. En instancias de problemas satisfacibles, es beneficioso elegir primero una rama satisfacible. La heurística de corte decide cuándo dejar de expandir un cubo y, en su lugar, reenviarlo a un solucionador secuencial impulsado por conflictos. Preferiblemente, los cubos son igualmente complejos de resolver. [20]

Treengeling es un ejemplo de un solucionador paralelo que aplica el paradigma Cube-and-Conquer. Desde su introducción en 2012, ha tenido múltiples éxitos en la Competencia Internacional de Solucionadores SAT. Cube-and-Conquer se utilizó para resolver el problema de las ternas pitagóricas booleanas . [22]

Cube-and-Conquer es una modificación o generalización del enfoque Divide-and-conquer basado en DPLL utilizado para calcular los números de Van der Waerden w(2;3,17) y w(2;3,18) en 2010 [23] donde ambas fases (división y solución de los problemas parciales) se realizaron utilizando DPLL.

Búsqueda local

Una estrategia para un algoritmo de búsqueda local paralelo para la resolución de problemas SAT es probar múltiples cambios de variable simultáneamente en diferentes unidades de procesamiento. [24] Otra es aplicar el enfoque de cartera mencionado anteriormente, sin embargo, no es posible compartir cláusulas ya que los solucionadores de búsqueda local no producen cláusulas. Alternativamente, es posible compartir las configuraciones que se producen localmente. Estas configuraciones se pueden utilizar para guiar la producción de una nueva configuración inicial cuando un solucionador local decide reiniciar su búsqueda. [25]

Enfoques aleatorios

Los algoritmos que no forman parte de la familia DPLL incluyen algoritmos de búsqueda local estocásticos . Un ejemplo es WalkSAT . Los métodos estocásticos intentan encontrar una interpretación satisfactoria, pero no pueden deducir que una instancia SAT no es satisfacible, a diferencia de los algoritmos completos, como DPLL. [4]

Por el contrario, los algoritmos aleatorios como el algoritmo PPSZ de Paturi, Pudlak, Saks y Zane establecen las variables en un orden aleatorio de acuerdo con algunas heurísticas, por ejemplo, la resolución de ancho acotado . Si la heurística no puede encontrar la configuración correcta, la variable se asigna aleatoriamente. El algoritmo PPSZ tiene un tiempo de ejecución [ aclarar ] de para 3-SAT. Este fue el tiempo de ejecución más conocido para este problema hasta 2019, cuando Hansen, Kaplan, Zamir y Zwick publicaron una modificación de ese algoritmo con un tiempo de ejecución de para 3-SAT. Este último es actualmente el algoritmo más rápido conocido para k-SAT en todos los valores de k. En el entorno con muchas asignaciones satisfactorias, el algoritmo aleatorio de Schöning tiene un mejor límite. [26] [27] [28]

Aplicaciones

En matemáticas

Los solucionadores SAT se han utilizado para ayudar a demostrar teoremas matemáticos a través de pruebas asistidas por computadora . En la teoría de Ramsey , se calcularon varios números de Van der Waerden previamente desconocidos con la ayuda de solucionadores SAT especializados que se ejecutaban en FPGAs . [29] [30] En 2016, Marijn Heule , Oliver Kullmann y Victor Marek resolvieron el problema de las ternas pitagóricas booleanas utilizando un solucionador SAT para demostrar que no hay forma de colorear los números enteros hasta 7825 de la manera requerida. [31] [32] Heule también calculó valores pequeños de los números de Schur utilizando solucionadores SAT. [33]

En la verificación de software

Los solucionadores SAT se utilizan en la verificación formal de hardware y software . En la verificación de modelos (en particular, la verificación de modelos acotados), los solucionadores SAT se utilizan para verificar si un sistema de estados finitos satisface una especificación de su comportamiento previsto. [34] [35]

Los solucionadores SAT son el componente central sobre el cual se construyen los solucionadores de teorías de módulo de satisfacibilidad (SMT), que se utilizan para problemas como programación de trabajos , ejecución simbólica , verificación de modelos de programas , verificación de programas basada en lógica de Hoare y otras aplicaciones. [36] Estas técnicas también están estrechamente relacionadas con la programación de restricciones y la programación lógica .

En otras áreas

En la investigación de operaciones , los solucionadores SAT se han aplicado para resolver problemas de optimización y programación. [37]

En la teoría de la elección social , los solucionadores SAT se han utilizado para demostrar teoremas de imposibilidad. [38] Tang y Lin utilizaron solucionadores SAT para demostrar el teorema de Arrow y otros teoremas de imposibilidad clásicos. Geist y Endriss lo utilizaron para encontrar nuevas imposibilidades relacionadas con extensiones de conjuntos. Brandt y Geist utilizaron este enfoque para demostrar una imposibilidad sobre soluciones de torneo a prueba de estrategias . Otros autores utilizaron esta tecnología para demostrar nuevas imposibilidades sobre la paradoja de la no presentación , la monotonía a mitad de camino y las reglas de votación probabilísticas . Brandl, Brandt, Peters y Stricker lo utilizaron para demostrar la imposibilidad de una regla a prueba de estrategias, eficiente y justa para la elección social fraccionaria . [39]

Véase también

Referencias

  1. ^ Ohrimenko, Olga; Stuckey, Peter J.; Codish, Michael (2007), "Propagación = Generación de cláusulas perezosas", Principles and Practice of Constraint Programming – CP 2007 , Lecture Notes in Computer Science, vol. 4741, págs. 544–558, CiteSeerX  10.1.1.70.5471 , doi :10.1007/978-3-540-74970-7_39, ISBN 978-3-540-74969-1Los solucionadores SAT modernos a menudo pueden manejar problemas con millones de restricciones y cientos de miles de variables.
  2. ^ Davis, M.; Putnam, H. (1960). "Un procedimiento computacional para la teoría de cuantificación". Revista de la ACM . 7 (3): 201. doi :10.1145/321033.321034. S2CID  31888376.
  3. ^ Davis, M. ; Logemann, G.; Loveland, D. (1962). "Un programa de máquina para la demostración de teoremas" (PDF) . Comunicaciones de la ACM . 5 (7): 394–397. doi :10.1145/368273.368557. hdl : 2027/mdp.39015095248095 . S2CID  15866917.
  4. ^ abc Zhang, Lintao; Malik, Sharad (2002), "La búsqueda de solucionadores de satisfacibilidad booleana eficientes", Verificación asistida por computadora , Lecture Notes in Computer Science, vol. 2404, Springer Berlin Heidelberg, págs. 17–36, doi : 10.1007/3-540-45657-0_2 , ISBN 978-3-540-43997-4
  5. ^ Vizel, Y.; Weissenbacher, G.; Malik, S. (2015). "Solucionadores de satisfacibilidad booleana y sus aplicaciones en la verificación de modelos". Actas del IEEE . 103 (11): 2021–2035. doi :10.1109/JPROC.2015.2455034. S2CID  10190144.
  6. ^ Möhle, Sibylle; Biere, Armin (2019). "Backing Backtracking". Teoría y aplicaciones de las pruebas de satisfacibilidad – SAT 2019 (PDF) . Apuntes de clase en informática. Vol. 11628. págs. 250–266. doi :10.1007/978-3-030-24258-9_18. ISBN 978-3-030-24257-2.S2CID 195755607  .
  7. ^ Moskewicz, MW; Madigan, CF; Zhao, Y.; Zhang, L.; Malik, S. (2001). "Chaff: Engineering an Efficient SAT Solver" (PDF) . Actas de la 38.ª conferencia sobre automatización del diseño (DAC) . pág. 530. doi :10.1145/378239.379017. ISBN . 1581132972.S2CID 9292941  .
  8. ^ Marques-Silva, JP; Sakallah, KA (1999). "GRASP: un algoritmo de búsqueda para la satisfacibilidad proposicional" (PDF) . IEEE Transactions on Computers . 48 (5): 506. doi :10.1109/12.769433. Archivado desde el original (PDF) el 2016-11-04 . Consultado el 2015-08-28 .
  9. ^ http://www.cril.univ-artois.fr/~jabbour/manysat.htm [ URL básica ]
  10. ^ "La página web de las competiciones internacionales SAT" . Consultado el 15 de noviembre de 2007 .
  11. ^ "Competencia SAT 2016". baldur.iti.kit.edu . Consultado el 13 de febrero de 2020 .
  12. ^ "Competencia SAT 2017". baldur.iti.kit.edu . Consultado el 13 de febrero de 2020 .
  13. ^ "Competencia SAT 2018". sat2018.forsyte.tuwien.ac.at . Consultado el 13 de febrero de 2020 .
  14. ^ ab Balyo, Tomáš; Sinz, Carsten (2018), "Satisfacción paralela", Manual de razonamiento con restricciones paralelas , Springer International Publishing, págs. 3–29, doi :10.1007/978-3-319-63516-3_1, ISBN 978-3-319-63515-6
  15. ^ Biere, Armin. "Lingeling, Plingeling, PicoSAT y PrecoSAT en SAT Race 2010" (PDF) . SAT-RACE 2010 .
  16. ^ "ppfolio solver" www.cril.univ-artois.fr . Consultado el 29 de diciembre de 2019 .
  17. ^ "Competencia SAT 2011: pista de 32 núcleos: clasificación de los solucionadores". www.cril.univ-artois.fr . Consultado el 13 de febrero de 2020 .
  18. ^ Balyo, Tomáš; Sanders, Peter; Sinz, Carsten (2015), "HordeSat: un solucionador de SAT de cartera masivamente paralelo", Teoría y aplicaciones de las pruebas de satisfacibilidad -- SAT 2015 , Lecture Notes in Computer Science, vol. 9340, Springer International Publishing, págs. 156–172, arXiv : 1505.03340 , doi :10.1007/978-3-319-24318-4_12, ISBN 978-3-319-24317-7, Número de identificación del sujeto  11507540
  19. ^ "Competencia SAT 2018". sat2018.forsyte.tuwien.ac.at . Consultado el 13 de febrero de 2020 .
  20. ^ ab Heule, Marijn JH ; Kullmann, Oliver; Wieringa, Siert; Biere, Armin (2012), "Cube and Conquer: Guiding CDCL SAT Solvers by Lookaheads", Hardware and Software: Verification and Testing , Notas de clase en informática, vol. 7261, Springer Berlin Heidelberg, págs. 50–65, doi :10.1007/978-3-642-34188-5_8, ISBN 978-3-642-34187-8
  21. ^ Heule, Marijn JH ; van Maaren, Hans (2009). "Solucionadores SAT basados ​​​​en anticipación" (PDF) . Manual de Satisfacibilidad . Prensa IOS. págs. 155–184. ISBN 978-1-58603-929-5.
  22. ^ Heule, Marijn JH ; Kullmann, Oliver; Marek, Victor W. (2016), "Resolución y verificación del problema de las ternas pitagóricas booleanas mediante el método Cube-and-Conquer", Teoría y aplicaciones de las pruebas de satisfacibilidad – SAT 2016 , Lecture Notes in Computer Science, vol. 9710, Springer International Publishing, págs. 228–245, arXiv : 1605.00723 , doi :10.1007/978-3-319-40970-2_15, ISBN 978-3-319-40969-6, Número de identificación del sujeto  7912943
  23. ^ Ahmed, Tanbir (2010). "Dos nuevos números de van der Waerden w(2;3,17) y w(2;3,18)". Enteros . 10 (4): 369–377. doi :10.1515/integ.2010.032. SEÑOR  2684128. S2CID  124272560.
  24. ^ Roli, Andrea (2002), "Criticidad y paralelismo en instancias SAT estructuradas", Principles and Practice of Constraint Programming - CP 2002 , Lecture Notes in Computer Science, vol. 2470, Springer Berlin Heidelberg, págs. 714–719, doi :10.1007/3-540-46135-3_51, ISBN 978-3-540-44120-5
  25. ^ Arbelaez, Alejandro; Hamadi, Youssef (2011), "Mejora de la búsqueda local paralela para SAT", Aprendizaje y optimización inteligente , Lecture Notes in Computer Science, vol. 6683, Springer Berlin Heidelberg, págs. 46–60, doi :10.1007/978-3-642-25566-3_4, ISBN 978-3-642-25565-6, Número de identificación del sujeto  14735849
  26. ^ Schöning, Uwe (octubre de 1999). "Un algoritmo probabilístico para k-SAT y problemas de satisfacción de restricciones" (PDF) . 40.º Simposio anual sobre fundamentos de la informática (Cat. N.º 99CB37039) . pp. 410–414. doi :10.1109/SFFCS.1999.814612. ISBN. 0-7695-0409-4.S2CID 123177576  .
  27. ^ "Un algoritmo de tiempo exponencial mejorado para k-SAT", Paturi, Pudlak, Saks, Zani
  28. ^ "Algoritmos k-SAT más rápidos utilizando PPSZ sesgado", Hansen, Kaplan, Zamir, Zwick
  29. ^ Kouril, Michal; Paul, Jerome L. (2008). "El número de van der Waerden $W(2,6)$ es 1132". Matemáticas experimentales . 17 (1): 53–61. doi :10.1080/10586458.2008.10129025. ISSN  1058-6458. S2CID  1696473.
  30. ^ Kouril, Michal (2012). "Cálculo del número de van der Waerden W(3,4)=293". Enteros . 12 : A46. MR  3083419.
  31. ^ Heule, Marijn JH; Kullmann, Oliver; Marek, Victor W. (2016), "Resolución y verificación del problema de las ternas pitagóricas booleanas mediante el método Cube-and-Conquer", Teoría y aplicaciones de las pruebas de satisfacibilidad – SAT 2016 , Lecture Notes in Computer Science, vol. 9710, págs. 228–245, arXiv : 1605.00723 , doi :10.1007/978-3-319-40970-2_15, ISBN 978-3-319-40969-6, Número de identificación del sujeto  7912943
  32. ^ Lamb, Evelyn (1 de junio de 2016). «La prueba matemática de doscientos terabytes es la más grande jamás realizada». Nature . 534 (7605): 17–18. Bibcode :2016Natur.534...17L. doi : 10.1038/nature.2016.19990 . ISSN  1476-4687. PMID  27251254. S2CID  5528978.
  33. ^ "Schur número cinco". www.cs.utexas.edu . Consultado el 26 de octubre de 2023 .
  34. ^ Clarke, Edmund; Biere, Armin; Raimi, Richard; Zhu, Yunshan (1 de julio de 2001). "Comprobación de modelos acotados mediante resolución de satisfacibilidad". Métodos formales en el diseño de sistemas . 19 (1): 7–34. doi :10.1023/A:1011276507260. ISSN  1572-8102. S2CID  2484208.
  35. ^ Biere, Armin; Cimatti, Alessandro; Clarke, Edmund M.; Strichman, Ofer; Zhu, Yunshan (2003). "Comprobación de modelos acotados" (PDF) . Advances in Computers . 58 (2003): 117–148. doi :10.1016/S0065-2458(03)58003-2. ISBN 9780120121588– vía Academic Press.
  36. ^ De Moura, Leonardo; Bjørner, Nikolaj (1 de septiembre de 2011). "Teorías de módulo de satisfacibilidad: introducción y aplicaciones". Comunicaciones de la ACM . 54 (9): 69–77. doi :10.1145/1995376.1995394. ISSN  0001-0782. S2CID  11621980.
  37. ^ Coelho, José; Vanhoucke, Mario (16 de agosto de 2011). "Programación de proyectos multimodo con recursos limitados utilizando solucionadores RCPSP y SAT". Revista Europea de Investigación Operativa . 213 (1): 73–82. doi :10.1016/j.ejor.2011.03.019. ISSN  0377-2217.
  38. ^ Peters, Dominik (2021). "Proporcionalidad y estrategia a prueba de errores en elecciones con múltiples ganadores". arXiv : 2104.08594 [cs.GT].
  39. ^ Brandl, Florian; Brandt, Felix; Peters, Dominik; Stricker, Christian (18 de julio de 2021). "Reglas de distribución bajo preferencias dicotómicas: dos de tres no están mal". Actas de la 22.ª Conferencia de la ACM sobre economía y computación . EC '21. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 158–179. doi :10.1145/3465456.3467653. ISBN 978-1-4503-8554-1. Número de identificación del sujeto  232109303.

Enlaces externos