Está en la página 1de 12

CAPITULO 3

PROBLEMAS DE
SATISFACCIÓN DE
RESTRICCIONES
INTRODUCCION
La programación por restricciones es una metodología de software utilizada para la descripción y posterior
resolución efectiva de cierto tipo problemas, típicamente combinatorios y de optimización. Estos problemas
aparecen en muy diversas áreas, incluyendo la IA, investigación operativa, bases de datos y sistemas de
recuperación de la información, etc., con aplicaciones en la planificación, razonamiento temporal, diseño en la
ingeniería, problemas de empaquetamiento, criptografía, diagnostico, toma de decisiones, etc.
Estos problemas pueden modelarse como Problemas de Satisfacción de Restricciones (Constmmt Satisfaction
Problems - CSP) y resolverse usando técnicas de satisfacción de restricciones, en general, se trata de grandes y
complejos problemas, normalmente de complejidad NP. Las etapas básicas para la resolución de un problema
CSP son su modelización y su posterior resolución mediante la aplicación de técnicas CSP especificas, que
incluyen procesos de búsqueda apoyados con métodos heurísticos y procesos inferenciales.
s
Muchas decisiones que tomamos a la hora de resolver diversos problemas cotidianos están sujetas a
restricciones, Decisiones tan cotidianas como fijar una cita, planificar un viaje, comprar un coche o preparar un
plato de cocina puede depender de muchos aspectos interdependientes e incluso conflictivos, cada uno de los
cuales esta sujeto a un conjunto de restricciones que se deben satisfacer para que la decisión sea valida.
Además, cuando se encuentra una solución que satisface plenamente a unos criterios, puede que no sea tan
apropiada para otros, por lo que, para obtener una solución optimizada, no suele ser suficiente con obtener una
única solución.
GENERALIZACION
La programación de restricciones puede dividirse en dos ramas claramente diferenciadas: la “satisfacción de
restricciones” y la “resolución de restricciones ” Ambas comparten la misma terminología, pero sus orígenes y
técnicas de resolución son diferentes. La satisfacción de restricciones trata con problemas que tienen dominios
finitos, mientras que la resolución de restricciones esta orientada principalmente a problemas sobre dominios
infinitos o dominios más complejos. Los conceptos clave en esta metodología corresponden a los aspectos de:
La modelización del problema, que permite representar un problema mediante un conjunto finito de variables,
un dominio de valores finito para cada variable y un conjunto de restricciones que acotan las combinaciones
validas de valores que las variables pueden tomar; en la modelización CSP, es fundamental la capacidad
expresiva, a fin de poder captar todos los aspectos significativos del problema a modelar.
Técnicas inferenciales que permiten deducir nueva información sobre el problema a partir de la información
explícitamente representada. Estas técnicas también permiten acotar y hacer mas eficiente el proceso de
búsqueda de soluciones.
Técnicas de búsqueda de la solución, apoyadas generalmente por criterios heurísticos, bien dependientes o
independientes del dominio, el objetivo es encontrar un valor para cada variable del problema de manera que se
satisfagan todas las restricciones del problema. En general, la obtención de soluciones en un CSP es NP-completo,
mientras que la obtención de soluciones optimizadas es NP- duro, no existiendo forma de verificar la optimalidad
de la solución en tiempo polinomial. Por ello, se requiere una gran eficiencia en los procesos de búsqueda.
DEFINICION DE UN PROBLEMA
Un problema de satisfacción de restricciones puede ser representado mediante una terna (X, D, C) donde:

X es un conjunto de n variables {X1…….Xn}

D = < D1….Dn > es un tupla de dominios finitos donde se interpretan las variables X, tal que la i - esima
componente D, es el dominio que contiene los posibles valores que pueden asignarse a la variable Xi. La
cardinalidad de cada dominio es di = |Di|.

