x
1

Problema de satisfacción de restricciones



Problemas de satisfacción de restricciones (CSP) por sus siglas en inglés, son problemas matemáticos definido como un conjunto de objetos tal que su estado debe satisfacer un número de restricciones o limitaciones. Los CSP representa las entidades de un problema como una colección homogénea finita de restricciones sobre variables, las que son resueltas por métodos de satisfacción de restricciones. Los CSP son el tema de una intensa investigación en Inteligencia Artificial e Investigación de operaciones, dado que la generalidad en su formulación provee un principio básico para analizar y resolver problemas de distintos tipos. Los CSP a menudo muestran gran complejidad, requiriendo una combinación de métodos heurísticos y búsqueda combinatoria para ser resueltos en un tiempo razonable. El Problema de satisfacibilidad booleana (SAT), el Satisfiability Modulo Theories (SMT) y answer set programming (ASP) pueden ser a grandes rasgos modelados como una forma de problema de satisfacción de restricciones.

Ejemplos de problemas sencillos que pueden ser modelados como problema de satisfacción de restricciones.

De forma general, problemas de restricciones pueden ser más difíciles, y pueden no ser expresables en alguno de estos sistemas simples.

Ejemplos de la vida real son Planeamiento y Asignación de recursos.

Formalmente, un problema de satisfacción de restricción es definido como un triplo , donde es un conjunto de variables, es el dominio de valores, y es un conjunto de restricciones. Toda restricción es un par (usualmente representado como una matriz), donde es una -Tupla de variables y es una relación -aria en . Una evaluación de las variables es una función del conjunto de variables a el dominio de valores, . Una evaluación satisfice una restricción si . Una solución es una evaluación que satisfice todas las restricciones.

Los problemas de satisfacción de restricciones en un dominio finito son resueltos típicamente usando una forma de algoritmo de búsqueda. Las técnicas más usadas son variantes de búsqueda con retroceso cronológico (backtracking), propagación de restricciones, y búsqueda local.

Retroceso cronológico es un algoritmo recursivo. Mantiene una asignación parcial de las variables. Inicialmente, todas las variables están sin asignar. En cada paso, una variable es seleccionada, y todos los posibles valores son asignados a la variable por turnos. Por cada valor, la consistencia de la asignación parcial es chequeada con respecto a las restricciones; en caso de consistencia, un llamado recursivo es hecho. Cuando todos los valores fueron probados, el algoritmo hace backtracking. En este algoritmo básico con retroceso cronológico, la consistencia es definida como la satisfacción de todas las restricciones donde las variables estén asignadas. Existen algunas variantes de backtracking. Backmarking mejora la eficiencia del chequeo de consistencia. Backjumping permite guardar parte de la búsqueda por backtracking "más de una variable" en algunos casos. Aprendizaje por restricciones infiere y guarda nuevas restricciones que pueden ser usadas luego para evitar parte de la búsqueda. Look-ahead es también a menudo usado en backtracking para intentar prever el efecto de seleccionar una variable o un valor, por lo tanto, determinar a veces con anticipación cuándo es satisfasible o insatisfasible un subproblema.

Las técnicas de propagación de restricciones son métodos usados para modificar un problema de satisfacción de restricciones. Más específico, son métodos que fuerzan una forma de consistencia local, que son condiciones relacionadas con la consistencia de un grupo de variables y/o restricciones. Propagación de restricción tiene varios usos. Primero, cambia el problema en otro que es equivalente pero usualmente más simple de resolver. Segundo, puede probar la satisfacibilidad o la insatisfacibilidad de problemas. En general no hay garantía de que esto ocurra; sin embargo, siempre ocurre para algunas formas de propagación de restricción y/o para algunos tipos de problemas específicos. Las formas más conocidas y usadas de consistencia local son consistencia de arco, consistencia de híper arco, y consistencia de camino. El método de propagación de restricción más popular es el algoritmo AC-3, el cual asegura consistencia de arco.

Los métodos de búsqueda local son algoritmos de satisfacibilidad incompleta. Ellos pueden encontrar una solución al problema, pero pueden no encontrarle incluso si el problema es satisfasible. Ellos trabajan mejorando iterativamente una asignación completa de las variables. En cada paso, un grupo pequeño de variables les son cambiados los valores, con el objetivo fundamental de incrementar el número de restricciones que satisfacen la actual asignación. El algoritmo de Min-Conflictos es específico de búsqueda local para CSPs basado en ese principio. En la práctica, búsqueda local parece funcionar bien cuando estos cambios son también afectados por una selección aleatoria.

CSPs son estudiados también en Teoría de la complejidad computacional. Una pregunta importante es si para cada conjunto de relaciones, el conjunto de todos los CSPs que pueden ser representado usando solo las relaciones escogidas de ese conjunto están en P o NP-completo. Si el teorema Dicotomía es verdadero, entonces CSPs provee uno de los subconjuntos más grandes conocidos de NP los que evitan problemas NP-intermedio, cuya existencia fue demostrada por el teorema de Ladner bajo la suposición que P ≠ NP. El teorema de Schaefer sobre dicotomía maneja el caso cuando todas las relaciones disponibles son operadores booleanos, eso es para dominio de tamaño 2. El problema de dicotomía de Schaefer fue recientemente generalizado clases grandes de relaciones.

Todo CSP pude ser también considerado como un problema de conjunción de preguntas.[1]

Una situación similar existe entre las clases funcionales FP y #P. Por una generalización del teorema de Ladner, también hay problemas que no son FP ni #P-completo tan grande como FP ≠ #P. Como en el caso de decisión, un problema en el #CSP es definido por un conjunto de relaciones. Cada problema toma una fórmula booleana como entrada y la tarea es computar el número de asignaciones que satisfacen las restricciones. Esto puede ser generalizado usando tamaño de dominios grandes y fijar un peso asignación que satisface y computando la suma de estos pesos. Es conocido que cualquier problema complejo con peso #CSP está en FP o #P-hard.

El modelo clásico de Problema de Satisfacción de Restricciones define un modelo estático, inflexible de restricciones. Este modelo rígido es un defecto que lo hace difícil para representar problemas fácilmente.[2]​ Varias modificaciones a la definición básica de CSP han sido propuestas para adaptar el modelo a una amplia variedad de problemas.

Los CSP dinámicos[3]​ (DCSP) son usados cuando la formulación original de un problema es alterado de alguna forma, típicamente porque el conjunto de restricciones a considerar cambia por el entorno.[4]​ los DCSP son vistos como una secuencia de CSP estáticos, cada uno es una transformación del anterior en el que variables y restricciones pueden ser adicionadas (restriction) o eliminadas (relaxation). La información encontrada en la formulación inicial del problema puede ser usada para refinar los siguientes. El método de solución puede ser clasificado acorde a la forma en que la información es transferida:

Los CSP clásicos tratan las restricciones como fuertes, significan que son inviolables (cada solución las debe satisfacer por completo) e inflexible (en este sentido las restricciones deben ser completamente cumplidas o por el contrario son completamente violadas). Los CSP flexibles relajan estas suposiciones, relajan parcialmente las restricciones y permiten a la solución no cumplir con exactamente todas las restricciones. Algunos tipos de CSP flexible incluyen:




Escribe un comentario o lo que quieras sobre Problema de satisfacción de restricciones (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!