You are on page 1of 17

Introduccin a la Programacin de Restricciones o o

Federico Barber , Miguel A. Salido

Departamento de Sistemas Informticos y Computacin a o Universidad Politcnica de Valencia, Spain e fbarber@dsic.upv.es

Departamento de Ciencias de la Computacin e Inteligencia Articial o Universidad de Alicante, Spain msalido@dccia.ua.es

Resumen La programacin de restricciones es una tecnolog software utilizada para la descripcin y posterior resoluo a o cin efectiva de grandes y complejos problemas, particularmente combinatorios, de muchas areas de la vida o real. Muchos de estos problemas pueden modelarse como problemas de satisfaccin de restricciones (CSPs) o y resolverse usando tcnicas de programacin de restricciones. Esto incluye problemas de areas tales como e o inteligencia articial, investigacin operativa, bases de datos, sistemas expertos, etc. Algunos ejemplos son o scheduling, planicacin, razonamiento temporal, diseo en la ingenier problemas de empaquetamiento, o n a, criptograf diagnosis, toma de decisiones, etc. El manejo de este tipo de problemas es NP [26]. En este a, art culo introductorio se presenta una introduccin de los conceptos, algoritmos y tcnicas ms relevantes o e a en el area de CSPs que servir para que el lector tenga un conocimiento global de los CSPs as como una a notacin general que servir para comprender mejor los siguientes trabajos presentados en esta monograf o a a. Palabras clave: Problemas de Satisfaccin de Restricciones, Inteligencia Articial, Optimizacin. o o

1.

Introduccin o

Hoy en d muchas decisiones que tomamos a a, la hora de resolver nuestros problemas cotidianos estn sujetos a restricciones. Problemas tan cotia dianos como jar una cita con unos amigos, comprar un coche o preparar una paella puede depender de muchos aspectos interdependientes e incluso conictivos, cada uno de los cuales est sujeto a a un conjunto de restricciones. Adems, cuando a se encuentra una solucin que satisface plenameno te a unos, puede que no sea tan apropiada para otros, por lo que a veces no es suciente con obtener una unica solucin. o Durante los ultimos aos, la programacin de res n o 1

tricciones ha generado una gran expectacin entre o expertos de muchas areas debido a su potencial para la resolucin de grandes problemas reales. o Por ello, no es de sorprender, que la ACM (Association for Computer Machinery) ha identicado a la programacin de restricciones como una de o las direcciones estratgicas en la investigacin ine o formtica [4]. Sin embargo, al mismo tiempo, se a considera la programacin de restricciones como o una de las tecnolog menos conocida y comprenas dida. La programacin de restricciones se dene como o el estudio de sistemas computacionales basados en restricciones. La idea de la programacin de o restricciones es resolver problemas mediante la declaracin de restricciones sobre el area del proo

blema y consecuentemente encontrar soluciones que satisfagan todas las restricciones, y en su caso optimicen unos criterios determinados. Constraint Programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it[E. Freuder] El Origen de la Programacin de Restrico ciones Los primeros trabajos relacionados con la programacin de restricciones datan de los aos 60 y 70 o n en el campo de la Inteligencia Articial. La programacin de restricciones puede dividirse o en dos ramas claramente diferenciadas: la satisfaccin de restricciones y la resolucin de restrico o ciones. Ambas comparten la misma terminolog a pero sus or genes y tcnicas de resolucin son die o ferentes. La satisfaccin de restricciones trata con o problemas con dominios nitos, mientras que la resolucin de restricciones est orientada princio a palmente a problemas sobre dominios innitos o dominios ms complejos. En este art a culo nos centraremos principalmente en los problemas de satisfaccin de restricciones, que bsicamente cono a siste en un conjunto nito de variables, un dominio de valores para cada variable y un conjunto de restricciones que acotan la combinacin de valores o que las variables pueden tomar. As el objetivo , es encontrar un valor para cada variable de manera que se satisfagan todas las restricciones del problema. En general, la obtencin de soluciones o en este tipo de problemas NP-completo. Adicionalmente, la obtencin de soluciones optimizadas o es en general NP-dura. Ejemplo. El problema de coloracin del mapa o es un problema clsico que se puede formular coa mo un CSP. En este problema, hay un conjunto de colores y queremos colorear cada regin del o mapa de manera que las regiones adyacentes tengan distintos colores. En la formulacin del CSP, o hay una variable por cada regin del mapa, y el o dominio de cada variable es el conjunto de colores disponible. Para cada par de regiones contiguas existe una restriccin sobre las variables o correspondientes que no permite la asignacin de o idnticos valores a las variables. Dicho mapa puee de ser representado mediante un grafo donde los nodos son variables que representan a los colores asociados a las regiones y cada par de regiones adyacentes estn unidas por una arista. En la a Figura 1 se muestra el ejemplo del problema de coloracin del mapa. Seleccionamos cuatro regioo

nes x,y,z,w para ser coloreadas. Cada regin del o mapa se corresponde con una variable en el grafo. Si asumimos que cada regin puede colorearse o con uno de los tres colores, rojo (r), verde (v) y azul (a), entonces cada variable del grafo tiene tres posibles valores {r,v,a}.
   

Figura 1. Problema de coloracin del mapa o

Las restricciones de este problema expresan que regiones adyacentes tienen que ser coloreadas con diferentes colores. En la representacin en el grao fo, las variables correspondientes a regiones adyacentes estn conectadas por una arista. Hay cinco a restricciones en el problema, es decir, cinco aristas en el grafo. Una solucin para el problema es o la asignacin (x, r), (y, v), (z, v), (w, a). En esta o asignacin todas las variables adyacentes tienen o valores diferentes.

2.

Resolucin del CSP o

La resolucin de un problema de satisfaccin de o o restricciones (CSP) consta de dos fases diferentes: modelar el problema como un problema de satisfaccin de restricciones. La modelizao cin expresa el problema mediante una sino taxis de CSPs, es decir, mediante un conjunto de variables, dominios y restricciones del CSP. En la seccin 3 presentamos la moo delizacin de un CSP. o procesar el problema de satisfaccin de reso tricciones resultante. Una vez formulado el problema como un CSP, hay dos maneras de procesar las restricciones: 1. Tcnicas de consistencia. Se trata de e tcnicas para la resolucin de CSPs bae o sadas en la eliminacin de valores ino consistentes de los dominios de las variables.

 

 

2.

Algoritmos de bsqueda. Estos algoritu mos se basan en la exploracin siso temtica del espacio de soluciones hasa ta encontrar una solucin o probar que o no existe tal solucin. o

Las tcnicas de consistencia o inferenciales e permiten deducir informacin del problema, o (niveles de consistencia, valores posibles de variables, dominios m nimos, etc.), aunque en general se combinan con las tcnicas de e bsqueda, ya que reducen el espacio de sou luciones y los algoritmos de bsqueda exu ploran dicho espacio resultante.

king1 (BT), este modelo no es muy eciente porque con BT, todas las variables necesitan ser instanciadas antes de comprobar estas dos restricciones. De esta manera no se puede podar el espacio de bsqueda para agilizar la bsqueda de u u soluciones. Adems, la primera restriccin es una a o igualdad en la que forman parte todas las variables del problema (restriccin global) por lo que o diculta el proceso de consistencia. Veamos a continuacin un modelo ms eciente o a para resolver el problema. Este modelo utiliza los bit de acarreo para descomponer la ecuacin ano terior en una coleccin de pequeas restricciones. o n Tal y como est planteado el problema, M debe a de tomar el valor 1 y por lo tanto S solamente puede tomar valores de {1, ..., 9}. Adems de a las variables del modelo anterior, el nuevo modelo incluye tres variables adicionales, c1 , c2 , c3 que llamaremos portadoras. Los dominios de las variables e, n, d, o, r e y son {0, ..., 9}, el dominio de s es {1, ..., 9}, el dominio de m es {1}, y los dominios de las variables portadores c1 , c2 , c3 son {0, 1}. Con la ayuda de las variables portadores, la restriccin de la ecuacin anterior puede deso o componerse en varias restricciones ms pequeas: a n e + d = y + 10c1 ; c1 + n + r = e + 10c2 ; c2 + e + o = n + 10c3 ; c3 + s + m = 10m + o. restriccin de todas diferentes (s, e, n, d, o m, o, r, y); La ventaja de este modelo es que estas restricciones ms pequeas pueden comprobarse antes en a n la bsqueda de backtracking, y as podarse muu chas inconsistencias. En las dos formulaciones anteriores, la restriccin de todas diferentes puede reemplazarse por o un conjunto de pequeas restricciones, es decir n e = s, ..., r = y, obteniendo as un modelo alter nativo. Como hemos visto en las formulaciones anteriores, dependiendo de la transformacin que se hao ga del problema planteado en lenguaje natural a la modelizacin en forma de CSP, el problema se o resolver con ms o menos eciencia. a a