C = {C1,C2, ….,Cp} es un conjunto finito de restricciones Cada restricción k-aria Ci, este definida sobre un conjunto
de k variables var (Ci) ⊆ X, denominado su ámbito, y restringe los valores que dichas variables pueden
simultáneamente tomar. Particularmente, una restricción es binaria cuando relaciona únicamente a dos variables
Xi y Xj, se suele denotar como Cij, Todas las restricciones definidas en un CSP son conjuntivas, de manera que una
solución debe de satisfacer a todas ellas.
EJEMPLO
Para el problema de las 4-Reinas, existen solamente dos soluciones que se detallan en la Figura. Asumiendo que
las variables {X1,X2,X3,X4}, representan las columnas, y sus dominios son las posibles filas {1, 4} donde colocar las
reinas, tenemos que: (X1, 3) es una instanciación de la variable X1, y ((X1, 2), (X2,4), (X3, 1), (X4, 3)) es una
solución del CSP, por lo que el CSP es consistente. El valor 3 es un valor consistente para X1, pero el valor 1 no lo
es. El dominio mínimo de X2 es {1,4}.
Una vez modelado el problema como un CSP, los
objetivos del CSP consisten en la satisfacibilidad
del mismo, es decir, obtener una o varias
soluciones, sin preferencia alguna, o bien obtener
una solución optima, o al menos una buena
solución, en base a una función objetivo
previamente definida en términos de algunas o
todas las variables. En este caso particular, se trata
de un Problema de Satisfacción y Optimización de
Restricciones, o por su acrónimo en ingles, CSOP
Instancias Solucion (Constraint Satisfactian and Optimization
Problem).
EJEMPLO Y MODELACION CSP
El primer paso en la resolución de un CSP es su
modelización, es decir, su representación en términos de
variables, dominios y restricciones. Al igual que ocurre
con el lenguaje natural, la modelización de un problema
se puede realizar de muchas maneras diferentes.
Respecto a la modelización de un problema CSP hay dos
aspectos básicos:

 La potencia expresiva de las restricciones, es decir, la


capacidad de modelar las restricciones realmente
existentes en el problema real.
 La eficiencia de la representación, ya que
dependiendo de la modelización CSP, el problema se
resolverá con mas o menos eficiencia.
EJEMPLO Y MODELACION CSP
COLORACIÓN DEL MAPA
Este problema parte de un conjunto de colores posibles para colorear cada región del mapa, de manera que
regiones adyacentes tengan distintos colores. En la formulación del CSP, definimos una variable por cada región
del mapa, y el dominio de cada variable es el conjunto de colores disponible. Para cada par de regiones contiguas
existe una restricción sobre las variables correspondientes que no permite la asignación de idénticos valores a las
variables. En el caso de la Figura tenemos un mapa con cuatro regiones z,y,w,x para ser coloreadas con los
posibles colores Rojo, Verde, Azul. La formulación CSP sería:
- Variables: {x, y, z, w}
- Dominio: {Roja Verde, Azul}, único
para las tres variables.
- Restricciones (definición intencional):
{x ≠ y; x ≠w; x ≠z; y ≠w; w ≠z }
Un CSP binario, puede ser representado mediante una red de restricciones, donde los nodos representan las
variables y los arcos representan las restricciones entre las mismas. En la Figura, se representa la red
correspondiente al problema del ejemplo, donde las variables correspondientes a regiones adyacentes están
conectadas por una arista. Hay cinco restricciones en el problema, es decir, cinco aristas en la red. Una solucion
para el problema es la asignación (x, R), (y, V), (w, V), (z,A). En esta asignación, todas las variables adyacentes
tienen valores diferentes,
EJEMPLO Y MODELACION CSP
CRIPTOGRAFÍA
El típico problema criptográfico send + more=money consiste en asignar a cada letra {s, e, n, d, m, o, r, y} un
dígito diferente del conjunto {0, ,9} de forma que satisfaga send + mory = money.
La manera mas fácil de modelar este problema es asignando una variable a cada
una de las letras, todas ellas con un dominio {0,9} y con las restricciones que
obliguen a que todas las variables tomen valores distintos y con la correspondiente
restricción para que se satisfaga “send + more = money”, De esta forma las
restricciones son:

- 103 (s + m) +102 (e + o) + 10 (n + r) + d + e = 104 m + 103o + 102 n + 10 e + y


- restricción de todas diferentes ≠ (s, e, n, d, m, o, r, y)
La restricción de “todas diferentes” puede reemplazarse por un conjunto de restricciones binarias, {s ≠ e, s ≠ n …
…..r ≠ y}, donde (Xi ≠ Xj) es la relación disyuntiva Xi {<, >} Xj. Sin embargo, para el algoritmo de resolución mas
general como es Backtracking, este modelo no es muy eficiente porque todas las variables necesitan ser
instanciadas antes de comprobar estas dos restricciones. De esta manera, no se podría podar el espacio de
búsqueda durante.
ALGORITMO BACKTRACKING
El backtracking (o método de retroceso o vuelta atrás) es una técnica general
de resolución de problemas, aplicable en problemas de optimización, juegos
y otros tipos.
El backtracking realiza una búsqueda exhaustiva y sistemática en el espacio
de soluciones. Por ello, suele resultar muy ineficiente.
Se puede entender como “opuesto” a avance rápido:
 Avance rápido: añadir elementos a la solución y no deshacer ninguna
