Capítulo10 Problemasdesatisfacciónde...

download Capítulo10 Problemasdesatisfacciónde restricciones(CSP)users.dsic.upv.es/~msalido/papers/capitulo.pdf · incluyendo inteligencia artificial, investigación operativa, bases de

If you can't read please download the document

Transcript of Capítulo10 Problemasdesatisfacciónde...

  • Captulo 10

    Problemas de satisfaccin derestricciones (CSP)

    10.1 Introduccin

    La programacin por restricciones es una metodologa software utilizada para ladescripcin y posterior resolucin efectiva de cierto tipo de problemas, tpicamentecombinatorios y de optimizacin. Estos problemas aparecen en muy diversas reas,incluyendo inteligencia artificial, investigacin operativa, bases de datos y sistemasde recuperacin de la informacin, etc., con aplicaciones en scheduling, planificacin,razonamiento temporal, diseo en la ingeniera, problemas de empaquetamiento, crip-tografa, diagnstico, toma de decisiones, etc. Estos problemas pueden modelarse comoproblemas de satisfaccin de restricciones (Constraint Satisfaction Problems - CSP)y resolverse usando tcnicas de satisfaccin de restricciones. En general, se trata degrandes y complejos problemas, tpicamente de complejidad NP. Las etapas bsicaspara la resolucin de un problema CSP son su modelizacin y su posterior resolucinmediante la aplicacin de tcnicas CSP especficas, que incluyen procesos de bsquedaapoyados con mtodos heursticos y procesos inferenciales. En este captulo se presen-tan los conceptos, algoritmos y tcnicas ms relevantes en el rea de los CSP, juntocon diversos ejemplos y ejercicios.

    Muchas decisiones que tomamos a la hora de resolver diversos problemas cotidianosestn sujetas a restricciones. Decisiones tan cotidianas como fijar una cita, planificarun viaje, comprar un coche o preparar un plato de cocina puede depender de muchosaspectos interdependientes e incluso conflictivos, cada uno de los cuales est sujeto aun conjunto de restricciones que se deben satisfacer para que la decisin sea vlida.Adems, cuando se encuentra una solucin que satisface plenamente a unos criterios,puede que no sea tan apropiada para otros, por lo que, para obtener una solucinoptimizada, no suele ser suficiente con obtener una nica solucin. Los primeros tra-bajos relacionados con la programacin de restricciones datan de los aos 60 y 70 enel campo de la Inteligencia Artificial. Durante los ltimos aos, la programacin de

  • Problemas de satisfaccin de restricciones

    restricciones ha generado una creciente expectacin entre expertos de muchas reasdebido a su potencial para la resolucin de grandes y complejos problemas reales. Sinembargo, al mismo tiempo, se considera como una de las tecnologas menos conocida ycomprendida. La programacin de restricciones se define como el estudio de sistemascomputacionales basados en restricciones. La idea de la programacin de restriccioneses resolver problemas mediante la declaracin de restricciones sobre el dominio delproblema y consecuentemente encontrar soluciones a instancias de los problemas dedicho dominio que satisfagan todas las restricciones y, en su caso, optimicen unoscriterios determinados.

    Constraint Programming represents one of the closest approaches computer sci-ence has yet made to the Holy Grail of programming: the user states the problem, thecomputer solves it (E. Freuder)

    Constraint Programming: A simple but powerful idea (R. Dechter)

    10.2 Definiciones y conceptos bsicos

    La programacin de restricciones puede dividirse en dos ramas claramente difer-enciadas: la satisfaccin de restricciones y la resolucin de restricciones. Ambascomparten la misma terminologa, pero sus orgenes y tcnicas de resolucin son difer-entes. La satisfaccin de restricciones trata con problemas que tienen dominios finitos,mientras que la resolucin de restricciones est orientada principalmente a problemassobre dominios infinitos o dominios ms complejos. En este captulo, se tratarn prin-cipalmente los problemas de satisfaccin de restricciones (CSP). Los conceptos claveen esta metodologa corresponden a los aspectos de:

    La modelizacin del problema, que permite representar un problema medianteun conjunto finito de variables, un dominio de valores finito para cada variabley un conjunto de restricciones que acotan las combinaciones vlidas de valoresque las variables pueden tomar. En la modelizacin CSP, es fundamental lacapacidad expresiva, a fin de poder captar todos los aspectos significativos delproblema a modelar.

    Tcnicas inferenciales que permiten deducir nueva informacin sobre el problemaa partir de la explcitamente representada. Estas tcnicas tambin permitenacotar y hacer ms eficiente el proceso de bsqueda de soluciones.

    Tcnicas de bsqueda de la solucin, apoyadas generalmente por criterios heurs-ticos, bien dependientes o independientes del dominio. El objetivo es encontrarun valor para cada variable del problema de manera que se satisfagan todas lasrestricciones del problema. En general, la obtencin de soluciones en un CSPes NP-completo, mientras que la obtencin de soluciones optimizadas es NP-duro, no existiendo forma de verificar la optimalidad de la solucin en tiempopolinomial. Por ello, se requiere una gran eficiencia en los procesos de bsqueda.

    8

  • Definiciones y conceptos bsicos

    10.2.1 Definicin de un Problema de Satisfaccin de Restric-ciones

    Un problema de satisfaccin de restricciones puede ser representado mediante unaterna (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-sima componente Di es el dominio que contiene losposibles valores que pueden asignarse a la variable xi. La cardinalidad de cadadominio es di = |Di|.

    C = {c1, c2, . . . , cp} es un conjunto finito de restricciones. Cada restriccin k-aria ci est definida sobre un conjunto de k variables var(ci) X, denomina-do su mbito, y restringe los valores que dichas variables pueden simultnea-mente tomar. Particularmente, una restriccin es binaria cuando relaciona ni-camente a dos variables xiyxj , y se suele denotar como cij . Todas las restric-ciones definidas en un CSP son conjuntivas, de manera que una solucin debede satisfacer a todas ellas.

    La instanciacin de una variable es un par variable-valor (x, a) que representa laasignacin del valor a a la variable x (x = a). La instanciacin de un conjunto devariables es una tupla de pares ordenados, donde cada par ordenado (xi, ai) asignael valor {ai Di} a la variable xi. Una tupla ((x1, a1), . . . , (xi, ai)) es localmenteconsistente si satisface todas las restricciones formadas por variables {x1, .., xi} de latupla. Para simplificar la notacin, sustituiremos la tupla ((x1, a1), . . . , (xi, ai)) por(a1, . . . , ai).

    Un valor ai Di es un valor consistente para xi si existe al menos una solucindel CSP en la cual xi = ai. El dominio mnimo de una variable xi es el conjuntode todos los valores consistentes para la variable, es decir, quedan excluidos aquellosvalores que no forman parte de ninguna solucin (xi X, a Di, xi = a formaparte de una solucin del CSP).

    Una solucin a un CSP es una asignacin (a1, a2, . . . , an) de valores a todas susvariables, de tal manera que se satisfagan todas las restricciones del CSP. Es decir,una solucin es una tupla consistente que contiene todas las variables del problema.Una solucin parcial es una tupla consistente que contiene algunas de las variables delproblema. Un CSP es consistente, si tiene al menos una solucin, es decir una tuplaconsistente. Dos CSPs son equivalentes si ambos representan el mismo conjunto desoluciones.

    Ejemplo 10.1. Para el problema de las 4-Reinas, existen solamente dos soluciones,que se detallan en la Figura 10.1. Asumiendo que las variables {x1, x2, x3, x4} rep-resentan las columnas, y sus dominios son las posibles filas {1, 4} donde colocar lasreinas, tenemos que: (x1, 3) es una instanciacin de la variable x1, y ((x1, 2), (x2, 4),(x3, 1), (x4, 3)) es una solucin del CSP, por lo que el CSP es consistente. El valor 3es un valor consistente para x1, pero el valor 1 no lo es. El dominio mnimo de x2 es{1, 4}.

    9

  • Problemas de satisfaccin de restricciones

    Figura 10.1: Dos soluciones al problema de las cuatro reinas.

    Una vez modelado el problema como un CSP, los objetivos del CSP consisten enla satisfabilidad del mismo, es decir, obtener una o varias soluciones, sin preferenciaalguna, o bien obtener una solucin ptima, o al menos una buena solucin, en base auna funcin objetivo previamente definida en trminos de algunas o todas las variables.En este caso particular, se trata de un Problema de Satisfaccin y Optimizacinde Restricciones, o por su acrnimo en ingls, CSOP (Constraint Satisfaction andOptimization Problem).

    10.2.2 Definicin y Tipologa de las Restricciones.

    Las restricciones se caracterizan fundamentalmente por su aridad, que es el nmerode variables involucradas en dicha restriccin. Una restriccin unaria es una restriccinsobre una sola variable. Una restriccin binaria es una restriccin que consta de dosvariables. Una restriccin no binaria (o n-aria) es una restriccin que involucra a unnmero arbitrario de 3 o ms variables.

    Ejemplo 10.2. La restriccin x 5 es una restriccin unaria sobre la variable x. Larestriccin x4 x3 6= 3 es una restriccin binaria. La restriccin 2x1 x2 + 4x3 4es una restriccin ternaria. Por ltimo, un ejemplo de restriccin n-aria sera x1 +2x2 x3 + 5x4 9.

    Una restriccin sobre un conjunto de variables puede definirse extensionalmentemediante un conjunto de tuplas vlidas o no vlidas y tambin intensionalmentemediante una funcin aritmtica. La representacin extensional de una restriccin k -aria est formada por un conjunto de tuplas, cada una con k elementos, y expresa elconjunto de valores que las k variables pueden tomar simultneamente. Claramente, enel caso de CSP continuos es imposible representar las restricciones extensionalmenteya que generalmente hay un nmero infinito de tuplas vlidas.

    Ejemplo 10.3. Consideremos una restriccin que involucra a las variables x1, x2, x3, x4,con dominios {1, 2}, donde la suma entre las variables x1 y x2 es menor o igual que lasuma entre x3 y x4. Esta restriccin puede representarse intensionalmente mediantela expresin x1 + x2 x3 + x4. Tambin, podra representarse extensionalmente me-diante 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)}.

    En el caso de una definicin intensional, podemos tener restricciones no-disyuntivaso disyuntivas, segn expresen una nica relacin o ms de una relacin disyuntiva

    10

  • Ejemplos de CSP y su modelizacin

    entre las variables. Por ejemplo, asumiendo un modelo con las relaciones elementales{}, (x1 < x2) es una restriccin no-disyuntiva, mientras que (x1 < x2 x1 >x2), es decir, x1 6= x2, sera una restriccin disyuntiva. Por otra parte, las restriccionestambin pueden ser cualitativas, cuando expresan una relacin de orden entre lasvariables (por ejemplo, x1 < x2), o mtricas cuando expresan una distancia mtricaentre las mismas (por ejemplo, x1 < x2 + 7). Las restricciones mtricas requieren deuna mtrica en el dominio de interpretacin de las variables.

    Un tipo especial de restricciones son las restricciones lineales. Una relacin linealsobre X = {x1, . . . , xk} es una expresin de la forma:

    k

    i=1

    pixi {, >} b

    Donde pi son los coeficientes y b R. En base a combinaciones lgicas de desigual-dad ( 6=) e inigualdad (), se pueden expresar todas las relaciones en {, >}.Las Restricciones Lineales Disyuntivas (DLR) son disyunciones de restricciones lin-eales.

    10.3 Ejemplos de CSP y su modelizacin

    El primer paso en la resolucin de un CSP es su modelizacin, es decir, su rep-resentacin en trminos de variables, dominios y restricciones. Al igual que ocurrecon el lenguaje natural, la modelizacin de un problema se puede realizar de muchasmaneras diferentes. Respecto a la modelizacin de un problema CSP hay dos aspectosbsicos:

    La potencia expresiva de las restricciones, es decir, la capacidad de modelar lasrestricciones realmente existentes en el problema real.

    La eficiencia de la representacin, ya que dependiendo de la modelizacin CSP,el problema se resolver con ms o menos eficiencia.

    10.3.1 Coloracin del mapa.Este problema parte de un conjunto de colores posibles para colorear cada regin

    del mapa, de manera que regiones adyacentes tengan distintos colores. En la formu-lacin del CSP, definimos una variable por cada regin del mapa, y el dominio de cadavariable es el conjunto de colores disponible. Para cada par de regiones contiguas ex-iste una restriccin sobre las variables correspondientes que no permite la asignacinde idnticos valores a las variables. En el caso de la Figura 10.2, tenemos un mapacon cuatro regiones x,y,z,w para ser coloreadas con los posibles colores Rojo, Verde,Azul. La formulacin CSP sera:

    Variables: {x, y, z, w} Dominio: {Rojo, V erde,Azul}, nico para las tres variables.

    11

  • Problemas de satisfaccin de restricciones

    Restricciones (definicin intensional): {x 6= y, x 6= w, x 6= z, y 6= w, w 6= z}

    x y

    zw

    x y

    zw

    x

    wz

    y

    {r, v, a}

    {r, v, a}

    {r, v, a}

    {r, v, a}

    Figura 10.2: El problema de coloracin del mapa.

    Un CSP binario, puede ser representado mediante una red de restricciones, dondelos nodos representan las variables y los arcos representan las restricciones entre lasmismas. En la Figura 10.2-derecha, se representa la red correspondiente al problemadel ejemplo, donde las variables correspondientes a regiones adyacentes estn conec-tadas por una arista. Hay cinco restricciones en el problema, es decir, cinco aristas enla red. Una solucin para el problema es la asignacin (x, r), (y, v), (z, v), (w, a). Enesta asignacin, todas las variables adyacentes tienen valores diferentes.

    10.3.2 CriptografaEl tpico problema criptogrfico send+more=money consiste en asignar a cada

    letra {s, e, n, d,m, o, r, y} un dgito diferente del conjunto {0, . . . , 9} de forma que sesatisfaga: send + more = money.

    s e n d+ m o r em o n e y

    La manera ms fcil de modelar este problema es asignando una variable a cadauna de las letras, todas ellas con un dominio {0, . . . , 9} y con las restricciones queobliguen a que todas las variables tomen valores distintos y con la correspondiente re-striccin para que se satisfaga send + more = money. De esta forma las restriccionesson:

    103(s + m) + 102(e + o) + 10(n + r) + d + e = 104m + 103o + 102n + 10e + y; restriccin de todas diferentes: 6= (s, e, n, d, m, o, r, y);

    La restriccin de todas diferentes puede reemplazarse por un conjunto de restric-ciones binarias, {s 6= e, s 6= n, . . . , r 6= y}, donde (xi 6= xj) es la relacin disyuntivaxi {}xj .

    Sin embargo, para el algoritmo de resolucin ms general como es Backtracking(que veremos en las siguientes secciones), este modelo no es muy eficiente porque todas

    12

  • Ejemplos de CSP y su modelizacin

    las variables necesitan ser instanciadas antes de comprobar estas dos restricciones. Deesta manera no se podra podar el espacio de bsqueda durante el propio proceso afin de agilizar la bsqueda. Adems, la primera restriccin es una igualdad en la queforman parte todas las variables del problema (restriccin global) por lo que dificultael proceso de consistencia. Un modelo ms eficiente podra utilizar los bits de acarreopara descomponer la ecuacin anterior en un conjunto de pequeas restricciones.Esto requerira incluir tres variables portadoras adicionales, c1, c2, c3, cuyo dominio es{0, 1}:

    e + d = y + 10c1; c1 + n + r = e + 10c2; c2 + e + o = n + 10c3; c3 + s + m = 10m + o restriccin de todas diferentes: 6= (s, e, n, d, m, o, r, y)

    La ventaja de este modelo es que estas restricciones con menor aridad, puedancomprobarse antes en la bsqueda de backtracking, y as podarse muchas inconsis-tencias.

    10.3.3 El problema de las N-Reinas

    Este problema consiste en colocar N reinas en un tablero de ajedrez de dimensinNxN , de forma que ninguna reina est amenazada. De esta forma no puede haberdos reinas en la misma fila, misma columna, o misma diagonal. Si asociamos cadacolumna a una variable y su valor representa la fila donde se coloca una reina, elproblema puede ser formulado como:

    Variables: {xi}, i = 1..N . Dominio = {1, 2, 3, . . . , N}, para todas las variables. Restricciones: (xi, xj , i 6= j):

    xi 6= xj , No en la misma fila xi xj 6= i j, No en la misma diagonal SE xj xi 6= i j, No en la misma diagonal SO

    Resultando para el caso particular de N=4 (vase la Figura 10.3):

    | x1 x2 |6= 1 ; | x1 x3 |6= 2 ; | x1 x4 |6= 3 ;

    13

  • Problemas de satisfaccin de restricciones

    | x2 x3 |6= 1 ; | x2 x4 |6= 2 ; | x3 x4 |6= 1 ; 6= (x1, x2, x3, x4);

    Figura 10.3: Tablero para modelado del problema de las 4-Reinas

    En los ejercicios propuestos al final del captulo se muestran otros ejemplos sobrela idoneidad de una buena especificacin del CSP, tanto respecto a la simplicidad dela especificacin, como con respecto a la eficiencia en el proceso de bsqueda.

    10.4 Tcnicas CSP

    Las tcnicas ms usuales que se llevan a cabo para manejar un CSP se puedenagrupar en tres tipos: Bsqueda sistemtica, tcnicas inferenciales y tcnicas hbridas.

    10.4.1 Mtodos de BsquedaLos mtodos de bsqueda se centran en explorar el espacio de estados del problema.

    Estos mtodos pueden ser completos, explorando todo el espacio de estados en buscade una solucin, o incompletos si solamente exploran una parte del espacio de estados.Los mtodos que exploran todo el espacio de bsqueda garantizan encontrar unasolucin, si existe, o demuestran que el problema no es resoluble. La desventaja deestos algoritmos es que son muy costosos. Los dos mtodos completos ms usualesson:

    Generar y Testear (GT): Este mtodo genera las posibles tuplas de instan-ciacin de todas las variables de forma sistemtica y despus testea sucesi-vamente sobre cada instanciacin si se satisfacen todas las restricciones delproblema. La primera combinacin que satisfaga todas las restricciones, serla solucin al problema. Mediante este procedimiento, el nmero de combina-ciones generado por este mtodo es el Producto Cartesiano de la cardinalidad

    14

  • Tcnicas CSP

    de los dominios de las variables:

    i=1,n di. Esto es un inconveniente, ya quese realizan muchas instanciaciones errneas de valores a variables que despusson rechazadas en la fase de testeo. Por ejemplo, para el caso del problema delas 4-Reinas, se generaran 44 = 256 tuplas a testear. El proceso de generacinrequerira 256 4 = 1024 asignaciones de variable.

    Backtracking Cronolgico (BT): Este mtodo realiza una exploracin enprofundidad del espacio de bsqueda, instanciando sucesivamente las variablesy comprobando ante cada nueva instanciacin si las instanciaciones parcialesya realizadas son localmente consistentes. Si es as, sigue con la instanciacinde una nueva variable. En caso de conflicto, intenta asignar un nuevo valor ala ltima variable instanciada, si es posible, y en caso contrario retrocede a lavariable asignada inmediatamente anterior.

    El Algoritmo 10.1 describe el tpico proceso de BT aplicado a la resolucin de CSP,donde V [n] representa el vector de asignaciones a las variables (x1, x2, . . . , xn) delproblema, ordenadas segn un determinado criterio. La funcin Comprobar(K, V [n])comprueba la validez de las k instanciaciones ya realizadas {V [1] , V [2] , . . . , V [k]}, esdecir, si se satisfacen las restricciones locales existentes entre las variables (x1, x2, . . . , xk),como se indica en la Expresion 10.1.

    Comprobar(k, V [n]) = Tsii : i(1 k) : (V [k] , V [i]) cki (10.1)Si el algoritmo finaliza con xito, el vector V [n] representa la tupla de valores solu-

    cin. La Figura 10.4 muestra una sencilla aplicacin del algoritmo, donde se indicanlos puntos de backtracking y la solucin encontrada. Los algoritmos tipo BT realizansolo una comprobacin hacia atrs en cada instanciacin, por lo que pertenece al tipode algoritmos Look-Backward (Seccin 10.4.3.1).

    Figura 10.4: Aplicacin del Backtracking Cronolgico.

    La Figura 10.5 muestra la aplicacin del algoritmo BT al problema de las 4-reinas,con una ordenacin lexicogrfica de variables y valores. Los nodos marcados con Xrepresentan que la asignacin realizada no es consistente con las asignaciones previas,

    15

  • Problemas de satisfaccin de restricciones

    Algoritmo 10.1 Algoritmo de Backtracking Cronolgico.procedimiento Backtracking(k, V [n]) ; Llamada inicial: Backtracking(1, V [n])inicioV [k] = Seleccion(dk) ; Selecciona un valor de dk para asignar a xksi Comprobar(k, V [n]) entonces

    si k = n entoncesdevolver V [n] ; Es una solucin

    si noBacktraking(k + 1, V [n])

    fin sisi no

    si quedan_valores(dk) entoncesBacktraking(k, V [n])

    si nosi k = 1 entonces

    devolver ; Fallosi no

    Backtraking(k 1, V [n])fin si

    fin sifin sifin Backtracking

    y por tanto son puntos de backtracking. Como caba esperar, BT no realiza tantabsqueda como GT, al detectar cada inconsistencia en cuanto aparece. Pero para estesimple problema, an requiere generar 26 asignaciones.

    El backtracking cronolgico es un algoritmo muy simple pero tambin es muyineficiente. El problema es que tiene una visin local del problema, de forma que solocomprueba las restricciones entre las variables ya instanciadas, e ignora la relacinentre dichas variables (x1, x2, . . . , xk) y las que quedan por instanciar (xk+1, . . . , xn).La mejora del algoritmo incluye dos modificaciones fundamentales:

    Mejorar la funcin Comprobar, tal que tambin compruebe la validez de la in-stanciacin parcial efectuada respecto a las variables pendientes de asignar. Estopermitira detectar cuanto antes si la solucin parcial efectuada de las k variablesforma o no parte de una solucin global, evitando profundizar en una secuenciade asignaciones que no conduzca a una solucin. Esto se realiza mediante unproceso de propagacin de las instanciaciones parciales ya realizadas al resto dela red tal y como veremos en la seccin 10.4.3.

    Establecer un orden de instanciacin de las variables (orden del vector V [n])o establecer un criterio para la seleccin de los valores de los dominios corre-spondientes (Seleccion(dk)). Estos mtodos para la ordenacin de variables yvalores se vern en la seccin 10.5.

    10.4.2 Tcnicas de Inferencia

    Los procesos inferenciales en un CSP tienen como objetivo deducir nuevas restric-ciones, derivadas de las explcitamente conocidas sobre el problema. Concretamente,

    16

  • Tcnicas CSP

    Figura 10.5: Backtracking Cronolgico aplicado al problema de las 4-Reinas.

    estas tcnicas borran valores inconsistentes de los dominios de las variables o inducenrestricciones implcitas entre las variables, obteniendo un nuevo CSP, equivalente alinicial, donde se han hecho explcitas las nuevas restricciones implcitamente con-tenidas en el primero. La obtencin de estas nuevas restricciones permite:

    1. Obtener respuestas a preguntas sobre el problema, relativas a restricciones im-plcitamente existentes entre las variables o sobre sus dominios.

    2. Acotar el espacio de soluciones, al haberse eliminado valores inconsistentes, ha-ciendo ms eficientes los procesos de bsqueda.

    Los algoritmos de bsqueda sistemtica para la resolucin de CSP vistos en la Sec-cin 10.4.1 tienen como base la bsqueda basada en backtracking. Sin embargo, estabsqueda sufre con frecuencia una explosin combinatoria en el espacio de bsqueda,y por lo tanto no es por s solo un mtodo suficientemente eficiente para resolver CSP.Una de las principales dificultades es la aparicin de inconsistencias locales que vanapareciendo continuamente [Mackworth, 1977]. Las inconsistencias locales son valoresindividuales o combinacin de valores de las variables que no pueden participar enla solucin. Por ejemplo, si el valor a de la variable x es incompatible con todos losvalores de una variable y pendiente de asignacin, ligada a x mediante una restriccin,entonces a es inconsistente y no formar parte de ninguna solucin del problema. Porlo tanto si forzamos alguna propiedad de consistencia local podemos borrar todoslos valores que son inconsistentes con respecto a dicha propiedad. Esto no significa

    17

  • Problemas de satisfaccin de restricciones

    que todos los valores que no puedan participar en una solucin sean borrados. Puedehaber valores que son consistentes con respecto a un cierto nivel de consistencia localpero son inconsistentes con respecto a cualquier otro nivel mayor de consistencia local.As, consistencia global asegura que todos los valores de los dominios de las variablesque no pueden participar en una solucin son eliminados.

    Las restricciones explcitas en un CSP, que generalmente coinciden con las quese conocen explcitamente del problema a resolver, generan cuando se combinan, re-stricciones implcitas que pueden causar inconsistencias locales. Si un algoritmo debsqueda no almacena las restricciones implcitas, repetidamente redescubrir la in-consistencia local causada por ellas y malgastar esfuerzo de bsqueda tratando repeti-damente de intentar instanciaciones que ya han sido probadas. Veamos el siguienteejemplo.

    Ejemplo 10.4. 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,x 6= y. Si asumimos que la bsqueda mediante backtracking trata de instanciar lasvariables en el orden x, y, z, entonces probar todas las posibles 23 combinacionesde valores para las variables antes de descubrir que no existe solucin alguna. Simiramos la restriccin entre la variable y y la variable z podremos ver que no hayninguna combinacin de valores para las dos variables que satisfagan la restriccin.Si el algoritmo pudiera identificar esta inconsistencia local antes, se evitara un granesfuerzo de bsqueda.

    Los procesos inferenciales estn ligados al nivel de consistencia. Un proceso infer-encial completo deducira toda la informacin contenida en el CSP y va ligado a unnivel de consistencia global. Sin embargo, tiene en general un coste exponencial. Losprocesos inferenciales incompletos deducen solo parte de la informacin contenida enel CSP y van ligados a niveles de consistencia local. En general, su coste es de tipopolinmico, por lo que resultan ms interesantes y aplicables. Veamos a continuacindistintos niveles de consistencia en un CSP.

    10.4.2.1 Consistencia de Nodo (1-consistencia)

    La consistencia local ms simple de todas es la consistencia de nodo o nodo-consistencia. Una variable xi es nodo-consistente si y solo si todos los valores de sudominio Di son consistentes con las restricciones unarias sobre la variable. Un CSPes nodo-consistente si y solo si todas sus variables son nodo-consistentes:

    xi X, ci C, a Di : (a) ciPor ejemplo, en la Figura 10.6 consideramos una variable x en un problema con

    dominio [2, 15] y la restriccin unaria x 7. La consistencia de nodo eliminar elintervalo [8, 15] del dominio de x. El algoritmo que garantiza un CSP nodo-consistentees trivial (elimina los valores inconsistentes de los dominios de las variables respectoa sus restricciones unarias) y tiene un coste lineal respecto al tamao del problema,habitualmente asociado al nmero de variables n.

    18

  • Tcnicas CSP

    Dominio nodo-consistenteDominio Original

    x: [2,15] x: [2,7]

    x

  • Problemas de satisfaccin de restricciones

    Algoritmo 10.2 Algoritmo para garantizar la Arco-consistenciaProcedimiento AC(X, n, D, C) ; Devuelve el CSP arco-consistenteinicioQ C ; queue: cola de arcos, inicialmente los arcos en csp.mientras Q 6= hacer

    cij REMOV E_FIRST (Q) ; cij restriccin entre xi, xjsi Revisar(cij) entonces

    para todo xk NEIGHBORS [xi] haceraadir cki a Q

    fin parafin si

    fin mientrasfin AC;

    Funcin Revisar(cij) ; Retorna T si y solo si eliminamos valores de Diinicioremoved false;para todo x DOMAIN [xi] hacer

    si ningn_valor y DOMAIN [xj ] satisface cij entonceseliminar x de DOMAIN [xi] ;removed true

    fin si;fin paradevolver removedfin Revisar;

    xi xj

    [3,6] [8,10]

    Cij = xi < xj

    Figura 10.7: Arco-consistencia.

    La consistencia de caminos requiere que, para cada asignacin de dos variables (xi, a),(xj , b) consistente con la restriccin directa que exista entre ellas cij , exista tambinun valor para cada variable a lo largo del camino entre ellas de forma que todas lasrestricciones a lo largo del camino se satisfagan (vase la Figura 10.9).

    Montanari demostr que un CSP satisface la consistencia de caminos si y solosi todos los caminos de longitud dos cumplen la consistencia de caminos. En otraspalabras, si y solo si cualquier solucin local entre dos variables, es decir, consistentecon la restriccin entre ellas, es extensible a cualquier tercera variable:

    (a, b) cij , xk X, c Dk, (a, c) cik (b, c) cjkEn base a esta propiedad, el algoritmo PC [Mackworth, 1977; Montanari, 1974].(vase

    el Algoritmo 10.3) obtiene un CSP senda consistente para CSP binarios. Ms conc-

    20

  • Tcnicas CSP

    Azul, RojoAzul, RojoAzul, RojoAzul, RojoAzulAzulAzulAzulAzul, RojoAzul, RojoAzul, RojoAzul, RojoVerdeVerdeVerdeVerde Azul, VerdeAzul, VerdeAzul, VerdeAzul, VerdeX1

    X4

    X2

    X3

    Grafo Inicial

    Azul, RojoAzul, RojoAzul, RojoAzul, RojoAzulAzulAzulAzulAzul, RojoAzul, RojoAzul, RojoAzul, RojoVerdeVerdeVerdeVerde Azul, VerdeAzul, VerdeAzul, VerdeAzul, VerdeX1

    X4

    X2

    X3

    Grafo arco-consistente

    Figura 10.8: Ejemplo de proceso de Arco-Consistencia.

    Xi Xk Xk+1 Xk+2 Xj Ci,k Ck, k+1 Ck+1,k+2

    Ci,j

    Figura 10.9: Senda Consistencia.

    retamente, el algoritmo acota las restricciones del CSP inicial, de forma que el CSPresultante cumple la consistencia de caminos.

    El algoritmo PC (vase Algoritmo 10.3) recorre todas las subredes de 3 nodos(conjunto Q), forzando la consistencia de senda de cada restriccin cij mediante lafuncin Revisar. En el caso de que la restriccin cij resulte modificada (en su formaextensional), se vuelven a tratar todas las subredes de 3 nodos que incluyan a xi, xjpara comprobar si siguen localmente consistentes. De esta forma, cada subred de 3nodos, cada senda de longitud 2, resulta localmente consistente. Por lo tanto, el CSPresultante ser senda consistente. En el caso en que al modificar la restriccin cijquedase vaca, cij = {}, sera un CSP no consistente.

    Un ejemplo de senda-consistencia puede verse en la Figura 10.10, donde, a partirde la red inicial de restricciones R, el algoritmo obtiene la red senda consistente R:cualquier camino entre cualquier par de nodos lo es.

    Una restriccin ci es consistente si existe una solucin en la cual dicha restriccinse cumpla. Una restriccin ci es mnima si y solo si consiste nicamente de tuplasconsistentes, es decir, forman parte de alguna solucin. Un CSP es mnimo si y solosi todas sus restricciones y dominios son mnimos. Puede verse que la red R de laFigura 10.10 es senda consistente, pero no es mnima, ya que no hay ninguna solucinposible donde B = C.

    21

  • Problemas de satisfaccin de restricciones

    Algoritmo 10.3 Algoritmo de Senda-Consistencia.procedimiento PC(X, n, D, C)inicioQ := {(i, j, k | 1 = i < j = n, 1 k n, i 6= k, j 6= k} ; Todas las subredes de 3 nodosmientras Q 6= hacer

    Select (i, j, k) from Q;si Revisar(i, j, k) entonces

    Q := Q {(l, i, j), (l, j, i) | 1 l n, l 6= j, l 6= i}fin si

    fin mientrasfin PC;

    funcin Revisar(i, j, k)iniciocambiado := false;para todo (a, b) cij hacer

    si c dk/(a, c) cik (c, b) ckj entoncescij := cij (a, b); ; Acota la restriccion cij , pero cambiado := true

    ; si resulta cij = {}fin si ;CSP no consistente

    fin paradevolver cambiado;fin Revisar;

    10.4.2.4 k-consistencia. Consistencia global

    En general, se dice que una red es k-consistente si y solo si dada cualquier instan-ciacin de k -1 variables, que satisfagan todas las restricciones entre ellas, existe almenos una instanciacin de una variable k, tal que se satisfacen las restricciones entrelas k variables [Freuder, 1982]. En otras palabras, cualquier solucin en una subredde tamao k -1, puede ser extendida a una solucin en una subred de tamao k, quecontenga a la anterior. En consecuencia, cada subred de k variables es localmenteconsistente. Cuando una red es i-consistente i, i k se dice que es fuertementei-consistente.

    Un CSP es consistente si tiene al menos una solucin. Un CSP es globalmenteconsistente si es i-consistente i, i n, es decir, cualquier instanciacin localmenteconsistente entre i variables (1 i n), puede formar parte de una solucin global.De esta manera, un CSP globalmente consistente contiene solamente aquellas com-binaciones de valores que forman parte de al menos una solucin, siendo una repre-sentacin compacta y conservadora de todas las soluciones de un CSP. Es correcto enel sentido de que la red nunca admite una combinacin de valores que no desemboqueen una solucin. Es completo en el sentido de que todas las soluciones estn repre-sentadas en l. Un CSP globalmente consistente es un CSP mnimo. En una red derestricciones globalmente consistente, la bsqueda puede llevarse a cabo sin necesidadde backtracking [Freuder, 1982].

    En general, un etiquetado globalmente consistente de una red requiere representarde forma explcita restricciones para todas las variables del problema, es decir, generaretiquetas n-1 -dimensionales para un problema de talla n forzando la n-consistencia.

    22

  • Tcnicas CSP

    Figura 10.10: Red Inicial (R), Red Senda-Consistente (R), Red Mnima (R).

    Esta tarea tiene una complejidad exponencial en el peor caso. Para clases especialesde problemas, niveles bajos de consistencia, son equivalentes a la consistencia delCSP. Estos resultados permiten a los algoritmos polinmicos llevar a cabo etiquetadosconsistentes. Los podemos resumir en los siguientes:

    La Arco-consistencia es equivalente a la consistencia global cuando la red derestricciones es un rbol [Freuder, 1982].

    La consistencia de caminos es equivalente a la consistencia global cuando el CSPes convexo y binario [Dechter y otros, 1991; Van Beek, 1991], siendo un CSPconvexo aquel cuyas restricciones determinan un espacio de soluciones convexo.

    El problema para conocer si un CSP es consistente (tiene al menos una solucin) sedenomina problema de satisfabilidad. Este problema, as como el problema equivalentede encontrar una solucin, es en general NP. Existen diferentes aproximaciones paraidentificar clases tratables de CSP, las cuales corresponden a dos lneas fundamentales:

    1. Identificacin por la estructura de la red de restricciones, independientementedel tipo de relaciones que contenga. En esta lnea resulta interesante encontrarestructuras de bsqueda similares a rboles (vase Seccin 10.5.1).

    2. Identificacin por el tipo de relacin entre variables, debido a las especialespropiedades de dichas relaciones. Particularmente, el problema de obtener laconsistencia (o encontrar soluciones) en una red binaria no disyuntiva es n3.Asimismo, en una red binaria con las relaciones {}, el problema de obten-er la consistencia tiene un coste n4.

    10.4.3 Tcnicas HbridasEn la Seccin 10.4.1 se han visto tcnicas de bsqueda de soluciones en un CSP

    que, en general, resultan exponenciales con el tamao del problema. Por otra parte,en la Seccin 10.4.2 se han visto tcnicas inferenciales que eliminan valores inconsis-tentes de los dominios de las variables o inducen nuevas restricciones implcitas entre

    23

  • Problemas de satisfaccin de restricciones

    las variables restringiendo las previas, de forma que obtienen un nuevo CSP, msrestringido y equivalente al inicial, que permite acotar el espacio de bsqueda.

    Por ello, las tcnicas inferenciales se usan como etapas de preproceso donde sedetectan y se eliminan inconsistencias locales antes de empezar la bsqueda con el finde reducir el rbol de bsqueda. Dependiendo del nivel de consistencia del preproceso,se acotar ms o menos espacio de bsqueda, a costa de un mayor o menor esfuerzocomputacional en el proceso inferencial previo. Por otra parte, las tcnicas inferen-ciales pueden incluirse en el propio proceso de bsqueda, dando lugar a los algoritmosde bsqueda hbridos que analizamos en esta seccin. La complejidad exponencial pararesolver un CSP dado est principalmente relacionada con el tamao de los dominiosde sus variables.

    10.4.3.1 Algoritmos Look-Backward

    Los algoritmos Look-Backward tratan de explotar la informacin del problemapara comportarse ms eficientemente en las situaciones sin salida. Al igual que el back-tracking cronolgico, los algoritmos Look-Backward llevan a cabo la comprobacin dela consistencia hacia atrs, es decir, entre la variable actualmente instanciada y laspasadas ya instanciadas. Veamos algunas variantes de algoritmos Look-Backward.

    Backjumping (BJ) [Gaschnig, 1979] es un algoritmo parecido al backtrackingcronolgico excepto que se comporta de una manera ms inteligente cuandoencuentra situaciones sin salida. En vez de retroceder a la variable anteriormenteinstanciada, BJ salta a la variable xj ms profunda, es decir ms cerca de lavariable actual, que est en conflicto con la variable actual xi donde j < i.Decimos que una variable instanciada xj est en conflicto con una variable xisi la instanciacin de xj evita uno de los valores en xi, debido a la restriccinentre xj y xi. Cambiar la instanciacin de xj puede hacer posible encontrar unainstanciacin consistente de la variable actual.

    Conflict-directed Backjumping (CBJ) [Prosser, 1993] tiene un comportamien-to de salto hacia atrs ms sofisticado que BJ. Cada variable xi tiene un conjuntoconflicto formado por las variables pasadas que estn en conflicto con xi. En elmomento en el que la comprobacin de la consistencia entre la variable actualxi y una variable pasada xj falla, la variable xj se aade al conjunto conflictode xi. En una situacin sin salida, CBJ salta a la variable ms profunda en suconjunto conflicto, por ejemplo, xk, donde k < i. Al mismo tiempo se incluyeel conjunto conflicto de xi al de xk, por lo que no se pierde ninguna informa-cin sobre conflictos. Obviamente, CBJ necesita unas estructuras de datos mscomplicadas para almacenar los conjuntos conflicto.

    Learning [Frost y Dechter, 1994] es un mtodo que almacena las restriccionesimplcitas que son derivadas durante la bsqueda y las usa para podar el espaciode bsqueda. Por ejemplo, cuando se alcanza una situacin sin salida en la vari-able xi, entonces sabemos que la tupla de asignaciones ((x1, a1), . . . , (xi1, ai1)nos lleva a una situacin sin salida. As, nosotros podemos aprender que unacombinacin de asignaciones para las variables x1, xi1 no est permitida.

    24

  • Tcnicas CSP

    10.4.3.2 Algoritmos Look-Ahead

    Como ya indicamos anteriormente, los algoritmos Look-Backward tratan de re-forzar el comportamiento del backtracking mediante un comportamiento ms in-teligente cuando se encuentran situaciones sin salida. Sin embargo, todos ellos to-dava llevan a cabo la comprobacin de la consistencia solamente hacia atrs: detectanlas inconsistencias en cuanto aparecen, pero ignoran las consecuencias de las instan-ciaciones parciales ya realizadas sobre las restricciones y dominios existentes en lasfuturas variables a instanciar.

    Los algoritmos Look-Ahead hacen una comprobacin inferencial hacia adelanteen cada instanciacin, integrando un proceso inferencial durante el propio proceso debsqueda, por lo que tambin se denominan tcnicas hbridas. Esto tambin se conocecomo la propagacin de los efectos de cada nueva instanciacin al resto de la red. Ellopermite: (i) acotar las restricciones y dominios de las variables futuras a instanciar,limitando el espacio de bsqueda pendiente, y (ii) encontrar las inconsistencias antesde que aparezcan, en el caso de que las instanciaciones parciales efectuadas se de-scubran inconsistentes con el resto de variables pendientes. En definitiva, intentandescubrir si la actual asignacin localmente consistente de las k variables puede serextendida a una solucin global, provocando en caso contrario un punto de backtrack-ing.

    Forward checking (FC)

    El algoritmo de look-forward ms comn es Forward checking. En este algoritmo,en cada etapa de la bsqueda BT, se comprueba hacia adelante la asignacin de lavariable actual con todos los valores de las futuras variables que estn restringidascon la variable actual. Los valores de las futuras variables que son inconsistentes conla asignacin actual son temporalmente eliminados de sus dominios. Si el dominio deuna variable futura se queda vaco, la instanciacin de la variable actual se deshace yse prueba con un nuevo valor. Si ningn valor es consistente, entonces se lleva a caboel backtracking cronolgico.

    De esta manera, el algoritmo FC resulta como si en el algoritmo BT (vase elAlgoritmo 10.1), la funcin Comprobar hiciera las siguientes comprobaciones:

    1. i(1 i < k) : (V [k] , V [i]) cki (* Standard Bactracking *)2. f(k < f n),Vf Df : (V [k] , V [f ]) ckf (*Forward Chaining*)Sin embargo, el paso (1) ya no es necesario, ya que debido al proceso FC (paso

    2), cada vez que una nueva variable es asignada, sabemos que todos los valores de sudominio son consistentes con los valores de las variables previamente asignadas. Porello, no es necesario comprobar cada nueva asignacin con las variables previamenteasignadas (paso 1).

    FC garantiza que, en cada etapa, la solucin parcial actual es consistente con ca-da valor de cada variable futura. Adems cuando se asigna un valor a una variable,solamente se comprueba hacia adelante con las futuras variables con las que estn in-volucradas. As mediante la comprobacin hacia adelante, FC puede identificar antes

    25

  • Problemas de satisfaccin de restricciones

    las situaciones sin salida y podar el espacio de bsqueda. El proceso de forward check-ing puede verse como la aplicacin de un simple paso de arco-consistencia entre lavariable que acaba de instanciarse y cada una de las variables que quedan por instan-ciar. El pseudo cdigo de algoritmo forward checking es:

    1. Seleccionar xi.

    2. Instanciar xi ai : ai Di.3. Razonar hacia adelante (forward-check):

    Eliminar de los dominios de las variables (xi+1, . . . , xn) an no instanci-adas, aquellos valores inconsistentes con respecto a la instanciacin (xi, ai),de acuerdo al conjunto 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.

    5. Si existe una variable por instanciar, sin valores posibles en su dominio, entoncesretractar los efectos de la asignacin xi ai. Hacer: 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.

    En la Figura 10.11 se puede apreciar la aplicacin del proceso FC sobre el ejemplode CSP correspondiente al problema de las 4-reinas (descrito en la seccin 10.3.3).Comprobamos la mejora respecto al algoritmo BT (Figura 10.5), ya que FC requieregenerar solo 8 asignaciones. En la primera asignacin x1 = 1, se podan (paso 3)los dominios de las variables x2, x3 y x4 de acuerdo a las restricciones que existenentre dichas variables y la variable x1. Tras la asignacin x2 = 3, comprobamos(paso 5) que la variable x4 queda sin valores en el dominio. Esto quiere decir quela instanciacin localmente consistente {(x1 = 1), (x2 = 3)} no puede formar partede ninguna solucin. Ello provoca un punto de backtracking sin necesidad de seguirexplorando esta rama. Tambin, comprobamos que cada asignacin permite limitarlos dominios de las variables pendientes de asignar, acotando de esta forma el espaciode bsqueda pendiente. Por ejemplo, la asignacin x1 = 2 permite limitar los dominiosiniciales {1, 2, 3, 4} de las variables pendientes a d2 = {4}, d3 = {1, 3} y d4 = {1, 3, 4}.

    Forward checking se ha combinado con algoritmos Look-Backward para generarotros algoritmos hbridos. Por ejemplo, forward checking con conflict-directed back-jumping (FC-CBJ) [Prosser, 1993] combina el movimiento hacia delante de FC conel movimiento hacia atrs de CBJ y de esa manera tiene las ventajas de ambos algo-ritmos.

    26

  • Tcnicas CSP

    Figura 10.11: Aplicacin del Forward Checking al problema de las 4-reinas.

    Minimal forward checking (MFC) [Dent y Mercer, 1994] es una version de FCque retrasa llevar a cabo toda la comprobacin de la consistencia de FC hasta quees absolutamente necesario. En vez de comprobar hacia adelante la asignacin actualcontra los valores de las variables futuras, MFC solo comprueba con los valores decada variable futura hasta que se encuentra un valor que es consistente. Despus, siel algoritmo retrocede llevara a cabo las comprobaciones con los valores restantesaun no comprobados. Claramente, MFC siempre lleva a cabo a lo sumo el mismonmero de comprobaciones que FC. Resultados experimentales han demostrado quela ganancia no supera el 10%.

    Otras versiones de FC estn basadas en la idea de desarrollar un mecanismo depoda de dominios que elimina valores no solo en el nivel actual de bsqueda, sinotambin en cualquier otro nivel. Extended forward checking (EFC) [Bacchus, 2000],tiene la habilidad de podar futuros valores que son inconsistentes con asignacioneshechas antes de la asignacin actual pero que no haban sido descubiertas. Otrosalgoritmos, como el conflict based forward checking (CFFC), estn basados en la ideade los conflictos, al igual que los algoritmos CBJ y learning analizados en la Seccin

    27

  • Problemas de satisfaccin de restricciones

    10.4.3.1, para reforzar a FC. CFFC almacena los conjuntos conflicto y lo usa parapodar los valores en los niveles pasados de bsqueda. Una diferencia con CBJ es quelos conjuntos conflicto se almacenan sobre un valor y no sobre una variable, es decir,cada valor de cada variable tiene su propio conjunto conflicto. Esto permite saltarms lejos que CBJ.

    Full Look- Ahead (FLA)

    Como hemos analizado, el algoritmo FC comprueba nicamente las restriccionesentre la variable que acaba de instanciarse con el resto de variables por instanciar.Por ello, mantiene la arco consistencia solo entre la variable asignada y el resto devariables. El algoritmo Full Look-Ahead (FLA) intenta mantener la arco consistenciatambin entre el resto de dichas variables, por lo que tambin es llamado maintainingarc consistency (MAC).

    De esta manera, el algoritmo FLA resulta como si en el algoritmo BT (vase laFigura 3), la funcin Comprobar hiciera las siguientes comprobaciones (sabiendo queel paso 1 realmente ya no es necesario):

    1. i(1 6 i < k) : (V [k] , V [i]) cki (* Standard Backtracking *)2. f(k < f n),Vf Df : (V [k] , V [f ]) ckf (*Forward Checking*)3. p(k < p n), q(k < q n), p 6= q,Vp Dp, Vq Dq : (Vp, Vq) cp,q

    El punto (3) comprueba que, tras la poda en los dominios de las variales porinstanciar realizadas en FC (en el paso (2)), cada par de variables Vp, Vq que quedanpor instanciar, tengan al menos un valor en sus dominios que sean consistentes conla restriccin que exista entre ellas.

    La ventaja del algoritmo FLA frente al FC es que detecta tambin los conflictosentre las variables futuras. Por ello, FLA permite podar mucho ms los dominiosde las variables por instanciar as como encontrar antes los puntos de backtrackingdebido a situaciones sin salida. Ello, evidentemente, a costa de un mayor esfuerzoen la propagacin de los efectos de cada nueva asignacin. Habitualmente, basta conrealizar un proceso de FC frente al proceso FLA ms costoso. Sin embargo, paraproblemas altamente restringidos el proceso FLA resulta ms conveniente al podarmuy fuertemente el espacio de bsqueda.

    En la Figura 10.12 vemos la aplicacin del proceso FLA sobre el ejemplo de la 4-reinas. Las lneas punteadas corresponden al proceso de propagacin. Comprobamosla mejora respecto al algoritmo FC (vase la Figura 10.11), ya que ahora solo serequiere generar 5 asignaciones.

    10.5 Heursticas de bsqueda

    Un algoritmo de bsqueda para la satisfaccin de restricciones requiere establecerel orden en el cual se van a estudiar las variables, as como el orden en el que se van a

    28

  • Heursticas de bsqueda

    Figura 10.12: Aplicacin de Look-Ahead al problema de las 4-reinas.

    instanciar los valores de los dominios de cada una de las variables. Seleccionar el ordencorrecto de las variables y de los valores puede mejorar notablemente la eficiencia deresolucin. En el mtodo general de bsqueda mediante Backtracking descrito en laSeccin 10.4.1 (vase el Algotimo 10.1), la ordenacin de variables se correspondea la ordenacin que se realice del vector V [n], mientras que los criterios para laseleccin de valores se incluiran en la funcin Seleccin incluida en el Algoritmo 10.1.Tambin puede resultar importante una ordenacin adecuada de las restricciones delproblema cuando se aplique la funcin Comprobar [Salido y Barber, 2006], aunque seha realizado mucho menos esfuerzo en el estudio de tales heursticas. Veamos las msimportantes heursticas de ordenacin de variables y de ordenacin de valores.

    10.5.1 Heursticas de Ordenacin de Variables

    El orden en el cual las variables son asignadas durante la bsqueda puede tenerun impacto significativo en el tamao del espacio de bsqueda explorado. Esto puedeser contrastado tanto emprica como analticamente. Generalmente las heursticas deordenacin de variables tratan de seleccionar lo antes posible las variables que ms

    29

  • Problemas de satisfaccin de restricciones

    restringen a las dems. La intuicin es tratar de asignar lo antes posible las variablesms restringidas y de esa manera identificar las situaciones sin salida lo antes posibley as reducir el nmero de vueltas atrs. La ordenacin de variables puede ser estticao dinmica.

    10.5.1.1 Ordenacin de Variables Esttica

    Las heursticas de ordenacin de variables esttica generan un orden fijo de lasvariables antes de iniciar la bsqueda, basado en informacin global derivada de laestructura de la red de restricciones original que representa el CSP. Veamos primerounas ideas iniciales. Una red de restricciones ordenada es una red de restriccionescuyos nodos han sido ordenados linealmente. En la Figura 10.13, podemos observarlos diferentes rdenes lineales (de arriba a abajo) posibles para una red inicial de tresvariables: (a,b,c), (a,c,b), (b,a,c), etc. El ancho de una variable en una red de restric-ciones ordenada es el nmero de arcos que restringen esa variable con las variablessuperiores, denominadas padres, en el orden lineal de las variables establecido. El an-cho de cada red de restricciones ordenada es el mximo ancho de todas sus variables.De esta forma, el ancho de una red de restricciones es el mnimo ancho de todas susposibles ordenaciones lineales. As, el ancho de la red de restricciones inicial de laFigura 10.13 es 1. Claramente, el ancho de cada red de restricciones depende de suestructura.

    Figura 10.13: Red de restricciones ordenadas.

    Si una red de restricciones es fuertemente k -consistente, siendo k mayor que elancho de la red, entonces existe un orden de asignacin de variables que no provo-cara vuelta atrs en el proceso de bsqueda. Particularmente, en el caso de redes conestructura de rbol, cuyo ancho es 1, sera posible efectuar una bsqueda sin vueltaatrs si la red fuera arco consistente (2-consistencia). Ms concretamente, sera sufi-ciente con mantener la arco-consistencia direccional (vase la Seccin 10.4.2.2), menos

    30

  • Heursticas de bsqueda

    costosa que la arco-consistencia. Como ejemplo, en la red de la Figura 10.13, un ordende asignacin de variables correspondiente a un ordenanamiento de la red de ancho 1no provocara vuelta atrs. En un caso general, interesa encontrar el mejor orden parala asignacin de variables. Entre las heursticas ms utilizadas podemos mencionar:

    Minimum Width (MW). Esta heurstica se basa en que la ordenacin devariables corresponda a la ordenacin lineal de la red que d lugar a su menoranchura (ancho de la red). Mediante este orden, se persigue que cuando seasigne una variable, sus padres estn ya asignados, de forma que las situacionessin salida puedan identificarse antes y se reduzca el nmero de vueltas atrs.

    Ejemplo 10.5. La red de la Figura 10.14 permite 7! (es decir, 5.040) orde-namientos lineales de las variables. El ancho de esta red es 1, que corresponde,entre otras, a la ordenacin lineal de las variables indicada en la Figura 10.14.En dicha ordenacin, todas las variables tienen un orden 1, por lo que la redinicial tiene un ancho igual a 1. La ordenacin de las variables, en el ordenlineal de la red, de arriba abajo, resulta (a, b, c, f, g, d, e). Este sera el ordende seleccin de variables obtenido segn el criterio MW. Claramente, al tenerla red inicial la estructura de un rbol, su mejor orden corresponde a asignarcuanto antes la variable a, luego la variable b o c, y finalmente, d o e, o bienf o g.

    El algoritmo que obtiene el orden de las variables segn el mtodo MW se-lecciona, sobre la red original, la variable con el mnimo nmero de variablesconectadas y la coloca al final del orden. Dicha variable y todos sus arcos ady-acentes se eliminan de la red original. Posteriormente, se selecciona la siguientevariable, y el proceso contina recursivamente.

    Ejemplo 10.6. En la Figura 10.15 se muestra la aplicacin del mtodo MWa una red de ancho 3. Inicialmente, se selecciona G como la variable menosconectada y se elimina dicha variable y sus relaciones de la red. Posteriormente,se seleccionan {F,E}, despus D, C, B y, finalmente A. Podramos comprobarque este orden da lugar, entre otros, al mnimo ancho de la red:Orden de Seleccin: A B C D E F GAncho de la Variable: 0 1 2 3 3 3 3

    Luego el orden de seleccin de variables segn MW resultara (A, B, C, D, E,F, G). Alternativamente, si se hubiera optado por otra ordenacin (A, B, C,D, E, G, F), no hubiera dado lugar al mnimo orden de la red. El ancho delas variables sera (0,1,2,3,3,2,4) respectivamente, por lo que dara lugar a unancho 4.

    Maximum Degree (MD). Esta heurstica ordena las variables en un ordendecreciente de su grado en la red de restricciones. El grado de una variable sedefine como el nmero de variables con las que est conectada. De esta forma,esta heurstica selecciona primero las variables de mayor grado, es decir, las

    31

  • Problemas de satisfaccin de restricciones

    Figura 10.14: Ordenacin de una red de mnimo ancho.

    ms conectadas. En la red de la Figura 10.15, la ordenacin de seleccin sera(D, A, {B, C,E, F} , G). Esta heurstica intenta seguir el orden de variables deanchura mnima (MW), con un menor coste computacional para el clculo dedicho orden, aunque no lo garantiza.

    Mnimum Domain Variable (MDV). Esta heurstica selecciona las variablesde acuerdo a la menor cardinalidad de su dominio. Las variables con dominioms pequeo son elegidas antes. Sin embargo, respecto a la aplicacin de estaheurstica, es preferible su versin dinmica (minimum remaining values).

    Diversos resultados experimentales sobre heursticas de ordenacin de variablesestticas utilizando CSP generados aleatoriamente concluyen que todas ellas son pe-ores que la heurstica minimum remaining values (MRV), que es una heurstica deordenacin de variables dinmica que veremos a continuacin.

    10.5.1.2 Ordenacin de Variables Dinmica

    El problema de los algoritmos de ordenacin de variables estticos es que no tienenen cuenta los cambios en los dominios o relaciones de las variables causados porla propagacin de las restricciones durante la bsqueda. Por ello, estas heursticas

    32

  • Heursticas de bsqueda

    A

    D

    E

    B

    F

    G

    C

    A

    D

    E

    B

    F

    G

    C

    Paso 1 A

    D

    E

    B

    F

    G

    C

    Paso 2

    A

    D

    E

    B

    F

    G

    C

    Paso 3 A

    D

    E

    B

    F

    G

    C

    Paso 4 A

    D

    E

    B

    F

    G

    C

    Paso 5

    Red Inicial

    Figura 10.15: Aplicacin de la heurstica Minimum Width.

    generalmente se utilizan en algoritmos de comprobacin hacia atrs (o look-backward)donde no se lleva a cabo la propagacin de las instanciaciones que se van realizando.

    Las heursticas de ordenacin de variables dinmica pueden cambiar el orden deseleccin de las variables de forma dinmica durante el proceso de bsqueda, cada vezque requiere la instanciacin de una variable. La ordenacin se basa en las instancia-ciones ya realizadas y en el estado de la red en cada momento de la bsqueda.

    Se han propuesto varias heursticas de ordenacin de variables dinmicas. Lasms comunes se basan en el principio de primer fallo que sugiere que para tenerxito deberamos intentar primero donde sea ms probable que falle. De esta maneralas situaciones sin salida pueden identificarse antes y adems se ahorra espacio debsqueda. De acuerdo a este principio, en cada paso, se selecciona la variable msrestringida. Entre las ms utilizadas podemos citar:

    Minimum Remaining Values (MRV). Esta heurstica selecciona, en cadapaso, la variable con el dominio de instanciacin ms pequeo. Esta heursticase basa en la intuicin de que si una variable tiene pocos valores de eleccinen su dominio, entonces es ms difcil encontrar un valor consistente. Cuandose utiliza MRV junto con algoritmos de comprobacin hacia atrs (Algoritmoslook-Backward descritos en 10.4.3.1), equivale a una heurstica esttica que or-dena las variables de forma ascendente con la talla del dominio antes de llevar a

    33

  • Problemas de satisfaccin de restricciones

    cabo la bsqueda, y resulta igual por tanto a la heurstica MDV. Cuando MRVse utiliza en conjuncin con algoritmos look-ahead (10.4.3.2), la ordenacin sevuelve dinmica. En estos casos, cada nueva instanciacin de variable es propa-gada al resto de la red y puede acotar los dominios de las variables que quedanpor instanciar. As, en cada paso de la bsqueda, la prxima variable a asignares la variable con el dominio ms pequeo.

    Maximun Cardinality (MC). Esta heurstica selecciona la primera variablearbitrariamente y despus en cada paso, selecciona la variable que est rela-cionada con el mayor nmero de variables ya instanciadas. La intuicin es queresulta la ms restringida, al estar relacionada con el mayor nmero de variablesya instanciadas. Esta heurstica resulta similar a la heurstica MD previamentedefinida, pero para el caso dinmico. Como una variacin de la misma, podraseleccionarse, dinmicamente en cada paso, la variable de mximo grado, sincontabilizar las variables ya instanciadas.

    10.5.2 Ordenacin de Valores. Tipos

    En comparacin con la ordenacin de variables, se ha realizado menos trabajo so-bre heursticas para la ordenacin de valores. Estas heursticas tienen como objetivoseleccionar el valor ms prometedor para cada variable en su dominio de instanciacin.Se aplicaran, por ejemplo, en el paso 2 del algoritmo Forward-Checking descrito en10.4.3.2. La idea bsica es seleccionar el valor de la variable actual que ms proba-bilidad tenga de llevarnos a una solucin, es decir, identificar la rama del rbol debsqueda que sea ms probable que obtenga una solucin.

    La mayora de las heursticas propuestas tratan de seleccionar el valor menosrestringido de la variable actual, es decir, el valor que menos reduce el nmero devalores tiles para las futuras variables, o alternativamente, el que deja los dominiosmayores. Esto sigue la intuicin de que un subproblema es ms probable que tengasolucin cuantos ms valores tengan las variables que quedan por instanciar en susdominios. Entre las ms utilizadas podemos mencionar:

    min-conflicts. Es una de las heursticas de ordenacin de valores ms conocida.Esta heurstica ordena los valores de acuerdo a los conflictos que generan conlas variables an no instanciadas. Esta heurstica asocia a cada valor a de lavariable actual, el nmero total de valores en los dominios de las futuras variablesadyacentes con la actual que son incompatibles con a. El valor seleccionado esel asociado a la suma ms baja.

    max-domain-size. Alternativamente a la anterior, esta heurstica selecciona elvalor de la variable actual que deja el mximo dominio en las variables futuras.

    weighted-max-domain-size. Esta heurstica especifica una manera de romperempates en el mtodo anterior, en el caso de que existan varios valores de lavariable actual que dejen el mismo mximo dominio en las variables futuras.Entonces, se basa en el nmero de futuras variables que tienen la mayor talla de

    34

  • Extensiones de CSP

    dominio. Por ejemplo, si un valor ai deja cinco variables futuras con dominiosde seis elementos (y el resto con dominios mayores de seis), y otro valor aj dejasiete variables futuras tambin con dominios de seis elementos, en este caso seselecciona el valor ai.

    point-domain-size. Esta heurstica asigna un peso (unidades) a cada valor dela variable actual dependiendo del nmero de variables futuras que se quedancon ciertas tallas de dominios. Por ejemplo, para cada variable futura que sequeda con un dominio de talla 1 debido al valor ai, se aaden 8 unidades alpeso de ai, para cada variable futura que se queda con un dominio de talla 2se aaden 7 unidades, etc. De esta manera se selecciona el valor con el menorpeso.

    Supervivencia. Esta heurstica propone una variacin de la idea anterior dela heurstica min-conflicts. De acuerdo a dicha heurstica, cuando se cuenta elnmero de valores incompatibles en el dominio de una futura variable xk, debidoa la eleccin del valor ai para xi, ste nmero se divide por la talla del dominiode xk. Esto da el porcentaje de los valores tiles que pierde xk debido al valorai que actualmente estamos examinando. De nuevo, los porcentajes se aadenpara todas las variables futuras con las que est relacionada xi y se seleccionael valor ms bajo que se obtiene en todas las sumas.

    max-promise. En esta heurstica, para cada valor ai de la variable xi se cuentael nmero de valores que hay compatibles con ai en cada variable adyacentefutura, y se toma el producto de las cantidades contadas. Este producto se llamapromesa del valor. De esta manera se selecciona el valor con la mxima promesa.Al usar el producto en vez de la suma del nmero de valores compatibles, laheurstica max-promise trata de seleccionar el valor que deja un mayor nmerode soluciones posibles despus de que este valor se haya asignado a la variableactual. De esta manera, la promesa de cada valor representa una cota superiordel nmero de soluciones diferentes que pueden existir despus de que el valorse asigne a la variable.

    10.6 Extensiones de CSP

    En esta Seccin se presentan algunas de las extensiones ms relevantes a la metodologaCSP, orientadas a tipologas de problemas ms concretas o que plantean requerimien-tos adicionales.

    10.6.1 CSP no binarios

    Gran parte de las tcnicas de satisfaccin de restricciones se centran en problemasbinarios, en el caso de CSP discretos, y en problemas ternarios, en el caso de CSPcontinuos. La razn bsica de tratar con restricciones binarias y ternarias es por lasimplicidad que supone comparado con las restricciones n-arias y tambin por el hecho

    35

  • Problemas de satisfaccin de restricciones

    de que todo problema de satisfaccin de restricciones n-arias puede ser transformadoa un problema binario o a uno ternario equivalente, bajo la definicin de equivalenciade red.

    Principalmente, hay dos tcnicas para convertir las restricciones no binarias abinarias en CSP discretos:

    Codificacin dual, introducida por Dechter y Pearl, en la cual las restriccionesdel problema original se transforman en variables del nuevo problema y vicev-ersa. Las variables que se generan de las restricciones originales se denominanvariables duales, y las variables del problema original se denominan variablesoriginales. El dominio de cada variable dual es el conjunto de tuplas que satis-facen la restriccin original que la genera. Adems, hay una restriccin binariaentre dos variables duales vc y vc si y solamente si las restricciones originalesc y c comparten una o ms variables. Las nuevas restricciones binarias se de-nominan restricciones duales y prohben pares de tuplas donde las variablescompartidas tomen valores diferentes.

    (0,0,1) (0,1,0) (1,0,0) (0,0,0) (0,1,1) (1,0,1)

    (0,0,1) (1,0,0) (1,1,1) (0,1,0) (1,0,0) (1,1,0)

    (1,1,1)

    v1 v4

    v2 v3

    R21&R33

    R31

    R22&R33 R33 R11

    Figura 10.16: Ejemplo de codificacin dual de un CSP no binario.

    Si consideremos el siguiente ejemplo, tomado de [Stergiou y Walsh, 1999], conseis variables con dominios {0, 1} y cuatro restricciones: x1+x2+x6 = 1, x1x3+x4 = 1, x4 +x5x6 1 y x2 +x5x6 = 0. La codificacin dual representa esteproblema con cuatro variables duales, una para cada restriccin. Los dominios deestas variables duales son las tuplas que satisfacen las respectivas restricciones.Por ejemplo, la variable dual v3 asociada a la tercera restriccin, x4+x5x6 1,tiene como dominio (0, 1, 0), (1, 0, 0), (1, 1, 0), (1, 1, 1), ya que estas son las tuplasde valores para (x4, x5, x6) que satisfacen la restriccin. La codificacin dual delproblema se muestra en la Figura 10.16. Rij es la restriccin binaria sobre unpar de tuplas que se satisface si y solo si el isimo elemento de la primeratupla es igual al jsimo elemento de la segunda tupla. Entre v3 y v4 hay unarestriccin de compatibilidad para asegurar que las dos variables originales encomn, x5 y x6 tienen los mismos valores. Esta restriccin permite solamente

    36

  • Extensiones de CSP

    aquellos pares de tuplas que concuerdan con los elementos segundos y terceros,es decir (1, 0, 0) para v3 y (0, 0, 0) para v4.

    Codificacin de variables ocultas, que procede de Peirce, quien, en 1933,prob formalmente en el campo de la filosofa lgica que las relaciones binarias yno binarias tienen el mismo poder de expresividad. Su mtodo para representaruna relacin no binaria mediante una coleccin de restricciones binarias formlas bases del mtodo de las variables ocultas. En la codificacin de variablesocultas, el conjunto de variables est formado por todas las variables del CSPno binario original ms un nuevo conjunto de variables duales que llamaremosvariables ocultas. Al igual que la codificacin dual, cada variable oculta corre-sponde a una restriccin en el problema original. De nuevo, el dominio de cadavariable oculta consta de las tuplas que satisfacen la restriccin original. Paracada variable oculta vc, hay una restriccin binaria entre la variable vc y cadauna de las variables originales xi que estn involucradas en la correspondienterestriccin original c. Cada restriccin especifica que la tupla asignada a vc esconsistente con el valor asignado a xi.

    (0,0,1) (0,1,0) (1,0,0) (0,0,0) (0,1,1) (1,0,1)

    (0,0,1) (1,0,0) (1,1,1) (0,1,0) (1,0,0) (1,1,0)

    (1,1,1)

    v1 v4

    v2 v3

    r1

    0 1 0 1 0 1 0 1 0 1 0 1 x1 x2 x3 x4 x5 x6

    r1 r1

    r1 r2 r2

    r2 r2 r3

    r3 r3

    r3

    Figura 10.17: Ejemplo de codificacin de variables ocultas de un CSP no binario.

    Considerando de nuevo el ejemplo anterior presentado en [Stergiou y Walsh,1999], donde el problema consta de seis variables y cuatro restricciones no bina-rias. En la codificacin de variables ocultas hay, adems de las seis variables orig-inales con dominios {0, 1}, cuatro variables duales con los mismos dominios queen la codificacin dual. Por ejemplo, la variable dual asociada con la tercera re-striccin x4 +x5x6 1, tiene como dominio (0, 1, 0), (1, 0, 0), (1, 1, 0), (1, 1, 1).Adems ahora hay restricciones de compatibilidad entre v3 y x4, entre v3 y x5 yentre v3 y x6, ya que estas son las variables que estn involucradas en la tercerarestriccin. La codificacin de variables ocultas de este problema se muestra enla Figura 10.17. La restriccin binaria ri acta sobre una tupla y un valor, dandoverdadero si y solo si el elemento isimo de la tupla es igual al del valor. Por

    37

  • Problemas de satisfaccin de restricciones

    ejemplo, la restriccin de compatibilidad r1 entre v3 y x4 es cierta si y solo si elprimer elemento de la tupla asignada a v3 es igual al valor de x4.

    En el caso de CSP numricos o continuos, se pueden transformar las restriccionesn-arias en restricciones ternarias, segn el mtodo descrito por Lottaz, de forma quese mejora la eficiencia de los algoritmos de consistencia. Esta transformacin solo esposible si se permite la introduccin de variables auxiliares.

    La transformacin de CSP n-arios en CSP binarios equivalentes permite la apli-cacin de las diversas tcnicas conocidas para CSP binarios. Sin embargo, se pierde lalegibilidad de las restricciones, originalmente adquiridas desde el anlisis del problemacomo restricciones n-arias. Por otra parte, resultan ms difciles de aplicar heursticasde bsqueda orientadas al dominio, al haber perdido las variables y las restriccionessu equivalencia con el problema original. Por ello, se mantiene el inters de trabajarcon CSP n-arios.

    10.6.2 CSP distribuidos (DisCSP)

    En el mbito de los sistemas multiagente, los problemas de satisfaccin de re-stricciones se pueden manejar mediante el uso de agentes inteligentes que se encar-gan de controlar subconjuntos de variables y restricciones del problema. Si todo elconocimiento sobre el problema puede ser concentrado en un nico agente, este agentepodr resolver el problema mediante el uso de tcnicas centralizadas de satisfaccinde restricciones. Sin embargo, obtener una solucin de forma centralizada es con fre-cuencia inadecuado o incluso imposible. Algunas razones por las que son deseables eluso de mtodos distribuidos son [Faltings y Yokoo, 2005]:

    Coste de crear una autoridad central. Un CSP puede ser distribuido deforma natural en un conjunto de agentes concretos. En tales casos, el uso deuna autoridad central para resolver el problema requiere establecer un elementoadicional que no estaba presente en la arquitectura del problema.

    Privacidad/seguridad. Las restricciones que maneja cada agente puede serinformacin estratgica que no debera ser revelada a la competencia o inclusoa una autoridad central. La privacidad es ms fcil de mantener en resolvedoresdistribuidos.

    Robustez frente a fallos. El fallo de un servidor central puede ser fatal. Enun mtodo distribuido, el fallo de un agente puede ser menos crtico y otrosagentes podran ser capaces de encontrar una solucin al problema.

    Adicionalmente, pueden existir caractersticas de jerarqua, cooperacin, etc., enun problema distribuido que se puede representar de una manera ms eficiente me-diante una arquitectura de CSP distribuida. De esta manera, surge la necesidad dedistribuir el problema en una serie de sub-problemas que cumplan con los anteriorescriterios y que, adems, sean ms fciles de resolver. Sin embargo, una de la com-plejidad fundamental en la resolucin de los DisCSP es el sobrecoste que supone el

    38

  • Extensiones de CSP

    intercambio de mensajes entre los agentes. Por otra parte en los problemas distribui-dos no se pueden aplicar heursticas e inferencias de CSPs centralizados.

    Un CSP Distribuido (DisCSP) es un CSP donde las variables y las restricciones sondistribuidas entre mltiples agentes. Cada agente en un DisCSP tiene algunas vari-ables y trata de determinar sus valores. Sin embargo hay restricciones inter-agentesy la asignacin de valores debe satisfacer estas restricciones. La bsqueda que se lle-va a cabo para resolver un DisCSP puede ser llevada a cabo por un agente central,aunque en la mayora de los casos la bsqueda se lleva a cabo de forma distribuidaa travs del intercambio de mensajes entre los diferentes agentes. Existen dos aproxi-maciones bsicas para la bsqueda de soluciones en DisCSP. La primera de ellas es lallamada Synchronous Backtracking (SBT). Para ello, se ordenan inicialmente todoslos agentes (A1, A2, . . . , An). El primer agente A1 obtiene una asignacin consistentepara sus variables y enva al siguiente agente dicha asignacin, y as sucesivamente.De esta forma, cada agente espera un mensaje del agente anterior para empezar labsqueda. Cuando un agente Ai recibe el mensaje, intenta obtener una asignacina sus variables de tal manera que se cumplan todas las restricciones, incluyendo lasvariables asignadas en los agentes previos. Si un agente Ai no pudiera encontrar unaasignacin consistente, enva un mensaje al agente anterior Ai1, a fin de pedirle unaasignacin alternativa. La solucin global se alcanza cuando el ltimo agente An en-cuentra una asignacin para sus variables. En cambio, no existe solucin si el primeragente A1 recibe un mensaje de asignacin alternativa de A2, y no puede obtenerla.

    En un esquema SBT, en principio, los agentes no se ejecutan concurrentemente.Sin embargo, se han planteado esquemas que superan este inconveniente, de forma quecada agente Ai continua buscando soluciones alternativas a la previamente encontradaa fin de poder ofrecer dicha instanciacin rpidamente al agente siguiente Ai+1, sirecibe un mensaje para ello. A este esquema, tambin se pueden plantear las tpicasalternativas de un proceso de Backtracking como el conocido BackJumping.

    La segunda alternativa fue llevada a cabo por Yokoo y otros [Yokoo y otros, 1998]en sus algoritmos de backtracking asncrono, donde el DisCSP se resuelve mediante elintercambio de mensajes de forma asncrona. Ello permite a los agentes actuar concur-rentemente sin un control global, garantizando la completitud del proceso. Para ello,se asume una ordenacin de prioridades entre los agentes y cada agente es responsablede forzar todas las restricciones entre sus variables y las variables que sean propiedadde agentes de rango mayor. A partir de este planteamiento, y utilizando la ordenacinde prioridades, se desarrollan dos algoritmos de bsqueda distribuida, asynchronousbacktracking (ABT) y asynchronous weak-commitment (AWC). La principal diferen-cia entre ellos es el manejo de las situaciones sin salida (dead-end), es decir, cuandoun agente no puede encontrar una asignacin consistente para sus variables. En ABT,el agente retrocede y enva un mensaje a los agentes de prioridad superior alegandoque la combinacin de asignaciones de valores a las variables de rango superior nopuede formar parte de una solucin en sus variables, y solicitando que se cambie unaasignacin. Por el contrario, en AWC, un agente utiliza una tcnica llamada com-promiso dbil, donde un agente renuncia a la tentativa de satisfacer sus restriccionesy las delega a otros agentes levantando su propia prioridad. Mientras hace esto, unagente puede enviar instanciaciones no consistentes a otros agentes por lo que ellos

    39

  • Problemas de satisfaccin de restricciones

    evitarn asignaciones de valores especificadas en las instanciaciones no consistentes.Resultados experimentales muestran que AWC es significativamente mejor que ABTen la obtencin de soluciones en algunas instancias de DisCSP difciles. Otras distin-tas aproximaciones para el manejo de DisCSP pueden ser vistas en [Faltings y Yokoo,2005].

    10.6.3 CSP Temporales y CSP Dinmicos

    Un CSP temporal es un caso particular de CSP donde las variables representanuna primitiva temporal (puntos de tiempo, intervalos, o duraciones temporales), es-tableciendose restricciones temporales entre ellas. Constituyen una tipologa de CSPde gran aplicacin (bases de datos, lenguaje natural, scheduling, etc.). Los modelosbsicos de CSP temporales son binarios, y se basan en lgebras temporales. Un l-gebra temporal define, fundamentalmente: (i) el conjunto de restricciones sobre lasvariables (xicijxj), y (ii) las operaciones bsicas entre las mismas. Estas operacionesson, principalmente:

    Adicin de una nueva restriccin sobre un mismo par de variables:

    (xi {cij}xj) (xi{cij

    }xj) = xi

    {cij cij

    }xj

    Combinacin (transitiva), que permite obtener la relacin cik a partir de cijy cjk:

    (xi {cij}xj) (xj {cjk}xk) = xi {cij cjk}xk

    Otras operaciones son la inclusin: (cij cij), la negacin (cij), etc.

    Los principales CSP temporales son:

    lgebra de Puntos [Vilain y Kautz, 1986], que establece restricciones tem-porales cualitativas y disyuntivas entre puntos de tiempo: ti {} tj . En laFigura 10.18 se muestran las tablas para las operaciones y de esta lgebra.

    lgebra de Intervalos [Allen, 1983], que establece restricciones temporalescualitativas y disyuntivas entre intervalos: Ii{before, meets, overlaps, during,starts, finishes, equal} Ij , as como sus inversas.

    lgebra Mtrica entre puntos [Dechter y otros, 1991], que establece restric-ciones temporales mtricas y disyuntivas entre puntos de tiempo: tj ti {[a1,b1], [a2, b2],. . ., [an, bn]}, donde ai, bi representan puntos extremos de intervalosmtricos.

    Estas lgebras permiten especificar las tpicas restricciones de scheduling respectoa la comparticin no simultnea de recursos. Por ejemplo, si las tareas W1 y W2deben compartir, de forma no simultnea, un recurso comn, debemos especificar quesu ejecucin no debe solaparse en el tiempo. Es decir:

    40

  • Extensiones de CSP

    Figura 10.18: Tablas para las operaciones y en el lgebra de puntos ( es lainconsistencia y ? representa {}.

    1. Mediante restricciones sobre los intervalos de ocurrencia de las tareas:Iw1 {before, after} Iw2

    2. Mediante restricciones sobre los puntos de tiempo extremos:Endw1 < Startw2 Endw2 < Startw1

    3. O bien, conociendo la duracin de las tareas, podemos utilizar un modelo mtri-co:

    Startw1 Startw2 {] ,durw1 ], [durw2 , [}

    Otras lgebras temporales establecen restricciones entre duraciones, entre puntose intervalos, y entre puntos, duraciones e intervalos, etc. Estos modelos plantean yarestricciones ternarias.

    Los CSP temporales binarios se pueden representar mediante una red de restric-ciones temporales (Temporal Constraint Network o TCN), como un grafo dirigido,donde una restriccion entre xi, xj , implica una restriccin simtrica entre xj , xi.

    Consideremos el siguiente ejemplo [Dechter y otros, 1991]: "Juan va de su casa altrabajo en coche (30-40 minutos) o en tren (al menos una hora). Luis va en coche(20-30 minutos) o en metro (40-50 minutos). Hoy Juan parte de casa entre las 8:10y las 8:20 y Luis llega al trabajo entre las 9:00 y las 9:10. Adems, sabemos queJuan lleg al trabajo entre 10 y 20 minutos despus de que Luis saliera de casa.Estainformacin se puede modelar mediante un CSP mtrico entre puntos, representadoen la red temporal de la Figura 10.19:

    Variables: T0, T1, T2, T3, T4 {0, . . . , 3600}

    Restricciones:

    10 T1 T0 20 30 T2 T1 40 60 T2 T1 10 T2 T3 20 20 T4 T3 30 40 T4 T3 50

    41

  • Problemas de satisfaccin de restricciones

    T0

    T1 T2

    T3 T4

    {[10, 20]}

    {[30, 40], [60, ]}

    {[10, 20]}

    {[20, 30], [40, 50]}

    T0: Tiempo inicial (en este caso, 8:00 h.)T1 / T2: Tiempo en que Juan sale de casa / llega al trabajo.T3/T4: Tiempo en que Luis sale de casa / llega al trabajo.

    {[60, 70]}

    Figura 10.19: Una Red Temporal.

    Las restricciones representadas en la Figura 10.19 corresponden a la informacinexplcitamente conocida del problema. Ante ella, se pueden hacer las siguientes pre-guntas: Esta informacin es consistente?, es decir, tiene solucin?, Es posible queJuan haya usado el tren y Luis haya usado el Metro?, Cuales son los posibles tiem-pos en los que Luis pudo haber salido de casa?, Quin llega antes al trabajo, Juan oLuis?, etc.

    Estas preguntas se pueden responder mediante los procesos inferenciales descritosen la Seccin 10.4.2. Particularmente, resulta til la adaptacin del algoritmo de sendaconsistencia descrito en Algoritmo 10.3 de forma que la clausura de las restriccionesen cada subred de 3 nodos (funcin Revisar) se realice mediante la operacin de com-binacin (). Ello da lugar al Algoritmo de Clausura Transitiva (Transitive ClosureAlgorithm, TCA) cuya funcin Revisar se muestra en el Algoritmo 10.4.

    Algoritmo 10.4 Funcin Revisar del Algoritmo de Clausura Transitivafuncin Revisar(i, j, k)iniciocambiado := false;cij cij (cik ckj)si cij = entonces

    Inconsistente;fin sisi cij cij entonces

    cij := cij ; ; Acota la restriccin cij

    cambiado := truefin sidevolver cambiado;fin Revisar;

    Como se puede apreciar, el algoritmo TCA obtiene una red senda-consistente,donde:

    42

  • Extensiones de CSP

    cij , cik, ckj CSP : cij cij (cik ckj)La aplicacin de este proceso al CSP de la Figura 10.19, obtendra una red

    clausurada en la que se han hecho explcitas las restricciones implcitamente con-tenidas en el problema (as fue el caso de la red de la Figura 10.10). La red mnimaequivalente se muestra en la Figura 10.20, donde las nuevas restricciones derivadaspermitiran responder a algunas de las preguntas anteriores.

    Figura 10.20: Red Mnima correspondiente a la red de la Figura 10.19.

    Especialmente en el marco del dominio temporal, y ms concretamente en suaplicacin a problemas que evolucionan (planificacin, scheduling, etc.), aparecen losCSP Dinmicos (DCSP). Un DCSP se define como una secuencia de CSP, donde cadauno de ellos corresponde a un cambio en el CSP previo [Dechter y Dechter, 1988].As, en un DCSP pueden aadirse o retractarse restricciones de forma dinmica, locual puede ocurrir durante el proceso de comprobacin de la consistencia, durante labsqueda de soluciones, o bien una vez obtenida una solucin. Todos los CSP estticosen la secuencia de un DCSP deben ser resueltos para solucionar el DCSP. El problemaparticular en los DCSP reside en encontrar sucesivamente, si existen, nuevas solucionesdespus de cada modificacin. Esto es denominado el problema de mantenimiento dela solucin, que hace uso de tcnicas especficas (obtencin de soluciones prximas,reparacin de conflictos, etc.) a fin de evitar sucesivos, redundantes e ineficientes,procesos de bsqueda.

    10.6.4 Otras extensiones

    Para la resolucin de un CSP pueden aplicarse tambin tcnicas estocsticas, tc-nicas de bsqueda no sistemticas e incompletas, incluyendo heursticas. Ejemplos deeste tipo de tcnicas son hill-climbing, bsqueda tab, enfriamiento simulado, algorit-mos genticos, etc. Estas tcnicas pueden considerarse como adaptativas, en el sentidode que ellas comienzan su bsqueda en un punto aleatorio del espacio de bsqueday lo modifican repetidamente, utilizando heursticas, hasta que se alcanza una solu-cin tras un cierto nmero de iteraciones. Estos mtodos son, generalmente, robustos y

    43

  • Problemas de satisfaccin de restricciones

    buenos para encontrar soluciones optimizadas en espacios de bsqueda grandes, y hanprobado su utilidad en la resolucin de CSP complejos. La caracterstica estocsticade estos mtodos introduce un aspecto aleatorio y pueden ocurrir situaciones dondeel proceso de bsqueda se encuentre en porciones errneas del espacio de bsqueda.Esto generalmente requiere que el sistema reinicie su ejecucin empezando en otropunto de partida aleatorio.

    Otra extensin de los CSP lo constituyen los CSP difusos (FCSP) [Dubois yotros, 1993]) que resultan de utilidad en dominios en los que no hay una descripcinsuficientemente concreta de las restricciones (por ejemplo: La accin dur casi unahora). Haciendo uso de los conceptos de la lgica difusa, en los FCSP se introduceel concepto de restriccin difusa, como una restriccin a la que se asocia un funcinde pertenencia R. El concepto de satisfabilidad resulta ahora una cuestin de grado.Una asignacin a las variables ((x1, a1), . . . , (xi, ai)) es una -solucin ( [0, 1])si satisface la combinacin de todas las restricciones con grado . De esta forma,puede relajarse el grado de cumplimiento de restricciones que impiden la obtencinde soluciones.

    Adems del concepto de restricciones difusas, tambin podra hablarse de restric-ciones fuertes y restricciones dbiles (hard and soft constraints). Mientras que lasrestricciones fuertes deben cumplirse, cabe incluir preferencias o alguna relajacin enel cumplimiento de las soft-constraints. Una forma de aproximacin a este tipo es eluso de CSP valuados (Weigthed-CSP) [Schiex y otros, 1995]. En ellos, las relacionesentre variables incluyen funciones de coste que expresan el grado de satisfaccin delas restricciones que vinculan dichas variables.

    Otra extensin compleja de los CSP son los denominados CSP numricos. General-mente n-arios, los CSP numricos estn ligados a una modelizacin matemtica de losproblemas (restricciones numricas, polinomiales, etc.), incluyen dominios infinitos, yrequieren la aplicacin de tcnicas matemticas especficas para su resolucin. Sinembargo, los algoritmos tipo simplex son aplicables para restricciones lineales, peroen cambio no resultan tan adecuados para restricciones no lineales o con dominiosdiscretos.

    Existe una clara relacin de la metodologa CSP con la programacin por restric-ciones donde las relaciones entre las variables tambin pueden establecerse en formade restricciones embebidas en un lenguaje de programacin y, particularmente, con laprogramacin lgica. De esta forma, la programacin lgica con restricciones (Con-straint Logic Programming, CLP) puede verse como un CSP donde las restriccionesse reescriben como predicados y la unificacin en LP se sustituye por la resolucin porcoercin en un dominio especfico (satisfaccin de restricciones) [Hentenryck, 1989].En relacin con ello, en el problema de satisfabilidad (SAT), las variables se instan-cian en el dominios de los valores booleanos {True, False} y las relaciones utilizanlos operadores lgicos and, or y not. En su caso ms simple, el problema es encontraruna asignacin a las variables que haga cierta una expresin.

    44

  • Conclusiones

    10.7 Conclusiones

    En este captulo se ha hecho una revisin de las principales tcnicas que subyacenen la metodologa CSP, para la resolucin de un amplio tipo de problemas combi-natorios. Las etapas fundamentales en la resolucin de problemas CSP son (Figura10.21):

    1. La modelizacin del problema, mediante variables, dominios y restricciones,donde es importante la capacidad expresiva de las restricciones a fin de quepuedan captar toda la informacin relevante del problema.

    2. La aplicacin de mtodos inferenciales, que deducen nueva informacin (nuevasrestricciones implcitas). Ello permite poder contestar a preguntas sobre el prob-lema, as como acotar el espacio de bsqueda, por lo que algn proceso dek -consistencia suele realizarse antes del proceso de bsqueda. En las tcnicasinferenciales, es importante su capacidad deductiva versus coste computacional.Dependiendo del proceso se obtienen diversos niveles de consistencia, as comomayor informacin deducida.

    3. La aplicacin de tcnicas de bsqueda de soluciones al problema. Con un coste,en general, NP-completo (NP-duro en el caso de optimizacin) estas tcnicasse integran con las tcnicas inferenciales (tcnicas hbridas), y pueden incluirheursticas, de ordenacin de variables o de valores, que permitan la obtencinde soluciones en un tiempo razonable.

    Bsqueda: Algoritmos hbridos

    Heurstica + Inferencia

    PROBLEMA

    CSP(variables, dominios y

    restricciones)

    CSP k-consistente

    SOLUCIONES

    modelizacin

    Tcnicas

    Inferenciales

    Respuesta a Preguntas

    Figura 10.21: Etapas para la resolucin de problemas mediante CSP.

    Tras la revisin de los principales conceptos y algoritmos de cada una de estas eta-pas, se ha presentado una breve referencia a algunas de las extensiones o tipologasconcretas de CSP. El conocimiento de las tcnicas CSP permite disponer de un con-junto de tcnicas que permiten abordar la resolucin de un amplio tipo de problemas.

    45

  • Problemas de satisfaccin de restricciones

    La aplicacin de los CSP es muy amplia, especialmente en la ingeniera, medicinae informtica. Esta metodologa resulta til para solucionar problemas combinatorios,temporales, de configuracin etc., cuya resolucin est sujeta a la satisfaccin de unconjunto de restricciones entre las variables del problema. Han demostrado su util-idad en aplicaciones de investigacin operativa (generacin de horarios, scheduling,etc.), bioinformtica (identificacin y ordenacin de secuencias genticas), ingenieraelectrnica (diseo de circuitos), telecomunicaciones (asignacin de frecuencias), infor-mtica (bases de datos y sistemas de recuperacin de la informacin, lenguaje natural,planificacin, etc.), en problemas de diseo y configuracin, empaquetamiento, etc.En [Wallace, 1995] pueden verse algunas de las tcnicas asociadas a estas aplicaciones.

    La resolu