3.

Modelizacin del CSP o

Generalmente la declaracin de un problema se o suele expresar de muchas maneras diferentes, e incluso en lenguaje natural. Una parte muy importante para la resolucin de problemas de la vio da real es el modelado del problema en trminos e de CSPs, es decir, variables, dominios y restricciones. A continuacin consideraremos un ejemplo en el o cual veremos distintas modelizaciones de un mismo problema y las ventajas de una modelizacin o adecuada para resolverlo. Consideremos el conocido problema criptogra co send+more=money utilizado en [37]. El problema puede ser declarado como: asignar a cada letra {s, e, n, d, m, o, r, y} un d gito diferente del conjunto {0,...,9} de forma que se satisfaga send+more=money. La manera ms fcil de modelar este problema a a es asignando una variable a cada una de las letras, todas ellas con un dominio {0,...,9} y con las restricciones de que todas las variables toman valores distintos y con la correspondiente restriccin para que se satisfaga send+more=money. o De esta forma las restricciones (no binarias) son: 103 (s + m) + 102 (e + o) + 10(n + r) + d + e = 104 m + 103 o + 102 n + 10e + y; restriccin de todas diferentes (s, e, n, d, o m, o, r, y); Para el algoritmo ms general como es Backtraca
1 Este

algoritmo lo detallamos en la siguiente seccin o

Concretamente, en el contexto de los problemas de satisfaccin de restricciones no binarias, cuano do tratamos de resolver un CSP no binario ya modelado, nos volvemos a encontrar con un nuevo problema crucial de modelizacin. Debemos o convertir el problema no binario en uno binario, o debemos dejarlo en su formulacin original? o

Bsicamente los objetivos que deseamos obtener a de un CSP se centran en encontrar: una solucin, sin preferencia alguna o todas las soluciones una optima, o al menos una buena solucin, o dando alguna funcin objetivo denida en o trminos de algunas o todas las variables. e

4.

Conceptos CSP

En esta seccin presentamos los conceptos y objeo tivos bsicos que son necesarios en los problemas a de satisfaccin de restricciones y que utilizaremos o a lo largo de esta monograf a. CSP. Un problema de satisfaccin de restriccioo nes (CSP) es una terna (X, D, C) donde: X es un conjunto de n variables {x1 , ..., xn }. D =< D1 , ..., Dn > es un vector de dominios. La isima componente Di es el domie nio que contiene todos los posibles valores que se le pueden asignar a la variable xi . C es un conjunto nito de restricciones. Cada restriccin naria (cn ) est denida o a sobre un conjunto de variables {x1 , ..., xn } restringiendo los valores que las variables pueden simultneamente tomar. a Asignacin. Una asignacin de variables, tamo o bin llamado instanciacin, (x, a) es un par e o variable-valor que representa la asignacin del o valor a a la variable x. Una instanciacin de o un conjunto de variables es una tupla de pares ordenados, donde cada par ordenado (x, a) asigna el valor a a la variable x. Una tupla ((x1 , a1 ), ..., (xi , ai )) es localmente consistente si satisface todas las restricciones formadas por variables de la tupla. Para simplicar la notacin, o sustituiremos la tupla ((x1 , a1 ), ..., (xi , ai )) por (a1 , ..., ai ). Solucin. Una solucin a un CSP es una asigo o nacin de valores a todas las variables de forma o que se satisfagan todas las restricciones. Es decir, una solucin es una tupla consistente que contieo ne todas las variables del problema. Una solucin o parcial es una tupla consistente que contiene algunas de las variables del problema. Por lo tanto diremos que un problema es consistente, si existe al menos una solucin, es decir una tupla consiso tente (a1 , a2 , ..., an ).

4.1.

Notacin CSP o

Antes de entrar con ms detalles en los problemas a de satisfaccin de restricciones, vamos a resumir o la notacin que utilizaremos a lo largo de esta o monograf a. General: El nmero de variables de un CSP lo u denotaremos por n. La longitud del dominio una variable xi lo denotamos por di = |Di |. El nmeu ro de restricciones totales lo denotaremos por c. La aridad mxima de una restriccin la denotarea o mos por k. En el caso de problemas disyuntivos, al nmero mximo de disyunciones que tiene una u a restriccin disyuntiva lo denotaremos por l. o Variables: Para representar las variables utilizaremos las ultimas letras del alfabeto en cursi va, por ejemplo x, y, z, as como esas mismas le tras con un sub ndice, por ejemplo x1 , xi , xj . Estos sub ndices son letras seleccionada por mitad del alfabeto o nmeros enteros. Al conjunto de u variables xi , ..., xj lo denotaremos por Xi,...,j . Dominios/Valores: : El dominio de una variable xi lo denotamos por Di . A los valores individuales de un dominio los representaremos mediante las primeras letras del alfabeto, por ejemplo, a, b, c, y al igual que en las variables tambin e pueden ir seguidas de sub ndices. La asignacin o de un valor a a una variable x la denotaremos mediante el par (x, a). Como ya mencionamos en la denicin (4) una tupla de asignacin de vao o riables ((x1 , a1 ), ..., (xi , ai )) la denotaremos por (a1 , ..., ai ). Restricciones: : Una restriccin karia entre las o variables {x1 , ..., xk } la denotaremos por C1..k . De esta manera, una restriccin binaria entre las vao riables xi y xj la denotaremos por Cij . Cuando los ndices de las variables en una restriccin no o

son relevantes, lo denotaremos simplemente por C. El conjunto de variables involucrados en una restriccin Ci..k lo representaremos por XCi..k . El o resto de la notacin que surja a lo largo de la o monograf se denir cuando sea necesaria. a a

4.2.

Restricciones

En esta seccin veremos algunas deniciones soo bre restricciones y explicaremos algunas de las propiedades bsicas. a La aridad de una restriccin es el nmero de vao u riables que componen dicha restriccin. Una reso triccin unaria es una restriccin que consta de o o una sola variable. Una restriccin binaria es una o restriccin que consta de dos variables. Una reso triccin ternaria consta de tres variables. Una reso triccin no binaria (o n aria) es una restriccin o o que involucra a un nmero arbitrario de variables. u Ejemplo. La restriccin x 5 es una restrico cin unaria sobre la variable x. La restriccin o o x4 x3 = 3 es una restriccin binaria. La reso triccin 2x1 x2 + 4x3 4 es una restriccin o o ternaria. Por ultimo un ejemplo de restricciones naria ser x1 + 2x2 x3 + 5x4 9. a Una tupla p de una restriccin Ci..k es un eleo mento del producto cartesiano Di .. Dk . Una tupla p que satisface la restriccin Ci..k se le llao ma tupla permitida o vlida. Una tupla p que no a satisface la restriccin Ci..k se le llama tupla no o permitida o no vlida. Una tupla p de una resa triccin Ci..k se dice que es soporte para un valor o a Dj si la variable xj XCi..k , p es una tupla permitida y contiene a a en la correspondiente posicin de xj en la restriccin. o o De esta manera, vericar si una tupla dada es permitida o no por una restriccin se llama comproo bacin de la consistencia. Una restriccin puede o o denirse extensionalmente mediante un conjunto de tuplas vlidas o no vlidas y tambin intencioa a e nalmente mediante una funcin aritmtica. En el o e caso de CSPs continuos es imposible representar las restricciones extensionalmente ya que hay un nmero innito de tuplas vlidas y no vlidas. u a a Ejemplo. Consideremos una restriccin entre 4 o variables x1 , x2 , x3 , x4 , con dominios {1, 2}, don2 Arco-Consistencia

