¿Las instancias SAT generadas por la reducción de un problema más fácil (por ejemplo, factorización de enteros) serán más fáciles en promedio que las instancias SAT aleatorias?

A veces. Esto es lo que hace que los solucionadores SAT sean útiles.

No puedo hablar específicamente de la factorización de enteros, pero los solucionadores de SAT se usan ampliamente en varios campos, incluida la seguridad y la verificación. Es sorprendente que sea útil reducir los problemas prácticos a instancias de un problema de NP completo ; solo puede funcionar si esas instancias tienen una estructura interna que las hace mucho más fáciles de resolver que las instancias “difíciles” del mismo problema. El hecho de que esas instancias puedan tener millones de variables es una prueba más de que está sucediendo algo especial.

Curiosamente, el algoritmo central utilizado por los solucionadores de SAT modernos sigue siendo, en el fondo, simplemente retroceder. No hay nada loco sucediendo a un alto nivel; funciona bien porque el algoritmo de retroceso aprovecha la estructura de los problemas SAT que surgen de ciertas aplicaciones industriales.

Cuando se visualiza, la estructura es llamativa:

(Visualizaciones en paralelo de una instancia SAT industrial y una aleatoria. La instancia industrial tiene una estructura de red clara, mientras que la aleatoria es un gran blog de líneas. Ilustración creada con SATGraf¹.)

Las variables de estas instancias industriales de SAT se dividen naturalmente en grupos o “comunidades”, lo que significa que la mayoría de los conflictos surgen en “variables puente” que conectan comunidades distintas entre sí. Esta estructura nos permite descartar rápidamente las asignaciones potenciales y retroceder de manera más eficiente al priorizar las variables que tienen más probabilidades de entrar en conflicto.

Los solucionadores de SAT modernos encuentran y usan esta estructura interna con un algoritmo llamado Aprendizaje de cláusulas controladas por conflictos (CDCL). A medida que el solucionador intenta las posibles asignaciones y retrocede, aprende nuevas cláusulas de variables que tienen más probabilidades de causar conflictos y prueba estas cláusulas sintéticas primero . Como la mayoría de las tareas fallan en un pequeño conjunto de variables, estas cláusulas aprendidas permiten que el solucionador falle rápidamente y realice un ciclo a través de una gran cantidad de tareas potenciales rápidamente.

Se ha demostrado empíricamente que el tiempo de ejecución de los solucionadores basados ​​en CDCL está correlacionado con la estructura comunitaria de una instancia SAT². Si su reducción a SAT de otro problema tiene esta estructura, como lo hacen muchas reducciones prácticas, es ciertamente más fácil que una instancia aleatoria, y se puede resolver de manera eficiente con los algoritmos actuales.

Al mismo tiempo, es bastante difícil entender el rendimiento del SAT en la práctica. Pasé algún tiempo trabajando con Z3³ y descubrí que su rendimiento dependía en gran medida tanto del problema que estaba resolviendo como de cómo codifiqué el problema para alimentar al solucionador. Parecía que las únicas personas con alguna intuición sobre cómo se desempeñaban los solucionadores SAT eran investigadores que trabajaban en solucionadores SAT; otras personas, incluso con una amplia experiencia en el uso de solucionadores SAT y SMT, trataban el rendimiento práctico como una especie de caja negra.

notas al pie
SAT “SATGraf: Visualizando la evolución de la estructura de fórmulas SAT en solucionadores” por Zack Newsham, William Lindsay, Vijay Ganesh, Jia Hui Liang, Sebastian Fischmeister y Krzysztof Czarnecki

² “Impacto de la estructura de la comunidad en el desempeño del SAT Solver” por Zack Newsham, Vijay Ganesh, Sebastian Fischmeister, Gilles Audemard y Laurent Simon

³ Z3 es un solucionador SMT en lugar de un solucionador SAT; considérelo como un solucionador SAT con capacidades adicionales, algunas de las cuales (como la aritmética lineal real) no están codificadas naturalmente en SAT simple. Sin embargo, Z3 usa CDCL para su resolución SAT, y estaba trabajando con un subconjunto de las capacidades de Z3 que encaja perfectamente en SAT simple. (Estaba usando principalmente la teoría de los vectores de bits que se puede compilar para SAT simple en un proceso llamado “explosión de bits”).

Si bien repetiría las advertencias de David Rutter de que realmente no conocemos el estado de la factorización (es decir, ¿a qué clase de complejidad pertenece?) Creo que podemos decir que SAT no ha mostrado una aceleración en algunos casos “interesantes” que la gente tiene intentado, como factorización o ataques de preimagen SHA.