decisión tomada.
 Backtracking: añadir y quitar todos los elementos. Probar todas las
combinaciones.
Esencialmente, la idea es encontrar la mejor combinación posible en un
momento determinado, por eso, se dice que este tipo de algoritmo es una
Búsqueda en profundidad. Durante la búsqueda, si se encuentra una
alternativa incorrecta, la búsqueda retrocede hasta el paso anterior y toma
la siguiente alternativa. Cuando se han terminado las posibilidades, se
vuelve a la elección anterior y se toma la siguiente opción (hijo [si nos
referimos a un árbol]).
ALGORITMO GENETICO
El algoritmo genético es una técnica de búsqueda basada en la teoría de la evolución de Darwin, que ha cobrado
tremenda popularidad en todo el mundo durante los últimos años.
Los Algoritmos Genéticos (AGs) son métodos adaptativos que pueden usarse para resolver problemas de
búsqueda y optimización. Están basados en el proceso genético de los organismos vivos
Un algoritmo genético consiste en una función matemática o una rutina de software que toma como entradas a
los ejemplares y retorna como salidas cuales de ellos deben generar descendencia para la nueva generación.
Los Algoritmos Genéticos usan una analogía directa con el comportamiento natural. Trabajan con una población
de individuos, cada uno de los cuales representa una solución factible a un problema dado. A cada individuo se
le asigna un valor ó puntuación, relacionado con la bondad de dicha solución. En la naturaleza esto equivaldría al
grado de efectividad de un organismo para competir por unos determinados recursos.

Cuanto mayor sea la adaptación de un individuo al problema, mayor será la probabilidad de que el mismo sea
seleccionado para reproducirse, cruzando su material genético con otro individuo seleccionado de igual forma.
Este cruce producirá nuevos individuos . descendientes de los anteriores . los cuales comparten algunas de las
características de sus padres. Cuanto menor sea la adaptación de un individuo, menor será la probabilidad de
que dicho individuo sea seleccionado para la reproducción, y por tanto de que su material genético se propague
en sucesivas generaciones.
ALGORITMO GENETICO
Ventajas y Desventajas

 No necesitan conocimientos específicos sobre el problema que intentan resolver.


 Operan de forma simultánea con varias soluciones, en vez de trabajar de forma secuencial como las técnicas
tradicionales.
 Cuando se usan para problemas de optimización maximizar una función objetivo- resultan menos afectados
por los máximos locales (falsas soluciones) que las técnicas tradicionales.
 Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivamente paralelas.
 Usan operadores probabilísticos, en vez de los típicos operadores determinísticos de las otras técnicas.
 Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta medida de los
parámetros que se utilicen tamaño de la población, número de generaciones, etc.-.
 Pueden converger prematuramente debido a una serie de problemas de diversa índole.
ALGORITMO GENETICO
Dado un problema específico a resolver, la entrada del AG es un conjunto de soluciones potenciales a ese problema,
codificadas de alguna manera, y una métrica llamada función de aptitud, o fitness, que permite evaluar cuantitativamente a
cada solución candidata. Estas candidatas pueden ser soluciones que ya se sabe que funcionan, con el objetivo de que el AG
las mejore, pero se suelen generar aleatoriamente.

A partir de ahí, AG evalúa cada candidata de acuerdo con la función de


aptitud. Por supuesto, se debe tener en cuenta que estas primeras
candidatas generadas aleatoriamente, tendrán una eficiencia mínima
con respecto a la resolución del problema, y la mayoría no funcionarán
en absoluto. Sin embargo, por puro azar, unas pocas pueden ser
prometedoras, pudiendo mostrar algunas características que muestren,
aunque sólo sea de una forma débil e imperfecta, cierta capacidad
de solución del problema.
Estas candidatas prometedoras se conservan y se les permite reproducirse. Se realizan múltiples copias de ellas, pero estas
copias no son perfectas, sino que se les introducen algunos cambios aleatorios durante el proceso de copia, a modo de las
mutaciones que pueden sufrir los descendientes de una población. Luego, esta descendencia digital prosigue con la siguiente
generación, formando un nuevo conjunto de soluciones candidatas, y son de nuevo sometidas a una ronda de evaluación de
aptitud. Las candidatas que han empeorado o no han mejorado con los cambios en su código son eliminadas de nuevo; pero,
de nuevo, por puro azar, las variaciones aleatorias introducidas en la población pueden haber mejorado a algunos individuos,
convirtiéndolos en mejores soluciones del problema, más completas o más eficientes. El proceso se repite las iteraciones que
haga falta, hasta que obtengamos soluciones suficientemente buenas para nuestros propósitos.

También podría gustarte