de la suma entre las variables x1 y x2 es menor o igual que la suma entre x3 y x4 . Esta restriccin o puede representarse intencionalmente mediante la expresin x1 + x2 x3 + x4 . Adems, esta o a restriccin tambin puede representarse extensioo e nalmente mediante el conjunto de tuplas permitidas {(1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 2, 1), (1, 1, 2, 2), (2, 1, 2, 2), (1, 2, 2, 2), (1, 2, 1, 2), (1, 2, 2, 1), (2, 1, 1, 2), (2, 1, 2, 1), (2, 2, 2, 2)}, o mediante el conjunto de tuplas no permitidas {(1, 2, 1, 1), (2, 1, 1, 1), (2, 2, 1, 1), (2, 2, 1, 2), (2, 2, 2, 1)}.

5.

Consistencia en un CSP

Los algoritmos de bsqueda sistemtica para la u a resolucin de CSPs tienen como base la bsqueo u da basada en backtracking. Sin embargo, esta bsqueda sufre con frecuencia una explosin comu o binatoria en el espacio de bsqueda, y por lo tanto u no es por s solo un mtodo sucientemente e e ciente para resolver CSPs. Una de las principales dicultades con las que nos encontramos en los algoritmos de bsqueda es la aparicin de inconu o sistencias locales que van apareciendo continuamente [26]. Las inconsistencias locales son valores individuales o combinacin de valores de las o variables que no pueden participar en la solucin o porque no satisfacen alguna propiedad de consistencia. Por ejemplo, si el valor a de la variable x es incompatible con todos los valores de una variable y que est ligada a x mediante una restrica cin, entonces a es inconsistente con respecto a o la propiedad local de consistencia de arco o arcoconsistencia2 . Por lo tanto si forzamos alguna propiedad de consistencia A podemos borrar todos los valores que son inconsistentes con respecto a la propiedad A. Esto no signica que todos los valores que no pueden participar en una solucin o sean borrados. Puede haber valores que son consistentes con respecto a A pero son inconsistentes con respecto a cualquier otra consistencia local B. Sin embargo, consistencia global signica que todos los valores que no pueden participar en una solucin son eliminados. o Las restricciones expl citas en un CSP, que generalmente coinciden con las que se conocen expl citamente del problema a resolver, generan cuando se combinan restricciones impl citas que pueden causar inconsistencias locales. Si un algoritmo de bsqueda no almacena las restricciones impl u citas, repetidamente redescubrir la inconsistencia a

lo deniremos ms adelante. a

local causada por ellas y malgastar esfuerzo de a bsqueda tratando repetidamente de intentar insu tanciaciones que ya han sido probadas. Veamos el siguiente ejemplo.

Un CSP nario es (i, j)-consistente si y solamente si xi X, Di = y cualquier instanciacin consistente de i variables puede o ser extendido a una instanciacin consisteno te que involucra a j variables adicionales. Un CSP binario es arco-consistente si y solamente si a Di , xj X, con Cij C, b Dj tal que b es un soporte para a en Cij . Un CSP binario es path-consistente si y solamente si xi , xj X, (xi , xj ) es pathconsistente. Un par de variables (xi , xj ) es path-consistente si y slo si (a, b) o Cij , xk X, c Dk por lo que c es un soporte para a en cik y c es un soporte para b en cjk . Un CSP binario es fuertemente pathconsistente si y solamente si es (j, 1)consistente para j 2. Un CSP binario es inversamente pathconsistente si y solamente si (xi , a) D, xj , xk X tal que j = i = k = j, (xj , b) D y (xk , c) D tal que b es un soporte para a en Cij , c es un soporte para a en Cik y c es un soporte para b en Cjk . Un CSP binario es vecino inversaconsistente si y solamente si (xi , a) D, (xi , a) se puede extender a una instanciacin consistente de los vecinos de xi . o Un CSP binario es path-consistente restringido si y solamente si xi X, Di = , Di es arco-consistente y, (xi , a) Di , xj X tal que (xi , a) tiene un unico soporte b en Dj , xk X tal que {Cik , Cjk } C, c Dk tal que c es un soporte para a en Cik y c es un soporte para b en Cjk . Un CSP binario es simple arco-consistente si y solamente si xi X, Di = y (xi , a) D, P |Dxi ={a} tiene un sub-dominio arco-consistente. Denotamos P |Dxi ={a} como el CSP obtenido restringiendo Di al valor a en un CSP P , donde xi X. Un CSP nario es arco-consistente generalizado si y solamente si Di D, Di = y Di es arco-consistente generalizado. Un dominio Di es arco-consistente generalizado si y solo si a Di , xj , ..., xk X, con Cj,...i,...,k C, existe una tupla t = {b, ..., a, ...c} permitida por Cj,...i,...k tal que t es un soporte para (xi , a) en Cj,...i,...k .

Ejemplo. Tenemos un problema con tres variables x, y, z, con los dominios {0, 1}, {2, 3} y {1, 2} respectivamente. Hay dos restricciones en el problema: y < z y x = y. Si asumimos que la bsqueu da mediante backtracking trata de instanciar las variables en el orden x, y, z entonces probar toa das las posibles 23 combinaciones de valores para las variables antes de descubrir que no existe solucin alguna. Si miramos la restriccin entre y y o o z podremos ver que no hay ninguna combinacin o de valores para las dos variables que satisfagan la restriccin. Si el algoritmo pudiera identicar eso ta inconsistencia local antes, se evitar un gran a esfuerzo de bsqueda. u En la literatura se han propuesto varias tcnie cas de consistencia local como formas de mejorar la eciencia de los algoritmos de bsqueda. Tau les tcnicas borran valores inconsistentes de las e variables o inducen restricciones impl citas que nos ayudan a podar el espacio de bsqueda. Estas u tcnicas de consistencia local se usan como etapas e de preproceso donde se detectan y se eliminan las inconsistencias locales antes de empezar o durante la bsqueda con el n de reducir el arbol de u bsqueda. u Freuder present una nocin genrica de consiso o e tencia llamada (i, j)-consistencia [16]. Un problema es (i, j)-consistente si cualquier solucin a un o subproblema con i variables puede ser extendido a una solucin incluyendo j variables adicioo nales. La mayor de las formas de consistencia a se pueden ver como especicaciones de la (i, j)consistencia. Cuando i es k 1 y j es 1, podremos obtener la k-consistencia [14]. Un problema es fuertemente k-consistente si es i-consistente para todo i k. Un problema fuertemente kconsistente con k variables se llama globalmente consistente. La complejidad espacial y temporal en el peor caso de forzar la k-consistencia es exponencial con k. Adems, cuando k 2, forzar a la k-consistencia cambia la estructura del grafo de restricciones aadiendo nuevas restricciones no n unarias. Esto hace que la k-consistencia sea impracticable cuando k es grande. A continuacin o damos unas deniciones formales de algunas de las consistencias locales que ms tarde discutirea mos con detalle, basadas en Debruyne y Bessire e [8].

5.1.

Niveles de Consistencia Local

Pueden denirse caso particulares de k consistencia. Detalles de algoritmos correspondientes pueden verse en [25]. Consistencia de Nodo (1-consistencia) La consistencia local ms simple de todas es la a consistencia de nodo o nodo-consistencia. Forzar este nivel de consistencia nos asegura que todos los valores en el dominio de una variable satisfacen todas las restricciones unarias sobre esa variable. As un problema es nodo-consistente si y slo si , o todas sus variables son nodo-consistentes: xi X, Ci , a Di : a satisface Ci

hay al menos un valor b [8, 10] de manera que se satisface la restriccin Cij . Sin embargo si la o restriccin fuese Cij = xi > xj no ser arcoo a consistente.

Figura 3. Consistencia de arco, (arco-consistencia)

As un problema es arco-consistente si y slo si , o todos sus arcos son arco-consistentes:

Ejemplo. Consideremos una variable x en un problema con dominio 2, 15 y la restriccin unaria o x 7. La consistencia de nodo eliminar el intera valo 8, 15 del dominio de x. En la Figura 2 mostramos el resultado de aplicar nodo-consistencia a la variable x.
G&I DHC AB@ 9 FBE DBC B@ 9 G A