Eso significa que, como cuestión práctica, si podemos decodificar eficientemente el problema SAT en su problema original, entonces el solucionador puede usar los algoritmos más conocidos para el problema original (y tal vez incluso poner a funcionar una GPU). Se sabe que el algoritmo de codificación podría ser bastante sencillo. Para una codificación desconocida puede ser bastante difícil. Pero en este sentido, sí, el problema SAT es más fácil porque sucumbe a un algoritmo especializado que es más rápido que los solucionadores SAT generales.

Pero lo que probablemente quiso decir fue “¿es un solucionador de SAT más rápido en un problema de factorización codificado que en otros problemas de restricción?”. Esta es una pregunta práctica interesante, para la cual podríamos tener una respuesta práctica en forma de Competiciones SAT, aproximadamente prueba anual de evaluación comparativa de varios solucionadores.

Si volvemos al 2013, un punto de referencia presentado se basó en la factorización: “Instancias de SAT difíciles basadas en la factorización”, Joseph Bebel y Henry Yuen (en las actas de la competencia, disponible aquí: https://helda.helsinki.fi / bitstr …) Desafortunadamente no veo un resumen fácil de los resultados, y los archivos de referencia son demasiado grandes (uno es de 2 GB) para descargarlos fácilmente y ver si contienen información de tiempo de la competencia. Luego, podría comparar los tiempos de instancias aleatorias uniformes (un punto de referencia estándar) con esta aplicación u otras aplicaciones, con un número similar de variables.

Por otro lado, tampoco subestimes la dificultad de encontrar un buen “azar”, por eso la competencia pone mucho trabajo en encontrar puntos de referencia reales y difíciles. Se podría esperar que una instancia aleatoria de un problema sea bastante fácil, incluso si la clase de problemas es NP-completa.

Esto definitivamente no sabemos la respuesta.

En primer lugar, las “instancias SAT aleatorias” no están definidas. ¿Instancias SAT extraídas de qué distribución? Existen métodos conocidos para elegir aleatoriamente instancias SAT garantizadas como “fáciles” o “difíciles”. Si seleccionamos instancias SAT “fáciles” e instancias de factorización “difíciles”, o viceversa, esto cambiará los resultados.

Entonces, en lugar de decir “instancias SAT aleatorias”, digamos “las instancias SAT más difíciles”.

Si la factorización es NP-completa, entonces una instancia SAT basada en una factorización entera grande será tan difícil (en términos de clases de complejidad) como las instancias SAT más difíciles. Si la factorización está en P, entonces una instancia SAT basada en una factorización entera grande será más fácil que las instancias SAT más difíciles.

Y eso es lo mejor que podemos decir en este momento.

More Interesting

¿Con qué campos de la ciencia será más emocionante trabajar en el futuro cercano?

Si tuviera la oportunidad de rediseñar el programa de cuatro años de Ciencias de la Computación de su universidad, entonces, ¿qué programa diseñaría?

¿Cuáles son los fundamentos matemáticos de la inteligencia artificial?

¿Se puede aplicar la proporción áurea (Fibonacci) con beneficios en informática?

Criptografía: ¿Cuál es una explicación intuitiva del algoritmo de cifrado RC4 y sus debilidades?

¿Qué módulo será más útil, análisis multivariado o análisis bayesiano?

¿Cómo explicaría la devolución a un público en general?

En la universidad, ¿debería centrarme más en la teoría o la aplicación en los campos de la informática y las matemáticas?

Tienes 25 caballos y quieres elegir los 3 caballos más rápidos de esos 25. En cada carrera, solo 5 caballos pueden correr al mismo tiempo porque solo hay 5 pistas. ¿Cuál es el número mínimo de carreras requeridas para encontrar los 3 caballos más rápidos sin usar un cronómetro?

¿Qué tan importante es el nuevo generador de números aleatorios PCG?

Muchos resultados matemáticos se prueban con computadoras. Si un estudiante escribió un código como prueba en un examen sobre una prueba tradicional, ¿debería ser aceptado?

¿Cómo se me ocurre una fórmula de suma para iterar sobre una matriz y cambiar el índice inicial con cada iteración?

¿Qué es la reducción en la teoría de la complejidad computacional?

¿Cuál es la complejidad temporal de un programa que calcula el número n de Fibonacci mediante la memorización?

¿De qué manera las matemáticas son similares a la codificación?