Cij C, a Di , b Dj tal que b es un soporte para a en Cij .

Consistencia de caminos (3-consistencia) La consistencia de caminos [29] (Pathconsistency) es un nivel ms alto de consistencia a local que la arco-consistencia. La consistencia de caminos requiere para cada par de valores a y b de dos variables xi y xj , que la asignacin de o a a xi y de b a xj satisfaga la restriccin entre o xi y xj , y que adems exista un valor para cada a variable a lo largo del camino entre xi y xj de forma que todas las restricciones a lo largo del camino se satisfagan. Montanari demostr que un o CSP satisface la consistencia de caminos si y slo o si todos los caminos de longitud dos cumplen la consistencia de caminos [29]. En esta propiedad se basa el algoritmo Transitive Closure Algorithm (TCA) [29][26], el cual obtiene la consistencia de caminos para CSPs binarios, deduciendo nuevas restricciones derivadas. Ms concretamente elia mina valores de los dominios de las variables, y acotan las restricciones de forma que el CSP satisface la consistencia de caminos. As un problema satisface la consistencia de ca, minos si y slo si todo par de variables (xi , xj ) es o path-consistente:

Figura 2. Consistencia de nodo, (nodo-consistencia)

Consistencia de Arco (2-consistencia) Un problema binario es arco-consistente si para cualquier par de variables restringidas xi y xj , para cada valor a en Di hay al menos un valor b en Dj tal que las asignaciones (xi , a) y (xj , b) satisfacen la restriccin entre xi y xj . Cualquier o valor en el dominio Di de la variable xi que no es arco-consistente puede ser eliminado de Di ya que no puede formar parte de ninguna solucin. o El dominio de una variable es arco-consistente si todos sus valores son arco-consistentes. Ejemplo. Dada la restriccin Cij = xi < xj de o la Figura 3, podemos observar que el arco Cij es consistente, ya que para cada valor a [3, 6]

(a, b) Cij , xk X, c Dk tal que c es un soporte para a en cik y para b en cjk .

a d Y SHc Hb W

V 0T

V T h U T f pi$gV U e H` SX W a Y U $T

)0( )0( ' ' &% $" !     #     

I P HRSQ9 87  6 &53   1   4 2   

Cuando un problema satisface la consistencia de caminos y adems es nodo-consistente y a arco-consistente se dice que satisface fuertemente la consistencia de caminos (strongly pathconsistent). Ejemplo. Dado el problema representado mediante el grafo de restricciones de la Figura 4, podemos observar que el problema satisface la consistencia de caminos ya que cualquier camino entre un par de nodos lo es.
r

En general, un etiquetado globalmente consistente puede requerir de forma expl cita representar restricciones para todas las variables del problema, es decir, generar etiquetas n 1dimensionales para un problema de talla n forzando la nconsistencia. Esta tarea tiene una complejidad exponencial en el peor caso. Para clases especiales de problemas, niveles bajos de consistencia son equivalentes a la consistencia global. Estos resultados permiten a los algoritmos polinmicos llevar a cabo etiquetados globalmente o consistentes. Los podemos resumir en los siguientes:

Figura 4. Consistencia de caminos

5.2.

Consistencia Global

A veces es deseable una nocin ms fuerte que o a la consistencia local. Decimos que un etiquetado, construido mediante un algoritmo de consistencia, es globalmente consistente si contiene solamente aquellas combinaciones de valores que forman parte de al menos una solucin. o Dado un CSP (X, D, C), se dice que es globalmente consistente si y slo si xi X, a Di , o xi = a forma parte de una solucin del CSP. o Un etiquetado globalmente consistente es una representacin compacta y conservadora de todas o las soluciones admitidas por un CSP. Es correcto en el sentido de que el etiquetado nunca admite una combinacin de valores que no desemboque o en una solucin. Es completo en el sentido de que o todas las soluciones estn representadas en l. En a e una red de restricciones globalmente consistente la bsqueda puede llevarse a cabo sin backtracu king [15].
3 Un

CSP es convexo cuando sus restricciones determinan un espacio de soluciones convexo.

y w gx H&u

y w v &x H&u y& wSu v y w v &x Hu t

y &x wHu y w v gx H&u q

La Arco-consistencia es equivalente a la consistencia global cuando la red de restricciones es un arbol [15]. La consistencia de caminos es equivalente a la consistencia global cuando el CSP es convexo3 y binario [10][36].

6.

Algoritmos de B squeda u

Los algoritmos de Backtracking es la base fundamental de los algoritmos de bsqueda sistemtiu a ca para la resolucin de CSPs. Estos algoritmos o buscan a travs del espacio de las posibles asige naciones de valores a las variables garantizando encontrar una solucin, si es que existe, o demoso trando que el problema no tiene solucin, en caso o contrario. Es por ello por lo que se conocen como algoritmos completos. Los algoritmos incompletos, que no garantizan encontrar una solucin, o tambin son muy utilizados en problemas de sae tisfaccin de restricciones y en problemas de opo timizacin debido a su mayor eciencia y el alto o coste que requiere una bsqueda completa. Estos u algoritmos incluyen algoritmos genticos, bsquee u da tab, etc. u En la literatura se han desarrollado muchos algoritmos de bsqueda completa para CSPs binarios. u Algunos ejemplos son: backtracking cronolgico, o backjumping [20], conict-directed backtracking [31], backtracking dinmico [22], forwarda checking [23], minimal forward checking [11], algoritmos h bridos como forward checking con conict-directed backtracking [31] y manteniendo arco-consistencia (MAC) [20] [33]. Una revisin de estos algoritmos puede verse en [27]. o

Algunos de los algoritmos anteriores se han extendido a CSP no binarios. Por ejemplo hay varias extensiones de forward checking para problemas no binarios [5]. Adems MAC se ha extendido a a un algoritmo que mantiene la arco-consistencia generalizada sobre restricciones de cualquier aridad. En esta seccin discutimos algunos de los o algoritmos de bsqueda ms comunes. u a

es solucin del problema. Un nodo del arbol de o bsqueda es consistente si la asignacin parcial u o actual es consistente, o en otras palabras, si la tupla correspondiente a ese nodo es consistente. Los nodos que se encuentran prximos a la ra o z, se les llama nodos superciales. Los nodos prxio mos a las hojas del arbol de bsqueda se le llaman u nodos profundos. La Figura 5 muestra un ejemplo con tres variables y cuyos dominios son 0 y 1. Cada variable corresponde a un nivel en el arbol. En el nivel 0 no se ha hecho ninguna asignacin, por lo que se reo presenta mediante la tupla (, , ). Los dems a nodos corresponden a tuplas donde al menos se ha asignado una variable. Por ejemplo el nodo hoja que se encuentra a la derecha en el arbol de bsqueda es el nodo (1, 1, 1), donde todas las u variables toman el valor 1. En la bsqueda priu mero en profundidad del arbol de bsqueda, la u variable correspondiente al nivel actual se llama variable actual. Las variables correspondientes a niveles menos profundos se llaman variables pasadas. Las variables restantes que se instanciarn a ms tarde se llaman variables futuras. Ms detaa a lles y especicacin de algunos de estos algoritmos o pueden tambin verse en esta misma monograf e a [25].

7.

El Arbol de B squeda u

Las posibles combinaciones de la asignacin de o valores a las variables en un CSP genera un espacio de bsqueda que puede ser visto como un u arbol de bsqueda. La bsqueda mediante back u u tracking en un CSP corresponde a la tradicional exploracin primero en profundidad en el arbol o de bsqueda (Figura 5). Si asumimos que el oru den de las variables es esttico y no cambia dua rante la bsqueda entonces el nodo en el nivel k u del arbol de bsqueda representa un estado donde u las variables x1 , ..., xk estn asignadas y el resto a xk+1 , ..., xn no lo estn. Nosotros podemos asiga nar cada nodo en el arbol de bsqueda con la tu u pla consistente de todas las asignaciones llevadas a cabo. La ra del arbol de bsqueda represenz u ta la tupla vac donde ninguna variable tiene a, asignado valor alguno.

7.1.

Backtracking Cronolgico o

Figura 5. El Arbol de b squeda u

Los nodos en el primer nivel son 1 tuplas que representan estados donde se les ha asignado un valor a la variable x1 . Los nodos en el segundo nivel son 2 tuplas que representan estados donde se le asignan valores a las variables x1 y x2 , y as sucesivamente. Si n es el nmero de varia u bles del problema, los nodos en el nivel n, que representan las hojas del arbol de bsqueda, son u n tuplas, que representan la asignacin de valoo res para todas las variables del problema. De esta manera, si una n tupla es consistente, entonces

El algoritmo de bsqueda sistemtica para resolu a ver CSPs es el Algoritmo de Backtracking Cronolgico (BT). Si asumimos un orden esttico de o a las variables y de los valores en las variables, este algoritmo trabaja de la siguiente manera. El algoritmo selecciona la siguiente variable de acuerdo al orden de las variables y le asigna su prximo o valor. Esta asignacin de la variable se comprueba o en todas las restricciones en las que forma parte la variable actual y las anteriores. Si todas las restricciones se han satisfecho, el backtracking cronolgico selecciona la siguiente variable y trata de o encontrar un valor para ella de la misma manera. Si alguna restriccin no se satisface entonces o la asignacin actual se deshace y se prueba con o el prximo valor de la variable actual. Si no se o encuentra ningn valor consistente entonces teu nemos una situacin sin salida (dead-end ) y el o algoritmo retrocede a la variable anteriormente asignada y prueba asignndole un nuevo valor. Si a asumimos que estamos buscando una sola solucin, el backtracking cronolgico naliza cuando o o a todas las variables se les ha asignado un valor, en cuyo caso devuelve una solucin, o cuando o

0

&

B i B Hi B H B

todas las combinaciones de variable-valor se han probado sin xito, en cuyo caso no existe solucin. e o Es fcil ver como el backtracking cronolgico puea o de ser generalizado a restricciones no binarias. Cuando se prueba un valor de la variable actual, el algoritmo comprobar todas las restricciones en a las que slo forman parte la variable actual y las o anteriores. Si una restriccin involucra a la variao ble actual y al menos una variable futura, entonces esta restriccin no se comprobar hasta que se o a hayan comprobado todas las variables futuras de la restriccin. Por ejemplo, si nosotros tenemos las o restricciones x1 + x2 + x3 5 y x1 + x3 + x4 0 y x3 es la variable actual entonces el backtracking cronolgico comprobar la primera restrico a cin, pero deber esperar hasta que tratemos de o a instanciar x4 antes de comprobar la segunda restriccin. o El backtracking cronolgico es un algoritmo muy o simple pero es muy ineciente. El problema es que tiene una visin local del problema. Slo como o prueba restricciones que estn formadas por la a variable actual y las pasadas, e ignora la relacin o entre la variable actual y las futuras. Adems, esa te algoritmo es ingenuo en el sentido de que no recuerda las acciones previas, y como resultado, puede repetir la misma accin varias veces inneo cesariamente. Para ayudar a combatir este problema, se han desarrollado algunos algoritmos de bsqueda ms robustos. Estos algoritmos se pueu a den dividir en algoritmos look-back y look-ahead, que describiremos a continuacin. o

BJ salta a la variable ms profunda (ms cerca a a de la variable actual) xj que esta en conicto con la variable actual xi donde j < i. Decimos que una variable instanciada xj est en conicto con a una variable xi si la instanciacin de xj evita uno o de los valores en xi (debido a la restriccin entre o xj y xi ). Cambiar la instanciacin de xj puede o hacer posible encontrar una instanciacin consiso tente de la variable actual. Conict-directed Backjumping(CBJ) [31] tiene un comportamiento de salto hacia atrs ms sostia a cado que BJ. Cada variable xi tiene un conjunto conicto formado por las variables pasadas que estn en conicto con xi . En el momento en el a que la comprobacin de la consistencia entre la o variable actual xi y una variable pasada xj falla, la variable xj se aade al conjunto conicto de n xi . En una situacin sin salida, CBJ salta a la o variable ms profunda en su conjunto conicto, a por ejemplo xk , donde k < i. Al mismo tiempo se incluye el conjunto conicto de xi al de xk , por lo que no se pierde ninguna informacin sobre cono ictos. Obviamente, CBJ necesita unas estructuras de datos ms complicadas para almacenar los a conjuntos conicto. Learning [17] es un mtodo que almacena las e restricciones impl citas que son derivadas durante la bsqueda y las usa para podar el espau cio de bsqueda. Por ejemplo cuando se alcanu za una situacin sin salida en la variable xi o entonces sabemos que la tupla de asignaciones (x1 , a1 ), ..., (xi1 , ai1 )) nos lleva a una situacin o sin salida. As nosotros podemos aprender que , una combinacin de asignaciones para las variao bles x1 , ..., xi1 no est permitida. a

7.2.

Algoritmos Look-Back

Los algoritmos look-back tratan de explotar la informacin del problema para comportarse ms o a ecientemente en las situaciones sin salida. Al igual que el backtracking cronolgico, los algoo ritmos look-back llevan a cabo la comprobacin o de la consistencia hacia atrs, es decir, entre la a variable actual y las pasadas. Veamos algunos algoritmos look-back.

7.3.

Algoritmos look-ahead: Forward Checking

7.2.1.

Algoritmos look-back

Backjumping(BJ) [20] es un algoritmo para CSPs parecido al backtracking cronolgico excepto que o se comporta de una manera ms inteligente cuana do encuentra situaciones sin salida. En vez de retroceder a la variable anteriormente instanciada,

Como ya indicamos anteriormente, los algoritmos look-back tratan de reforzar el comportamiento de BT mediante un comportamiento ms intelia gente cuando se encuentran en situaciones sin salida. Sin embargo, todos ellos todav llevan a caa bo la comprobacin de la consistencia solamente o hacia atrs, ignorando las futuras variables. Los a algoritmos Look-ahead hacen una comprobacin o hacia adelante en cada etapa de la bsqueda, es u decir, ellos llevan a cabo las comprobaciones para obtener las inconsistencias de las variables futuras involucradas adems de las variables actual y a pasadas. De esa manera, las situaciones sin salida se pueden identicar antes y adems los valores a

inconsistentes se pueden descubrir y podar para las variables futuras.

5.

Si existe una variable por instanciar, sin valores posibles en su dominio, entonces retractar los efectos de la asignacin xi ai : o Si quedan valores por intentar en Di , ir al paso (2). Si no quedan valores: Si i > 1, decrementar i y volver al paso(2). Si i = 1, salir sin solucin. o

7.3.1.

Forward Checking

Forward checking (FC) [23] es uno de los algoritmos look-ahead ms comunes. En cada etapa a de la bsqueda, FC comprueba hacia adelante la u asignacin actual con todos los valores de las fuo turas variables que estn restringidas con la vaa riable actual. Los valores de las futuras variables que son inconsistentes con la asignacin actual o son temporalmente eliminados de sus dominios. Si el dominio de una variable futura se queda vac o, la instanciacin de la variable actual se deshace o y se prueba con un nuevo valor. Si ningn valor u es consistente, entonces se lleva a cabo el backtracking cronolgico. FC garantiza que, en cada o etapa, la solucin parcial actual es consistente con o cada valor de cada variable futura. Adems cuana do se asigna un valor a una variable, solamente se comprueba hacia adelante con las futuras variables con las que estn involucradas. As mediante a la comprobacin hacia adelante, FC puede ideno ticar antes las situaciones sin salida y podar el espacio de bsqueda. El proceso de forward checu king se puede ver como aplicar un simple paso de arco-consistencia sobre cada restriccin que invoo lucra la variable actual con una variable futura despus de cada asignacin de variable. A contie o nuacin presentamos el pseudo cdigo de forward o o checking.

Forward checking se ha combinado con algoritmos look-back para generar algoritmos h bridos [31]. Por ejemplo, forward checking con conictdirected backjumping (FC-CBJ) [31] es un algoritmo h brido que combina el movimiento hacia adelante de FC con el movimiento hacia atrs de a CBJ, y de esa manera tiene las ventajas de ambos algoritmos. Minimal forward checking (MFC) [11] es una version de FC que retrasa llevar a cabo todo la comprobacin de la consistencia de FC hasta que es o absolutamente necesario. En vez de comprobar hacia adelante la asignacin actual contra todas o las variables futuras, MFC slo comprueba si la o asignacin actual causa una limpieza de dominios. o Para hacer esto es suciente comprobar la asignacin actual con los valores de cada variable futuo ra hasta que se encuentra una que es consistente. Despus, si el algoritmo ha retrocedido, vuelve e atrs y lleva a cabo las comprobaciones perdia das. Claramente, MFC siempre lleva a cabo a lo sumo el mismo nmero de comprobaciones que u FC. Resultados experimentales han demostrado que la ganancia no supera el 10 % [11]. Recientemente Bacchus ha propuesto nuevas versiones de forward checking [1]. Estas versiones estn basadas en la idea de desarrollar un mea canismo de poda de dominios que elimina valores no slo en el nivel actual de bsqueda, sino que o u tambin en cualquier otro nivel. Bacchus primero e describe una plantilla genrica para implementar e varias versiones de forward checking y despus e describe cuatro instanciaciones de esa plantilla devolviendo nuevos algoritmos de forward checking. Los primeros dos algoritmos, extended forward checking (EFC) y EFC-, tienen la habilidad de podar futuros valores que son inconsistentes con asignaciones hechas antes de la asignacin actual pero que no hab sido descubiertas. o an Los otros dos algoritmos, conict based forward checking (CFFC) y CFFC-, estn basados en la a

Proceso Forward-checking 1. 2. 3. Seleccionar xi . Instanciar xi ai : ai Di . Razonar hacia adelante (check-forward): Eliminar de los dominios de las variables, an no instanciadas con un valor, aquellos u valores inconsistente con respecto a la instanciacin xi ai , de acuerdo al conjunto o de restricciones. 4. Si quedan valores posibles en los dominios de todas las variables por instanciar, entonces: Si i < n, incrementar i, e ir al paso (1). Si i = n, salir con la solucin. o

idea de los conictos, al igual que CBJ y learning para reforzar a FC. CFFC y CFFC- almacenan los conjuntos conicto y los usan para podar lo valores en los niveles pasados de bsqueda. Una u diferencia con CBJ es que los conjuntos conicto se almacenan sobre un valor y no sobre una variable, es decir, cada valor de cada variable tiene su propio conjunto conicto. Esto permite saltar ms lejos que CBJ. a

8.1.1.

Heur sticas de ordenacin de variao bles estticas a

En la literatura se han propuesto varias heur sticas de ordenacin de variables estticas. Estas o a heur sticas se basan en la informacin global que o se deriva de la topolog del grafo de restricciones a original que representa el CSP. La heur stica minimum width (MW) [15] impone en primer lugar un orden total sobre las variables, de forma que el orden tiene la m nima anchura, y entonces selecciona las variables en base a ese orden. La anchura de la variable x es el nmero de variables u que estn antes de x, de acuerdo a un orden a dado, y que son adyacentes a x. La anchura de un orden es la mxima anchura de todas a las variables bajo ese orden. La anchura de un grafo de restricciones es la anchura m nima de todos los posibles ordenes. Despus e de calcular la anchura de un grafo de restricciones, las variables se ordenan desde la ultima hasta la primera en anchura decre ciente. Esto signica que las variables que estn al principio de la ordenacin son las a o ms restringidas y las variables que estn al a a nal de la ordenacin son las menos restrino gidas. Asignando las variables ms restrina gidas al principio, las situaciones sin salida se pueden identicar antes y adems se rea duce el nmero de vueltas atrs. u a La heur stica maximun degree (MD) [9] ordena las variables en un orden decreciente de su grado en el grafo de restricciones. El grado de un nodo se dene como el nmeu ro de nodos que son adyacentes a l. Esta e heur stica tambin tiene como objetivo ene contrar un orden de anchura m nima, aunque no lo garantiza. La heur stica maximun cardinality (MC) [32] selecciona la primera variable arbitrariamente y despus en cada paso, selecciona e la variable que es adyacente al conjunto ms a grande de las variables ya seleccionadas. En [9] se compararon varias heur sticas de ordenacin de variables estticas utilizando CSPs o a generados aleatoriamente. Los resultados experimentales probaron que todos ellos son peores que el algoritmo minimum remaining values (MRV), que es una heur stica de ordenacin de variables o dinmicas que presentaremos a continuacin. a o

8.

Heur sticas

Un algoritmo de bsqueda para la satisfaccin de u o restricciones requiere el orden en el cual se van a estudiar las variables, as como el orden en el que se van a instanciar los valores de cada una de las variables. Seleccionar el orden correcto de las variables y de los valores puede mejorar notablemente la eciencia de resolucin. Tambin pueo e de resultar importante una ordenacin adecuada o de las restricciones del problema [34]. Veamos las ms importantes heur a sticas de ordenacin de vao riables y de ordenacin de valores. o

8.1.

Ordenacin de Variables o

Experimentos y anlisis de muchos investigadores a han demostrado que el orden en el cual las variables son asignadas durante la bsqueda puede u tener una impacto signicativo en el tamao del n espacio de bsqueda explorado. Generalmente las u heur sticas de ordenacin de variables tratan de o seleccionar lo antes posible las variables que ms a restringen a las dems. La intuicin es tratar de a o asignar lo antes posible las variables ms restrina gidas y de esa manera identicar las situaciones sin salida lo antes posible y as reducir el nme u ro de vueltas atrs. La ordenacin de variables a o puede ser esttica y dinmica. a a Las heur sticas de ordenacin de variables o estticas generan un orden jo de las vaa riables antes de iniciar la bsqueda, basado u en informacin global derivada del grafo de o restricciones inicial. Las heur sticas de ordenacin de variables o dinmicas pueden cambiar el orden de las a variables dinmicamente basndose en ina a formacin local que se genera durante la o bsqueda. u

8.1.2.

Heur sticas de ordenacin de variao bles dinmicas a

les para las futuras variables. Una de las heur sticas de ordenacin de valores o ms conocidas es la heur a stica min-conicts [28]. Bsicamente, esta heur a stica ordena los valores de acuerdo a los conictos en los que stos estn ine a volucrados con las variables no instanciadas. Esta heur stica asocia a cada valor a de la variable actual, el nmero total de valores en los dominios de u las futuras variables adyacentes que son incompatibles con a. El valor seleccionado es el asociado a la suma ms baja. Esta heur a stica se puede generalizar para CSPs no binarios de forma directa. Cada valor a de la variable xi se asocia con el nmero total de tuplas que son incompatibles con u a en las restricciones en las que est involucrada a la variable xi . De nuevo se selecciona el valor con la menor suma. En [24] Keng y Yun proponen una variacin de la idea anterior. De acuerdo a su o heur stica, cuando se cuenta el nmero de valores u incompatibles para una futura variable xk , ste e se divide por la talla del dominio de xk . Esto da el porcentaje de los valores utiles que pierde xk debido al valor a que actualmente estamos examinando. De nuevo los porcentajes se aaden para n todas las variables futuras y se selecciona el valor ms bajo que se obtiene en todas las sumas. a Geelen propuso una heur stica de ordenacin de o valores a la cual llam promise [21]. Para cada o valor a de la variable x contamos el nmero de u valores que soporta a en cada variable adyacente futura, y toma el producto de las cantidades contadas. Este producto se llama la promesa de un valor. De esta manera se selecciona el valor con la mxima promesa. Usando el producto en vez a de la suma de los valores soporte, la heur stica de Geelen trata de seleccionar el valor que deja un mayor nmero de soluciones posibles despus u e de que este valor se haya asignado a la variable actual. La promesa de cada valor representa una cota superior del nmero de soluciones diferenu tes que pueden existir despus de que el valor se e asigne a la variable. En [18] se describen tres heur sticas de ordenacin de valores dinmicos inspirados por la intuio a cin de que un subproblema es ms probable que o a tenga solucin si no tiene variables que tengan un o slo valor en su dominio. o La primera heur stica, llamada heur stica max-domain-size selecciona el valor de la variable actual que crea el mximo domia nio m nimo en las variables futuras. La segunda heur stica, llamada weighted-

El problema de los algoritmos de ordenacin o estticos es que ellos no tienen en cuenta los cama bios en los dominios de las variables causados por la propagacin de las restricciones durante o la bsqueda, o por la densidad de las restricciou nes. Esto es porque estos heur sticas generalmente se utilizan en algoritmos de comprobacin hacia o atrs donde no se lleva a cabo la propagacin de a o restricciones. Se han propuesto varias heur sticas de ordenacin de variables dinmicas que aboro a dan este problema. La heur stica de ordenacin de variables dinmio a cas ms comn se basa en el principio de primer a u fallo (FF) [23] que sugiere que para tener xito dee ber amos intentar primero donde sea ms probaa ble que falle. De esta manera las situaciones sin salida pueden identicarse antes y adems se ahorra a espacio de bsqueda. De acuerdo con el principio u de FF, en cada paso, seleccionar amos la variable ms restringida. La heur a stica FF tambin conoe cida como heur stica minimum remaining values (MRV), trata de hacer lo mismo seleccionando la variable con el dominio ms pequeo. Esto se basa a n en la intuicin de que si una variable tiene pocos o valores, entonces es ms dif encontrar un valor a cil consistente. Cuando se utiliza MRV junto con algoritmos de comprobacin hacia atrs, equivale a o a una heur stica esttica que ordena las variables de a forma ascendente con la talla del dominio antes de llevar a cabo la bsqueda. Cuando MRV se utiliza u en conjuncin con algoritmos forward-checking, la o ordenacin se vuelve dinmica, ya que los valores o a de las futuras variables se pueden podar despus e de cada asignacin de variables. En cada etapa de o la bsqueda, la prxima variable a asignarse es la u o variable con el dominio ms pequeo. a n

8.2.

Ordenacin de Valores o

En comparacin, se ha realizado poco trabajo soo bre heur sticas para la ordenacin de valores. La o idea bsica que hay detrs de las heur a a sticas de ordenacin de valores es seleccionar el valor de la o variable actual que ms probabilidad tenga de llea varnos a una solucin, es decir identicar la rama o del arbol de bsqueda que sea ms probable que u a obtenga una solucin. La mayor de las heur o a sticas propuestas tratan de seleccionar el valor menos restringido de la variable actual, es decir, el valor que menos reduce el nmero de valores utiu

max-domain-size es una mejora de la primera. Esta heur stica especica una manera de romper empates basada en el nmeu ro de futuras variables que tiene una talla de dominio dado. Por ejemplo, si un valor ai deja cinco variables futuras con dominios de dos elementos, y otro valor aj deja siete variables futuras tambin con dominios de e dos elementos, en este caso se selecciona el valor ai . La tercera heur stica, llamada pointdomain-size, que asigna un peso (unidades) a cada valor de la variable actual dependiendo del nmero de variables futuras que se u quedan con ciertas tallas de dominios. Por ejemplo, para cada variable futura que se queda con un dominio de talla uno debido a la variable ai , se aaden 8 unidades al pen so de ai . De esta manera se selecciona el valor con el menor peso.

10.

Aplicaciones

La programacin de restricciones se ha aplicado o con mucho xito a muchos problemas de areas e tan diversas como planicacin, scheduling, geo neracin de horarios, empaquetamiento, diseo y o n conguracin, diagnosis, modelado, recuperacin o o de informacin, CAD/CAM, criptograf etc. o a, Los problemas de asignacin fueron quizs el prio a mer tipo de aplicacin industrial que fue resuelo ta con herramientas de restricciones. Entre los ejemplos t picos iniciales guran la asignacin de o stands en los aeropuertos, donde los aviones deben aparcar en un stand disponible durante la estancia en el aeropuerto (aeropuerto Roissy en Paris) [12] o la asignacin de pasillos de salida o en el aeropuerto internacional de Hong Kong [7]. Otro ejemplo es la asignacin de atracaderos en o en el puerto internacional de Hong Kong [30]. Otra area de aplicacin de restricciones t o pica es la asignacin de personal donde las reglas de trao bajo y unas regulaciones imponen una serie de restricciones dif ciles de satisfacer. El principal objetivo en este tipo de problemas es balancear el trabajo entre las personas contratadas de manera que todos tengas las mismas ventajas. Existen sistemas como Gymnaste que se desarroll para o la generacin de turnos de enfermeras en los hoso pitales [6], para la asignacin de tripulacin a los o o vuelos (British Airways, Swissair), la asignacin o de plantillas en compa ferroviarias (SNCF, nas Compa de Ferrocarril Italiana) [13] o sistemas na para la obtencin de mallas ferroviarias optimas o [2]. Sin embargo, una de las areas de aplicacin ms o a exitosa de los CSPs con dominios nitos es en los problemas de secuenciacin o Scheduling, donde o de nuevo las restricciones expresan las limitaciones existentes en la vida real. El software basado en restricciones se utiliza para la secuenciacin de o actividades industriales, forestales, militares, etc. En general, el uso de las restricciones en sistemas complejos de planicacin y scheduling se est ino a crementando cada vez ms debido a las tendena cias de las empresas de trabajar bajo demanda.

9.

Otras tcnicas de resolue cin de CSPs: Mtodos eso e tocsticos a

Por mtodos estocsticos no referimos a las tcnie a e cas de bsqueda no sistemticas e incompletas u a incluyendo heur sticas. Ejemplos de este tipo de tcnicas son hill climbing [3], bsqueda tab [19], e u u enfriamiento simulado y algoritmos genticos. Ese tas tcnicas pueden considerarse como adaptae tivas en el sentido de que ellas comienzan su bsqueda en un punto aleatorio del espacio de u bsqueda y lo modican repetidamente utilizanu do heur sticas hasta que alcanza la solucin (con o un cierto nmero de iteraciones). Estos mtodos u e son generalmente robustos y buenos para encontrar un m nimo global en espacios de bsqueda u grandes y complejos. En [35], Thornton presenta el xitoso uso de algoritmos genticos y tcnicas e e e de enfriamiento simulado para resolver grandes sistemas de inigualdades no lineales. El nombre estocstico indica, que estos mtodos tienen un a e aspecto aleatorio que reduce la oportunidad de converger al m nimo local. Sin embargo, pueden ocurrir situaciones donde el proceso de bsqueu da se encuentra en porciones errneas del espacio o de soluciones. Esto generalmente requiere que el sistema reinicie su ejecucin empezando en otro o punto de partida aleatorio. Un estudio ms detaa llado puede verse en [25].

11.

Tendencias

Las dos cuestiones bsicas con respecto a la metoa dolog CSP son (i) la modelizacin del problema a o

y (ii) la resolucin de las restricciones. En cuano to a la modelizacin de problema es importante o contar con un modelo de restricciones que capte correctamente el problema. En cuanto a la resolucin del problema (obtencin de soluciones) es o o importante contar con mtodos ecientes y adee cuados para la inherente complejidad NP del problema. Debido a la gran cantidad de areas donde se apli can la programacin de restricciones, stos se tieo e nen que adaptar a la topolog de los problemas a que deben manejar. Hay problemas en los que hay pocas variables pero con restricciones muy complejas, otros con muchas variables y restricciones binarias, y en la mayor de los casos son problea mas con muchas variables, con grandes dominios y muchas restricciones. Las tendencias actuales en la metodolog CSP a pasan por desarrollar tcnicas para resolver detere minados problemas de satisfaccin de restriccioo nes basndose principalmente en la topolog de a a estos. Entre todas podemos destacar las siguientes: Tcnicas para resolver problemas sobree restringidos, donde la investigacin se ceno tran en el desarrollo de tcnicas para resole ver problemas con restricciones hard o requeridas y restricciones soft u opcionales. Tcnicas para resolver problemas con mue chas variables y restricciones, donde puede resultar conveniente la paralelizacin o diso tribucin del problema de forma que ste o e se pueda dividir en un conjunto de subproblemas mas fciles de manejar. a Tcnicas combinadas de satisfaccin de rese o tricciones con mtodos de investigacin opee o rativa con el n de obtener las ventajas de ambas propuestas. Tcnicas de computacin evolutiva, donde e o los algoritmos genticos al igual que las ree des neuronales, se han ido ganando poco a poco el reconocimiento de los investigadores como tcnicas efectivas en problemas de e gran complejidad. Se distinguen por utilizar estrategias distintas a la mayor parte de las tcnicas de bsqueda clsicas y por e u a usar operadores probabil sticos ms robusa tos que los operadores determin sticos. Otros temas de inters son heur e sticas inspiradas biolgicamente, tales como la coo

lonia de hormigas; la optimizacin meo diante cmulo de part u culas; los algoritmos memticos, los algoritmos culturales y la e bsqueda dispersa, etc. u En esta monograf se incluyen art a culos que tratarn algunas de las cuestiones anteriormente a planteadas.

12.

Conclusiones

En este trabajo hemos presentado los modelos y tcnicas ms relevantes de un problema de satise a faccin de restricciones. Adems hemos introduo a cido la notacin ms importante que vamos a utio a lizar a lo largo de esta monograf En ella, hemos a. hecho especial hincapi en las restricciones del e CSP, ya que dependiendo de ellas, los problema adoptan distintas propiedades y por consiguiente distintas formas de resolverlos. Tambin hemos e presentado algunos de los niveles de consistencia existentes en la literatura cuyo objetivo principal es reducir el espacio de bsqueda. En el siguiente u trabajo, se ampl estas tcnicas y se profundiza an e aun ms en la inferencia y bsqueda en CSPs. Por a u otra parte, los CSPs temporales [10] son un tipo especial de CSP donde las variables representan primitivas temporales (principalmente asociadas a puntos de tiempo, intervalos o duraciones). Las restricciones en este tipo de problema son restricciones temporales entre estas primitivas. Diversos trabajos presentados en esta monograf traa tan espec camente sobre CSPs temporales y son especialmente importantes en dominios de problemas dinmicos en los que el tiempo juega un a papel crucial. Otros art culos de la monograf a tratan sobre restricciones geomtricas, de espee cial relevancia en problemas de modelado f sico y CAD/CAM. Adicionalmente tambin se incluyen e trabajo sobre tipos espec cos de CSPs tales como CSPs exibles, borrosos, no binarios, con restricciones lgicas, etc. Adems se incluyen trabajos o a en los que se presentan la aplicacin prctica de o a los CSPs a problemas tales como la diagnosis, la recuperacin de informacin y el acceso a bases o o de datos.

13.

Agradecimientos

Este trabajo ha sido parcialmente nanciado por el proyecto DPI2001-2094-C03-03 del MCYT y el

proyecto CTIDIB/2002/112 de la Generalitat Valenciana.

[11] M.J. Dent and R.E. Mercer. Minimal forward checking. In Proc. of the 6th International Conference on Tools with Articial Intelligence, pages 432438, 1994. [12] M. Dincbas and H. Simosis. APACHE- a constraint based, automated stand allocation systems. In Proc. of Advanced Software Technology in Air Transport, 1991. [13] F. Focacci, E. Lamma, P. Melo, and M. Milano. Constraint logic programming for the crew rostering problem. In Proc. of Practical Application of Constraint Technology, 1997. [14] E. Freuder. Synthesizing constraint expressions. Communications of the ACM, 21:958 966, 1978. [15] E. Freuder. A sucient condition for backtrack-free search. Journal of the ACM, 29:2432, 1982. [16] E. Freuder. A sucient condition for backtrack-bounded search. Journal of the ACM, 32, 4:755761, 1985. [17] D. Frost and R. Dechter. Dead-end driven learning. In Proc. of the National Conference on Articial Intelligence, pages 294300, 1994. [18] D. Frost and R. Dechter. Look-ahead value orderings for constraint satisfaction problems. In Proc. of IJCAI-95, pages 572578, 1995. [19] P. Galinier and J.K. Hao. Tabu search for maximal constraint satisfaction problems. In Proceedings of International Conference on Principles and Practice of Constraint Programming (CP97), pages 196208, 1997. [20] J. Gaschnig. Performance measurement and analysis of certain search algorithms. Technical Report CMU-CS-79-124, CarnegieMellon University, 1979. [21] P.A. Geelen. Dual viewpoint heuristic for binary constraint satisfaction problems. In proceeding of European Conference of Articial Intelligence (ECAI92), pages 3135, 1992. [22] M. Ginsberg. Dynamic backtracking. Journal of Articial Intelligence Research, 1:25 46, 1993. [23] R. Haralick and Elliot G. Increasing tree efciency for constraint satisfaction problems. Articial Intelligence, 14:263314, 1980.

Referencias
[1] F. Bacchus. Extending forward checking. In Proc. of the Sixth International Conference on Principles and Practice of Constraint Programming (CP2000), pages 3551, 2000. [2] F. Barber, M.A. Salido, Ingolotti L., M. Abril, A. Lova, and P. Tormos. An interactive train scheduling tool for solving and plotting running maps. To appear in LNCS/LNAI on Articial Intelligence Technology Transfer, 2004. [3] R. Bartk. Heuristic and stochastic algoa rithms. http://ktilinux.ms.m.cuni.cz/ bartak/constraints/stochastic.html, 1998. [4] R. Bartk. Constraint programming: In a pursuit of the holy grail. in Proceedings of WDS99 (invited lecture), Prague, June, 1999. [5] C. Bessi`re, P. Meseguer, E.C. Freuder, and e J. Larrosa. On forward checking for nonbinary constraint satisfaction. In Proc. Principles and Practice of Constraint Programming (CP-99), pages 88102, 1999. [6] P. Chan, K. Heus, and G. Weil. Nurse scheduling with global constraints in CHIP: GYMNASTE. In Proc. of Practical Application of Constraint Technology, 1998. [7] K.P. Chow and M. Perett. Airport counter allocation using constraint logic programming. In Proc. of Practical Application of Constraint Technology, 1997. [8] R. Debruyne and C. Bessi`re. Some practie cable ltering techniques for the constraint satisfaction problem. In proceedings of the 15th IJCAI, pages 412417, 1997. [9] R. Dechter and I. Meiri. Experimental evaluation of preprocessing algorithms for constraints satisfaction problems. Articial Intelligence, 68:211241, 1994. [10] R. Dechter, I. Meiri, and J. Pearl. Temporal constraint network. Articial Intelligence, 49:6195, 1991.

[24] N. Keng and D. Yun. A planning/scheduling methodology for the constrained resources problem. In Proceeding of IJCAI-89, pages 9991003, 1989. [25] J. Larrosa and P. Meseguer. Algoritmos para Satisfaccin de Restricciones. Inteligencia o Articial: Revista Iberoamericana de Inteligencia Articial, 20:3142, 2003. [26] A.K. Mackworth. Consistency in network of relations. Articial Intelligence, 8:99118, 1977. [27] F. Manya and C. Gomes. Tcnicas de resolue cion de problemas de satisfaccin de restrico ciones. Inteligencia Articial: Revista Iberoamericana de Inteligencia Articial, 19:168 180, 2003. [28] S. Minton, M.D. Johnston, A.B. Philips, and P. Laird. A heuristic repair method for constraint-satisfaction and scheduling problems. Articial Intelligence, 58:161205, 1992. [29] U. Montanari. Networks of constraints: fundamental properties and applications to picture processing. Information Sciences, 7:95 132, 1974. [30] M. Perett. Using constraint logic programming techniques in container port planning. In ICL Technical Journal, pages 537545, 1991.

[31] P. Prosser. An empirical study of phase transitions in binary constraint satisfaction problems. Articial Intelligence, 81:81109, 1993. [32] P.W. Purdom. Search rearrangement backtracking and polynomial average time. Articial Intelligence, 21:117133, 1983. [33] D. Sabin and E.C. Freuder. Contradicting conventional wisdom in constraint satisfaction. In proceeding of European Conference of Articial Intelligence (ECAI-94), pages 125129, 1994. [34] M.A. Salido and F. Barber. A constraint ordering heuristic for scheduling problems. In Proceeding of the 1st Multidisciplinary International Conference on Scheduling : Theory and Applications, pages 476490, 2003. [35] A.C. Thornton. Constraint specication and satisfaction in embodiment design. PhD thesis, Department of Engineering, University of Cambridge, UK, 1993. [36] P. van Beek. On the minimality and decomposability of constraint networks. In Proc. of the National Conference on Articial Intelligence (AAAI-92), pages 447452, 1999. [37] P. Van Hentenryck. Constraint Satisfaction in Logic Programming. MIT Press, 1989.