You are on page 1of 40

9.

Tcnicas Basadas en Bsquedas Heursticas


En el captulo anterior hemos visto cmo las tcnicas de bsqueda se pueden aplicar para la resolucin de problemas. El procedimiento consiste simplemente en describir un espacio de bsqueda y luego elegir una estrategia para recorrer este espacio en busca de soluciones. El problema de utilizar una estrategia de bsqueda no informada, o bsqueda a ciegas, es que al realizar una bsqueda sistemtica sin ningn tipo de informacin que le permita discernir las regiones ms prometedoras, de aquellas que lo son menos, es que el tiempo necesario para encontrar una solucin puede llegar a ser prohibitivo. La alternativa es disponer de algn mecanismo que permita dirigir la bsqueda hacia las zonas ms prometedoras, de modo que podamos llegar a una solucin sin necesidad de visitar tantos nodos como los que en general requiere una estrategia de bsqueda a ciegas. En el mbito de la Inteligencia Artificial, a estos mecanismos se les denomina de forma genrica heursticos o heursticas. La palabra heurstico procede de la palabra griega heuriskein, que significa descubrir, al igual que la palabra eureka que pronunci Arqumedes en su bao justo despus de descubrir el famoso principio que lleva su nombre. Los heursticos son criterios, reglas o mtodos que ayudan a decidir cul es la mejor alternativa entre varias posibles para alcanzar un determinado objetivo. Para ello, deben disponer de informacin, o mejor an, de conocimiento sobre el problema que se intenta resolver. Este conocimiento se puede obtener a partir de cualquier pista, intuicin o experiencia que se tenga sobre el dominio del problema. En el contexto de los sistemas de bsqueda, los heursticos se suelen utilizar para decidir cul de los nodos candidatos a ser expandidos es ms prometedor, o bien en qu orden se deben aplicar las reglas a un nodo para generar sucesores, o incluso para decidir si un nodo es un callejn sin salida an teniendo sucesores vlidos. De este modo, lo que se espera del uso del conocimiento en la bsqueda es que el nmero de nodos examinados para llegar a una solucin se reduzca notablemente con respecto a una bsqueda sin conocimiento. Pero el uso de conocimiento introduce, como es lgico, un nuevo factor de coste en la bsqueda, ya que tenemos que evaluar las alternativas en funcin del conocimiento disponible. En consecuencia, debemos llegar a una situacin de compromiso, como la que se muestra en la Figura 1, para explotar el conocimiento de forma que se optimice el coste total de la bsqueda. Si explotamos de forma exhaustiva el conocimiento, podremos visitar un nmero muy reducido de nodos para llegar a una solucin, pero el coste de gestin del conocimiento puede ser demasiado grande, de modo que el coste total de la bsqueda sea excesivo, tal y como muestra la parte derecha de la grfica de la Figura 1. En el caso contrario, si utilizamos poco, o ningn conocimiento, podemos tener un coste muy elevado debido a la aplicacin de las reglas, y estaramos en la parte derecha de la grfica. El objetivo aqu ser, por supuesto, situarnos en la parte central de la grfica, en dnde se utiliza la cantidad de conocimiento apropiada para obtener el mnimo coste en el proceso de bsqueda. Lgicamente, este punto intermedio no siempre es fcil de localizar. Dado que los heursticos se basan en el uso de conocimiento a veces impreciso o incierto, es natural que en muchas ocasiones fallen en la prediccin de la mejor alternativa. Un buen heurstico es capaz de tomar una buena decisin, no necesariamente la mejor, en un alto porcentaje de ocasiones. En consecuencia, el resultado de un buen heurstico es que el tiempo medio para llegar a una solucin

Tcnicas Basadas en Bsquedas Heursticas 1/40

mejore notablemente, aunque en el peor de los casos el tiempo puede ser igual que el de una bsqueda a ciegas.

Coste total de la bsqueda

Coste del control

Coste de aplicacin de reglas Nula ptima Completa

Cantidad de Conocimiento

Figura 1. Representacin del coste total de la bsqueda frente al grado de conocimiento utilizado

El trmino heurstico se utiliza muchas veces en contraposicin con el trmino algortmico, para hacer referencia a procedimientos que no garantizan la calidad de la solucin, ni en ocasiones la completud. Sin embargo, tambin hay algoritmos exactos, en los que la bsqueda se gua mediante heursticos. Para ilustrar cmo se puede utilizar el conocimiento en la bsqueda, y en particular para diferenciar lo que suele ser el conocimiento bsico del problema, que nos permite definir el espacio de bsqueda, del conocimiento ms sofisticado que nos permite guiar la bsqueda en una buena direccin, vamos a ver un ejemplo. Se trata del conocido problema de la lechera, que con algunas diferencias de interpretacin ha aparecido tambin en otros contextos. El problema de la lechera Se dispone de dos medidores de lquidos; uno de 5 litros y el otro de 7. Inicialmente ambos estn vacos y, en cualquier momento pueden ser llenados o vaciados usando un depsito con suficiente capacidad. El lquido se trata, evidentemente, de leche y tambin puede ser traspasado de uno a otro medidor hasta que el primero se vace o hasta que el segundo se llene. El problema consiste en encontrar la secuencia de acciones que se deben seguir para que en el mayor de los medidores se disponga exactamente de 4 litros. Dado que el depsito tiene una cantidad de leche suficiente, lo relevante de los estados ser la situacin de los dos medidores. As un estado vendr dado por el valor de un par de variables (x,y) con 0x7 y 0y5. El estado inicial ser (0,0) y los estados objetivo sern de la forma (4,y) con 0y5. Teniendo en cuenta los movimientos posibles de leche entre los medidores y entre stos y el depsito, los operadores pueden ser los siguientes, los 4 primeros se pueden aplicar de forma incondicional a cualquier estado, mientras que los 4 siguientes son aplicables si se cumplen los prerrequisitos que se indican en cada caso: 1. Llenar el mayor: [(x,y) (7,y)] 2. Llenar el menor: [(x,y) (x,5)]

Tcnicas Basadas en Bsquedas Heursticas 2/40

3. Vaciar el mayor: [(x,y) (0,y)] 4. Vaciar el menor: [(x,y) (x,0)] 5. Transferir del mayor al menor hasta que el primero se vace: Prerrequisitos: (x+y < 5) [(x,y) (0,x+y)] 6. Transferir del menor al mayor hasta que el primero se vace: Prerrequisitos: (x+y < 7) [(x,y) (x+y,0)] 7. Transferir del menor al mayor hasta que se llene el mayor: Prerrequisitos: (x+y > 7) [(x,y) (7,x+y-7)] 8. Transferir del mayor al menor hasta que se llene el menor: Prerrequisitos: (x+y > 5) [(x,y) (x+y-5,5)] Es claro que una aplicacin sistemtica de estas reglas debera encontrar la solucin (si existe) a los problemas que la lechera pueda encontrar ya que, de hecho, estas son todas las acciones permitidas en este entorno. No obstante, es seguro que no son contempladas todas ellas de la misma forma por una experimentada lechera al tratar de resolver el problema de medir 4 litros; sino que su experiencia le dictar algn modo de manejarlas que no ser usando un algoritmo de bsqueda a ciegas. Adems, es posible que la experta lechera sea incapaz de transmitirlas con precisin a otro interlocutor, como por ejemplo un programador que intenta disear un sistema de bsqueda para resolver el problema. El anlisis del comportamiento de la lechera con el fin de explicitar su conocimiento para poder incorporarlo en un heurstico es una tarea de ingeniera del conocimiento que en este caso podra dar lugar a otro conjunto de reglas sobre como aplicar de forma ordenada las reglas anteriores. A este tipo de reglas sobre como utilizar las reglas se le suelen llamar meta-reglas y en este caso (obtencin de 4 litros en el mayor medidor) se pueden sintetizar as: *1*. Siempre que el mayor est vaco, llenarlo: Prerrequisitos: ( x = 0 ) [Aplicar la regla 1] *2*. Siempre que el pequeo est lleno, vaciarlo: Prerrequisitos: ( y = 5 ) [Aplicar la regla 4] *3*. En otros casos, transferir toda la leche que se pueda del mayor al menor: Prerrequisitos: (( x = 0 ) ( y = 5)) [Si es posible aplicar la regla 8 sino aplicar la regla 5]

Tcnicas Basadas en Bsquedas Heursticas 3/40

El problema consiste en saber si siguiendo estas meta-reglas se obtiene una solucin, si existe alguna; es decir, si constituyen un sistema completo. En este caso se puede probar que el sistema de meta-reglas es completo; pero otras veces, por supuesto, se trata de un problema no trivial. En este captulo veremos una variedad de algoritmos de bsqueda, muchos de los cuales son generalizaciones de los algoritmos de bsqueda a ciegas del captulo anterior, que permiten incorporar conocimiento sobre el problema. Analizaremos las propiedades de estos algoritmos y veremos cmo aplicarlos a problemas concretos. Para ello hemos elegido problemas formales, fciles de enunciar y suficientemente complejos de resolver de modo que se pueda apreciar con claridad la eficiencia que proporciona el uso de conocimiento en la bsqueda de soluciones.

9.1. Bsqueda Primero el Mejor


El algoritmo de bsqueda primero el mejor, o BF (Best First), es una especializacin del algoritmo general de bsqueda en grafos en el que se utiliza una funcin de evaluacin de los nodos, f, tal que para cada nodo n, f(n) nos da un valor numrico que indica medida de lo prometedor que es el nodo para ser expandido. Esta funcin se utiliza para ordenar la lista ABIERTA de modo que aquellos nodos ms prometedores estarn al principio. La medida de lo prometedor que resulta un nodo para su expansin se puede estimar de varias formas. Por ejemplo, podemos tratar de medir la dificultad de resolver el subproblema que plantea el nodo, o bien podemos estimar la calidad de las soluciones que se pueden obtener a partir de ese nodo. En cualquier caso, al definir la funcin f para un nodo n podemos tener en cuenta la descripcin del propio estado n, toda la informacin acumulada durante la bsqueda, y lo que suele ser ms importante, cualquier tipo de informacin, pista o conocimiento que tengamos sobre el dominio del problema. Por esa razn, f se suele denominar funcin heurstica de evaluacin. Por ejemplo, en el problema de las N-reinas podemos definir la funcin f teniendo en cuenta el nmero de reinas que faltan por colocar y el nmero de posiciones no atacadas por las reinas ya colocadas. Este ltimo valor nos da una medida de lo difcil que resultar resolver el subproblema planteado por el nodo, ya que cuanto mayor sea el nmero de posiciones no atacadas, parece razonable estimar que ms fcil ser resolver el problema, o mayor ser la probabilidad de que a partir de este estado podamos llegar a una solucin. En el problema del 8-puzzle, podemos estimar lo prometedor que es un estado en funcin de lo que se parece al estado objetivo, por ejemplo en funcin de lo prximas que estn las fichas a la posicin que tienen que ocupar en el objetivo. Es evidente que en los dos casos, la eleccin del nodo ms prometedor en cada iteracin no siempre nos va a llevar de forma directa a la mejor solucin, pero como veremos a lo largo de este captulo, este tipo de criterios heursticos nos van a permitir, en general, llegar a buenas soluciones expandiendo un nmero de estados mucho menor que si hacemos las elecciones de forma puramente aleatoria.

9.2. El Algoritmo A*
El algoritmo A* es a su vez una especializacin del algoritmo BF en el que la funcin de evaluacin f se define de una forma particular. Antes de ver esta definicin de f vamos a introducir algunos conceptos y notacin. Sea n un nodo cualquiera del espacio de bsqueda Definicin. g*(n) es el coste del camino ms corto, o de menor coste, desde el inicial a n.

Tcnicas Basadas en Bsquedas Heursticas 4/40

Definicin. h*(n) es el coste del camino ms corto desde n al objetivo ms cercano. Definicin. f*(n) = g*(n) + h*(n). Es decir es f*(n) es el coste del camino ms corto desde el inicial a los objetivos condicionado a pasar por el nodo n. Definicin. C* = f*(inicial) = h*(inicial). Es decir C* es el coste de la solucin ptima. Es evidente que si pudisemos determinar, con un mtodo eficiente, los valores de las funciones g* y h* para todos los nodos, tendramos un algoritmo de bsqueda muy eficiente que nos llevara de forma directa a la solucin ptima. La idea sera simplemente expandir siempre el nodo de menor f*, y en el caso de empate elegir un sucesor del ltimo nodo expandido. De esta forma solamente expandiramos nodos de un camino ptimo. Para todos estos nodos se cumple que f*(n) = C*, mientras que para aquellos nodos que no estn en un camino ptimo ocurre que f*(n) > C*. Luego f* es un discriminante perfecto. Obviamente, para problemas complejos, los valores de estas funciones no se pueden calcular en un tiempo razonable, con lo cual el mtodo de bsqueda anterior no es factible. Lo que s podemos hacer es trabajar con aproximaciones de las funciones g* y h*. Esto es precisamente lo que se hace en el algoritmo A*, en el que se utilizan las siguientes aproximaciones Definicin. g(n) es el coste del mejor camino desde el inicial a n obtenido hasta el momento durante la bsqueda. Definicin. h(n) es una estimacin positiva del valor de h*(n), tal que h(n) = 0, si n es un objetivo. De estas dos definiciones resulta obvio que g(n)g*(n) y h(n) 0. Por ltimo definimos la funcin f del algoritmo BF para obtener el algoritmo A* como Definicin. f(n) = g(n) + h(n). De este modo f es una estimacin de f* y se utiliza para ordenar ABIERTA de modo que siempre tendremos al principio de esta lista el nodo con menor valor de f. La funcin h se suele denominar funcin heurstica o simplemente heurstico. La definicin de esta funcin es un problema no trivial, y para ello tendremos que tener en cuenta todo tipo de informacin obtenida por mtodos ms o menos formales, como clculos estadsticos, o cualquier tipo de intuiciones o de conocimientos que suelen tener los expertos en la resolucin del problema. Como veremos, las propiedades de esta funcin condicionan totalmente el comportamiento del algoritmo A*.

9.2.1.

Descripcin del Algoritmo A*

El algoritmo A* es el mismo que el AGBG descrito en la Figura 10 del Captulo 7 con algunos cambios debidos a la forma de definir la funcin de evaluacin f. En la versin que se muestra en la Figura 1, se hace una ligera modificacin del contenido de la TABLA_A para registrar, para cada nodo n encontrado, el valor de g(n) que es lo mismo que Coste(inicial,n) del algoritmo general, y el valor de h(n). En esta descripcin se supone que el valor de h(n), una vez encontrado el nodo n, no cambia a lo largo del tiempo. Como la evaluacin de h tiene en general un coste no despreciable, aunque debe ser siempre polinomial, el valor de h(n) se calcula una sola vez para cada nodo n y se almacena este valor en la TABLA_A para su uso posterior.

Tcnicas Basadas en Bsquedas Heursticas 5/40

Algoritmo A*; comienzo ABIERTA = (inicial); mientras NoVacia(ABIERTA) hacer n = ExtraePrimero(ABIERTA); si (EsObjetivo(n)) entonces devolver Camino(inicial,n); finsi; S = Sucesores(n); Aadir S a la entrada de n en la TABLA_A; para cada q de S hacer si (qTABLA_A) Rectificar(q,n,Coste(n,q)); Ordenar(ABIERTA); sino poner q en la TABLA_A con Anterior(q) = n g(q) = g(n)+Coste(n,q) h(q) = Heuristico(q); ABIERTA = Mezcla(q,ABIERTA); finsi; finpara finmientras; devolver "no solucion"; fin.
Figura 2. Algoritmo A*

Funcion Rectificar (n, p, costepn); comienzo si (g(p) + costepn < g(n)) Modificar la entrada del nodo n en la TABLA_A con g(n) = g(p) + costepn; Anterior(n) = p; RectificarLista(n); finsi; fin. Funcion RectificarLista (n); comienzo LISTA = Sucesores(n); /* Registrados en la TABLA_A */ para cada q de LISTA hacer Rectificar(q,n,Coste(n,q)); finpara; fin.
Figura 3. Funciones de rectificacin de nodos ya expandidos

Tcnicas Basadas en Bsquedas Heursticas 6/40

9.2.2.

Propiedades Formales

En esta seccin vamos a estudiar las propiedades formales del algoritmo A* que, como ya hemos adelantado, dependen de la definicin de la funcin heurstica h. Consideraremos las propiedades de terminacin, completud, admisibilidad y eficiencia. El estudio formal del algoritmo A* se puede ver con ms nivel de detalle que el que se presenta aqu en los textos de N. J. Nilsson (Nilsson, 1971, 1980) y J. Pearl (Pearl, 1984). Para estudiar estas propiedades introducimos la siguiente notacin. En lo sucesivo, denotaremos por s al estado inicial y por al conjunto de nodos objetivo. * es el conjunto de objetivos ptimos. Pn-n denotar un camino simple desde el nodo n al nodo n, y P*n-n un camino ptimo desde n a n. Para describir a una situacin durante el proceso de bsqueda nos referiremos a los conjuntos de nodos encontrados, nodos expandidos y nodos aun no encontrados respectivamente. Los nodos encontrados son aquellos que ya tienen una entrada en la TABLA_A, los nodos expandidos son aquellos que fueron seleccionados para su expansin y que por lo tanto ya tienen registrados sus sucesores en el campo correspondiente de la TABLA_A. Y los nodos no encontrados son todos aquellos que aun no han aparecido durante la bsqueda. As, justo antes de la expansin de un nodo, tendremos siempre la siguiente relacin Nodos en ABIERTA Nodos Expandidos = Nodos Encontrados, donde la unin es disjunta, es decir que ABIERTA es una frontera entre los nodos ya expandidos y aquellos no encontrados todava durante la bsqueda. En consecuencia cualquier camino Pn-n, con n ya expandido y n no expandido aun, tiene necesariamente un nodo en ABIERTA. 9.2.2.1 Terminacin y Completud El algoritmo BF, descrito en la seccin 8.1, es completo en grafos finitos, ya que en el peor de los casos terminara despus de expandir todos los nodos. Esto es evidente porque el algoritmo expande un nodo en cada iteracin y ningn nodo se expande ms de una vez. Sin embargo el algoritmo BF puede no terminar en grafos infinitos, aunque sean localmente finitos, debido a que la definicin de la funcin f no garantiza que el algoritmo no se vaya por una rama infinita del espacio de bsqueda. Sin embargo esto no puede ocurrir en el algoritmo A*, debido a la definicin de f = g + h. La componente h siempre es positiva, y la componente g crece de forma no acotada a lo largo de cualquier camino con un nmero no finito de nodos, por lo que si la bsqueda se fuese a travs de un camino infinito, en algn momento el valor de f sera suficientemente grande para que el siguiente nodo a travs de ese camino no fuese el ms prometedor, y por lo tanto se considerara la bsqueda a travs de otros caminos. Por lo tanto podemos enunciar el siguiente resultado Teorema 1. A* es completo en grafos localmente finitos. 9.2.2.2 Admisibilidad del algoritmo A* En esta seccin veremos en qu condiciones el algoritmo A* es admisible, es decir que encuentra la solucin ptima. Como veremos, para que esto ocurra la funcin heurstica h debe ser una estimacin optimista del valor de h* para todos los nodos. Esto motiva la siguiente definicin Definicin. Una funcin heurstica h es admisible si h(n) h*(n) n

Tcnicas Basadas en Bsquedas Heursticas 7/40

A partir de aqu supondremos que la funcin h es admisible y trataremos de probar que el algoritmo A* que la utiliza es admisible. Como paso previo probaremos el siguiente resultado. Lema 1. Antes de que el algoritmo A* termine, existe un nodo n en ABIERTA tal que f(n) C*. Demostracin: Consideremos un camino P*s-, siendo *, es decir, un objetivo ptimo. Al ser un nodo no expandido, es evidente que existe al menos un nodo de P*s- en ABIERTA. Si hay varios nodos de P*s- en ABIERTA, sea n el que est ms prximo al nodo inicial s, es decir aquel para el cual todos sus antecesores en P*s- ya han sido expandidos. Al haber sido expandidos todos los nodos a travs de un camino ptimo desde s a n tendremos que g(n) = g*(n). Adems al ser h admisible y un nodo de un camino ptimo f(n) = g(n) + h(n) = g*(n) + h(n) g*(n) + h*(n) = f*(n) = C* Luego f(n) C*. A partir de este resultado se puede probar el siguiente teorema Teorema 2. A* es admisible. Demostracin: Ya hemos visto que A* es completo. Supongamos ahora que A* termina encontrando un objetivo t con f(t) = g(t) > C*. En el momento de ser elegido para expansin se cumpla que f(t) f(n) nABIERTA. Pero por el Lema 1 sabemos que antes de terminar siempre hay en ABIERTA un nodo n tal que f(n) C*. Luego en ese momento no es posible que se haya elegido el nodo t. Tenemos as una contradiccin con la suposicin de que f(t) > C*, por lo tanto dado que t tendremos que f(t) = C*. Como corolario de lo anterior tenemos probado que los algoritmos de primero en anchura y de coste uniforme son admisibles, ya que estos dos algoritmos son casos particulares del algoritmo A* con h(n) = 0 n. En consecuencia cabe preguntarse si estos algoritmos resultan ser iguales o no a otras versiones de A* con cualquier otro heurstico admisible. La respuesta es claramente que no es igual, tal y como probaremos en las dos secciones siguientes en las que veremos en qu condiciones un heurstico se puede considerar ms eficiente que otro, siendo ambos admisibles; y en qu condiciones se puede eliminar la operacin de rectificacin de nodos ya expandidos, y en consecuencia la necesidad de registrar el grafo expandido hasta el momento. 9.2.2.3 Comparacin de heursticos admisibles En esta seccin veremos cmo influye el heurstico en la eficiencia del algoritmo A*. Supondremos que disponemos de heursticos admisibles y probaremos en qu condiciones unos heursticos son ms eficientes que otros. Para ello supondremos que el coste de evaluacin de todas las funciones heursticas es similar. As el coste, en tiempo de ejecucin, de las distintas versiones del algoritmo A*, cuya nica diferencia es el heurstico, vendr dado por el nmero de nodos expandidos para llegar a una solucin. Consideremos la situacin que se muestra en la Figura 4 en la que tenemos dos heursticos admisibles h1 y h2, tales que h2(n)>h1(n) para todo nodo n no final. La intuicin sugiere que h2 contiene ms informacin que h1 ya que est ms prximo al heurstico h* que es el que contiene la informacin completa. Consecuentemente el algoritmo A* debera ser ms eficiente con h2 que con h1. Lo que se puede probar en este caso es que todo nodo expandido con el heurstico h2 ser expandido tambin con

Tcnicas Basadas en Bsquedas Heursticas 8/40

h1, lo que significa que en el peor de los casos el nmero de nodos expandidos es el mismo. Sin embargo, si existe algn nodo no final n tal que h2(n)h1(n) este resultado formal ya no es cierto. Para probar que todo nodo expandido por h2 tambin lo va a ser con h1 lo que tenemos que hacer es establecer condiciones necesaria y suficiente de expansin, luego probaremos que si un nodo n cumple la condicin necesaria de expansin con h2 entonces cumple la condicin suficiente con h1. Para formalizar un poco ms las ideas anteriores, damos las definiciones siguientes
h(n) h*(n)

h2(n)

h1(n) Nodos no finales


Figura 4. Dos heursticos admisibles con distinto grado de informacin

Definicin. Un heurstico h2 est ms informado que otro heurstico h1 si los dos son admisibles y h2(n)>h1(n) para todo nodo n no final. Diremos tambin que el algoritmo A2* que utiliza el heurstico h2 est ms informado que el algoritmo A1* que utiliza el heurstico h1. Definicin. Un algoritmo A2* domina a otro algoritmo A1* si los dos son admisibles y todo nodo expandido por A2* es tambin expandido por A1*. Vamos ahora con las condiciones necesaria y suficiente de expansin para heursticos admisibles. Sea h un heurstico admisible Teorema 3. Una condicin necesaria de expansin de un nodo n es que f(n)C* Demostracin: Es inmediata a partir del Lema 1, ya que si antes de terminar A* siempre hay en ABIERTA un nodo n tal que f(n)C*, todos los nodos expandidos deben cumplir esta condicin. Teorema 4. Una condicin suficiente de expansin de un nodo n es que f(n)<C*. Demostracin: Tambin es inmediata, en este caso a partir del Teorema 1. Como el valor de f de un nodo solamente puede disminuir durante la bsqueda como consecuencia de una rectificacin, cualquier nodo n con f(n)<C* debe ser expandido antes de que un objetivo t con f(t)=C* sea seleccionado para expansin. Las condiciones dadas por los teoremas 3 y 4 anteriores son dinmicas, es decir dependen de la evolucin del algoritmo A* ya que hacen referencia al valor de f que es g+h, y el valor de g es en realidad una variable del algoritmo que solamente est definida para los nodos encontrados. En consecuencia, del hecho de que un nodo n sea expandido con el heurstico h2, y que por lo tanto cumpla la condicin necesaria de expansin dada por g(n)+h2(n)C*, no podemos concluir que se cumple la condicin suficiente de expansin con h1, es decir g(n)+h1(n)<C*, ya que no podemos suponer que con el heurstico h1 el nodo n va a estar tambin en ABIERTA alguna vez y con el mismo valor de g que en el momento de su expansin con h2. No obstante, con ayuda de los dos teoremas anteriores vamos a probar otras dos condiciones de carcter esttico, es

Tcnicas Basadas en Bsquedas Heursticas 9/40

decir que se pueden evaluar con independencia de la ejecucin del algoritmo A*, nicamente a partir del espacio de bsqueda y del heurstico. La propiedad del espacio de bsqueda es la existencia de un camino C*-acotado que se define del siguiente modo Definicin. Un camino P desde el inicial s a un nodo n es C-acotado, si para todo n de P se cumple que gP(n)+h(n)C, y es estrictamente C-acotado si gP(n)+h(n)<C. Siendo gP(n) el coste desde s a n a travs del camino P. Teorema 5. Una condicin suficiente para que el algoritmo A* expanda un nodo n es que exista un camino estrictamente C*-acotado desde s a n. Demostracin: Supongamos que existe un camino P desde s a n estrictamtente C*acotado y que el algoritmo A* termina sin expandir n. Sea n el nodo de P que est en ABIERTA al terminar A* para el que todos sus antecesores a travs de P ya fueron expandidos, en este caso g(n) gP(n). Luego, como P es estrictamente C*-acotado f(n) = g(n)+h(n) gP(n)+h(n) < C* tenemos as una contradiccin ya que al terminar queda en ABIERTA el nodo n con f(n) < C*. Teorema 6. Una condicin necesaria de expansin de un nodo n es que exista un camino C*-acotado desde s a n. Demostracin: Sea P el mejor camino desde s a n registrado en la TABLA_A en el momento de la expansin de n. Como todos los nodos n de P ya han sido expandidos se tiene que g(n) = gP(n), y que f(n) C*, luego el camino P es C*-acotado ya que para todo n de P se cumple que f(n) = gP(n)+h(n) C*. Con la ayuda de estas dos condiciones estticas ya podemos probar el resultado que estamos buscando. Teorema 7. Si A2* est mas informado que A1*, entonces A2* domina a A1*. Demostracin: Si n es expandido por A2* entonces existe un camino P desde s a n C*acotado con h2, es decir, para todo n de P, gP(n)+h2(n) C*. Como h2(n) > h1(n), tenemos que gP(n)+h1(n) < C*. Luego el camino P es estrictamente C*-acotado con h1, con lo cual n ser expandido tambin por A1*. El hecho de que tenga que cumplirse que h2(n)>h1(n) para todo n no final en la prctica hace que este resultado sea de aplicacin bastante limitada. Como veremos en los ejemplos, hay bastantes situaciones en las que tenemos dos heursticos que cumplen esta relacin para la mayora de los estados no finales, pero hay unos pocos, normalmente estados muy prximos a los objetivos, para los que los dos heursticos toman el mismo valor. Esto es lo que ocurre por ejemplo con los heursticos h1 y h2 que se proponen para el problema del 8-puzzle en la Seccin 7.2.3.1; en general h2(n)>h1(n), sin embargo para los estados en los que solamente hay una ficha descolocada y que est a distancia 1 de su posicin en el objetivo se da la igualdad h2(n)=h1(n). En estas situaciones, lo que ocurre normalmente es que el heurstico h2 se comporta mucho mejor que el heurstico h1, y en general esta mejora es tanto mayor cuanto mayor sea la diferencia entre los dos heursticos en la mayora de los estados intermedios. 9.2.2.4 Heursticos Consistentes o Montonos En la seccin anterior hemos visto la forma de comparar dos heursticos admisibles a travs del nmero de nodos expandidos. Sin embargo, un nodo expandido puede sufrir muchas rectificaciones posteriores, lo que evidentemente condiciona la eficiencia del
Tcnicas Basadas en Bsquedas Heursticas 10/40

algoritmo A*. Como veremos, estas rectificaciones no sern necesarias si el heurstico cumple la propiedad de consistencia o monotona, que se definen del siguiente modo y que como tambin veremos inmediatamente se trata de propiedades equivalentes. Definicin. Un heurstico h es montono si para todo par de nodos n y n se cumple que h(n) k(n,n) + h(n) donde k(n,n) representa el coste mnimo para ir de n a n, y por lo tanto es infinito si no hay un camino desde n a n. Definicin. Un heurstico h es consistente si para todo par de nodos n y n se cumple que h(n) c(n,n) + h(n) donde c(n,n) representa el coste de la regla que lleva de n a n, y por lo tanto es infinito si no existe esta regla. Es fcil ver que tanto h* como el heurstico trivial h(n) = 0, para todo nodo n, cumplen las dos propiedades anteriores. Aunque en principio la monotona parece menos restrictiva que la consistencia, en realidad se trata de propiedades equivalentes, como prueba el siguiente teorema. Teorema 8. Monotona y Consistencia son propiedades equivalentes. Demostracin: El hecho de que la monotona implica consistencia es inmediato dado que k(n,n) c(n,n). Para probar que la consistencia implica monotona hay que hacer un razonamiento por induccin en la profundidad de los sucesores de n, a travs del camino ms corto hasta n. Sea este camino P*n-n = (n,n1,,ni,ni+1,,n). Para el par de nodos (n,n1) se cumple la condicin de monotona ya que c(n,n1) = k(n,n1) por ser P*n-n ptimo. Supongamos que tambin se cumple esta propiedad para los nodos (n,ni), es decir que h(n) k(n,ni) + h(ni). Dado que h(ni) c(ni,ni+1) + h(ni+1) por ser h consistente, y que k(ni,ni+1) = c(ni,ni+1) por ser P*n-n ptimo, tenemos h(n) k(n,ni) + h(ni) k(n,ni) + c(ni,ni+1) + h(ni+1) = k(n,ni) + k(ni,ni+1) + h(ni+1) = k(n,ni+1) + h(ni+1). Puesto que el nodo ni+1 puede ser cualquiera de (n1,n) tendremos que h(n) k(n,n) + h(n), luego h es montono. Una de las consecuencias de la monotona o consistencia es la admisibilidad Teorema 9. Todo heurstico montono es admisible. Demostracin: Sea n un nodo cualquiera y el objetivo ms prximo a n, si h es montono tenemos que h(n) k(n, ) + h() como h()=0 y k(n, ) = h*(n) tenemos que h(n) h*(n). Luego h es admisible. La implicacin inversa no es cierta, es decir monotona y admisibilidad no son propiedades equivalentes. Aunque en la prctica no es fcil encontrar heursticos admisibles que no sean a la vez montonos. El uso de heursticos montonos tiene otras ventajas que ya hemos adelantado. La primera de ellas es consecuencia del siguiente teorema.

Tcnicas Basadas en Bsquedas Heursticas 11/40

Teorema 10. Si h es montono y A* elige el nodo n para expansin, entonces se cumple que g(n) = g*(n). Es decir que el camino encontrado hasta el momento desde el inicial s a n es ptimo. Demostracin: Supongamos que A* elige n para expansin con g(n) > g*(n). Sea P*s-n un camino ptimo de s a n. Si n es el nico nodo de P*s-n en ABIERTA, esta situacin sera contradictoria, ya que tendramos explorados todos los nodos a travs de un camino ptimo con lo que tendra que ser g(n) = g*(n). Luego tiene que haber otro nodo de P*s-n en ABIERTA. Sea n el nodo de P*s-n en ABIERTA ms prximo a n; para este nodo tendremos que g(n) = g*(n), y por ser h montono f(n) = g*(n) + h(n) g*(n) + k(n,n) + h(n) como P*s-n es ptimo, g*(n) + k(n,n) = g*(n) y dado que g(n) > g*(n) tendremos f(n) g*(n) + h(n) < g(n) + h(n) = f(n) Es decir que se eligi un nodo n para expansin cuando en ABIERTA haba un nodo n con f(n) < f(n), lo cual es una contradiccin, ya que A* siempre elige el nodo con menor f. Luego no puede ser g(n) > g*(n) y por lo tanto g(n) = g*(n). De acuerdo con el Teorema 10, si el heurstico es montono no es necesario rectificar el camino desde el inicial para los nodos que ya fueron expandidos, con lo cual tampoco es necesario registrar el grafo de bsqueda desarrollado hasta el momento en el campo correspondiente a los sucesores de la TABLA_A, ya que los nicos nodos que pueden sufrir rectificaciones son los que se encuentran en ABIERTA, por lo que la operacin RectificarLista nunca se aplica. Con lo que el algoritmo A* es ms eficiente. Adems, como veremos a continuacin, en el caso de que se produzca la igualdad de los dos heursticos para algunos nodos, es decir que h2(n)h1(n) para todo n, si los heursticos son montonos, se puede acotar el nmero de nodos que pueden ser expandidos por h2 y no por h1. Vamos a ver en primer lugar cmo quedan las condiciones, necesaria y suficiente, de expansin. Estas condiciones se simplifican con respecto a las condiciones de los heursticos admisibles, ya que solamente requieren evaluar una condicin simple sobre el nodo n y no sobre un camino desde s a n. Teorema 11. Si h es montono, la condicin necesaria de expansin de un nodo n es g*(n) + h(n) C* y la condicin suficiente g*(n) + h(n) < C* Demostracin: La condicin necesaria se prueba de forma simple a partir de los teoremas 3 y 10. Si n se expande entonces f(n) = g(n) + h(n) C*, como g(n) = g*(n) en el momento de la expansin, tenemos que g*(n) + h(n) C*. Para probar la condicin suficiente se utiliza el Teorema 5. La idea es demostrar que cualquier camino ptimo desde s a n es estrictamente C*-acotado. Sea P*s-n un camino ptimo de s a n. Si g*(n) + h(n) < C* y n es el anterior a n en P*s-n, por ser P*s-n ptimo g*(n) + c(n,n) = g*(n) y por ser h montono h(n) c(n,n) + h(n), en consecuencia tenemos que g*(n) + h(n) < C*. Reiterando este razonamiento para el nodo anterior a n y as sucesivamente vemos que todos los nodos de P*s-n cumplen esta condicin, con lo que P*s-n es estrictamente C*-acotado y por lo tanto el nodo n ser expandido.

Tcnicas Basadas en Bsquedas Heursticas 12/40

A partir de la condicin suficiente de expansin, g*(n) + h(n) < C*, podemos ver que cuanto mejor informado sea el heurstico h, menor ser el nmero de nodos que cumplen la condicin, en consecuencia cabe esperar que el nmero de nodos expandidos sea menor. Las condiciones tienen tambin una implicacin importante en el comportamiento de la regla de desempate entre los nodos con el mismo valor de f en ABIERTA. Si consideramos diferentes versiones de A*, todas utilizando la misma funcin heurstica, y que se diferencian nicamente en la regla de desempate, los nodos que pueden ser expandidos por una versin y no por otra son aquellos que cumplen g*(n) + h(n) = C*, que al estar en abierta tendrn f(n) = C*. El algoritmo A* expandir todos los nodos que cumplan g*(n) + h(n) < C*, alguno de los que cumplen g*(n) + h(n) = C*, y por supuesto ninguno de los que cumplen g*(n) + h(n) > C*. Se puede probar que cualquier algoritmo admisible que utilice la misma informacin h, tiene que expandir todos los nodos tales que g*(n) + h(n) < C* para asegurar la optimalidad de la solucin, por esa razn el algoritmo A* cuando h es montono domina ampliamente a cualquier algoritmo admisible que utilice la misma informacin heurstica. La prueba formal de este resultado se puede ver en (Dechther, R. y J. Pearl, 1985) Adems, estas dos condiciones permiten establecer lo que se llama una comparacin no estricta entre dos algoritmos A1* y A2* que utilizan heursticos montonos h1 y h2 respectivamente, tales que h2(n)h1(n) para todo nodo n, es decir que no cumplen la desigualdad estricta para todos los nodos no finales. Para ello damos la siguiente definicin Definicin. Un algoritmo A2* domina ampliamente a otro algoritmo A1* si todo nodo expandido por A2* es tambin expandido por A1*, excepto, quizs, algunos nodos para los cuales se cumple h1(n) = h2(n) = C* - g*(n). Teorema 12. Si h2(n) h1(n) para todo n y los dos son montonos, entonces A2* domina ampliamente a A1*. Demostracin: Si un nodo n es expandido por A2* y no por A1*, entonces g*(n) + h2(n) C* y g*(n) + h1(n) C*. Como h2(n) h1(n), tenemos que h2(n) = h1(n) = C* - g*(n). Este resultado permite tener un cierto grado de confianza en que el heurstico h2 es ms eficiente que el heurstico h1, ya que para que un nodo sea expandido por h2 y no por h1, tienen que producirse dos igualdades, lo que en trminos estadsticos puede considerarse un suceso poco probable, especialmente si los heursticos toman valores reales.

9.2.3.

Resolucin de problemas con el algoritmo A*

En esta seccin veremos cmo aplicar el algoritmo A* a una serie de problemas clsicos con distintas caractersticas. En principio se trata de seguir los pasos descritos en el captulo anterior, es decir describir el espacio de bsqueda, y luego, lo que ser ms importante aqu, definir funciones heursticas, a ser posible admisibles y montonas, lo mejor informadas posible. En principio disearemos los heursticos siguiendo criterios intuitivos en cada uno de los problemas. En la seccin 7.2.5 veremos cmo este proceso se puede hacer, en muchos casos, de una forma ms sistemtica. 9.2.3.1 El problema del 8-puzzle El problema del 8-puzzle ya ha sido formulado como un problema de bsqueda en espacios de estados en el captulo anterior (Seccin 8.4.2). Aqu nos centraremos en el diseo de heursticos. En este caso, para estimar el coste de resolver el subproblema

Tcnicas Basadas en Bsquedas Heursticas 13/40

planteado por un estado n, podemos tener en cuenta la diferencia entre n y el objetivo que se desea alcanzar que es un estado conocido, como muestra la Figura 4. Una primera idea puede ser simplemente contar el nmero que fichas que en el estado n no estn en la posicin que les corresponde en el objetivo. Tenemos as el primer heurstico definido como h1(n) = nmero de fichas que en el estado n estn fuera de su posicin en el objetivo Es claro que este heurstico es admisible, ya que cualquier ficha que est descolocada debe ser movida al menos una vez para alcanzar la posicin que le corresponde en el objetivo. Tambin es claro que, salvo para estados que estn muy prximos al objetivo, este heurstico es una estimacin muy optimista del coste que representa el estado n; es decir que se trata de un heurstico muy poco informado. El valor de este heurstico para los tres sucesores del estado inicial del ejemplo de la Figura 4 es el siguiente h1(n1) = 3, h1(n2) = 2, h1(n3) = 4.

inicial 2 3 1 8 4 7 6 5

objetivo 1 2 3 8 4 7 6 5

2 8 3 1 4 7 6 5 n1

2 3 1 8 4 7 6 5 n2

2 3 1 8 4 7 6 5 n3

Figura 5. Un estado inicial, sus sucesores n1, n2 y n3, y el objetivo para una instancia del problema del 8-puzzle

Siguiendo la misma idea, podemos afinar un poco ms y tener en cuenta las distancias de las fichas a su posicin en el objetivo y definir otro heurstico como h2(n) = suma de las distancias ortogonales de cada ficha a su posicin en el objetivo Tambin se trata de un heurstico admisible ya que cada ficha se debe mover al menos tantas veces como indica su distancia a la situacin que le corresponde en el objetivo. Adems es una estimacin menos optimista que la anterior, por lo que el heurstico h2 resulta ser ms informado que el heurstico h1. Concretamente se cumple que h2(n)h1(n) para todo nodo n. La igualdad se da para los estados cuyas fichas descolocadas estn a una distancia 1 de su posicin en el objetivo. Para los tres nodos anteriores el heurstico h2 toma los siguientes valores h2(n1) = 4, h2(n2) = 2, h2(n3) = 4. Asimismo, es fcil probar que los dos heursticos, h1 y h2, son montonos. Para mostrar que se pueden definir heursticos admisibles pero no montonos, consideremos el siguiente, cuya definicin es claramente poco natural

Tcnicas Basadas en Bsquedas Heursticas 14/40

h3(n) = 2 nmero de fichas que estn a una distancia ortogonal 2 de su posicin en el objetivo Se trata de un heurstico admisible, menos informado que h1, y no montono. Para probar esto ltimo basta con encontrar un ejemplo en el que no se cumple la desigualdad triangular. 9.2.3.2 El problema de las N-reinas Este problema tambin ha sido formulado en el captulo anterior y presenta algunas caractersticas por las que otros mtodos de bsqueda resultan ms eficientes que la bsqueda heurstica en espacios de estados. Concretamente todas las soluciones tienen el mismo coste y estn a la misma profundidad N. Por lo que el valor h*(n) para un estado en el que ya se han colocado k reinas, 0kN, es o bien N-k si desde n se puede alcanzar una solucin, o bien infinito si desde n no se alcanza ninguna solucin, y obviamente el clculo exacto no es trivial. Una primera consecuencia es que disponer de un heurstico admisible no tiene mucha trascendencia en este caso, ya que todas las soluciones son ptimas. Sin embargo, lo que se puede hacer es buscar un heurstico que gue la bsqueda hacia estados desde los que se puede alcanzar un objetivo con una alta probabilidad, para ello el heurstico puede tratar de estimar la probabilidad de que desde un estado se pueda alcanzar un objetivo; para lo cual la funcin heurstica h(n) debera retornar un valor pequeo si se estima que desde el estado n es probable que se alcance un objetivo, y un valor alto en caso contrario. Esta probabilidad se puede estimar de forma sencilla en funcin del nmero de casillas no atacadas que hay en el estado; sea este nmero na(n). As la probabilidad, Ps(n), de que a partir de un estado n se pueda alcanzar una solucin la podemos estimar como Ps(n) = na(n) / (N(N-k)), si k < N, y Ps(n) = 1, si k=N Y definir, en principio el heurstico como h(n) = 1- Ps(n). Adems para equilibrar los valores de g y h (obsrvese que g(n)=k), podemos ponderar el valor de h con el nmero de reinas que faltan por colocar, N-k, y as tendremos finalmente h(n) = (N-k)(1- Ps(n)). 9.2.3.3 El problema del Viajante de Comercio Este problema ya ha sido comentado tambin en el captulo anterior (vase la seccin 8.1.2 y el ejercicio 8.6.5). En este caso los estados vienen dados por secuencias de ciudades visitadas; el estado inicial incluye solamente a la ciudad de partida, A, y los estados objetivos vienen dados por una secuencia formada por la ciudad A, seguida de una permutacin del resto de las ciudades. Para pasar de un estado a un sucesor, se aade una ciudad no visitada an, y el coste correspondiente es el coste de ir de la ltima ciudad visitada en el estado actual, a la ciudad nueva. En el caso de que el nuevo estado sea un objetivo, hay que aadir al coste de la regla el coste para ir desde la ciudad aadida hasta la ciudad de partida A. La Figura 6 muestra el grafo de conexiones para la instancia del problema TSP del ejercicio 8.6.5, y la Figura 7 una parte del espacio de bsqueda para esta instancia. El coste del objetivo (A C B E F G) es 12 + 7 + 32 + 17 +39 + 92 = 199.

Tcnicas Basadas en Bsquedas Heursticas 15/40

A
113 9 15

21

B
32 7 25 12

92

F
39 17

20 18 5

180

Figura 6. Grafo de conexiones para una instancia del problema TSP

21 (A) 12

(A B) (A C) ..... 7

..... (A C B) . . . . . (A C B E F) 39+92 (A C B E F G)

Figura 7. Espacio de bsqueda para la instancia del problema TSP de la Figura 6

Para definir heursticos, tenemos que estimar el coste de ir desde la ltima ciudad del estado a la ciudad de partida, pasando una y solo una vez por cada una de las ciudades no visitadas, es decir las que no estn incluidas en la secuencia de ciudades del estado. Para realizar estas estimaciones de forma optimista podemos razonar del siguiente modo. Si N es el nmero de ciudades del problema, y un estado n no objetivo contiene una secuencia de k ciudades, 1kN, para llegar a una solucin desde n tendremos que recorrer un nmero de N-k+1 arcos. Luego se puede obtener una estimacin optimista del coste de resolver n suponiendo que todos estos arcos tienen un coste igual al coste del arco mnimo de entre aquellos arcos no incluidos en la solucin parcial que representa el estado n y que adems no tocan a las ciudades intermedias. Obtenemos as el heurstico definido como h1(n) = (N-k+1) coste del arco mnimo no incluido en n y que no toca a las ciudades intermedias de n. Por ejemplo, el valor de este heurstico para los estados n1 = (A), n2 = (A B) y n3 = (A C B) del ejemplo de la Figura 5 es el siguiente h1(n1) = 6 5 = 30, h1(n2) = 5 5 = 25, h1(n3) = 4 9 = 32. Es claramente un heurstico admisible, y tambin se puede probar que es montono. Esto lo dejamos de momento como un ejercicio. Al igual que en el problema del 8puzzle, se puede afinar un poco ms en el razonamiento, y definir otro heurstico un poco mejor informado como h2(n) = Suma de los coste de los (N-k+1) arcos de coste mnimo no incluidos en n y que no tocan a las ciudades intermedias de n. En este caso para los nodos anteriores los valores sern

Tcnicas Basadas en Bsquedas Heursticas 16/40

h2(n1) = 5+7+9+12+15+18= 66, h2(n2) =5+7+9+12+15= 48, h2(n3) =9+15+21+25 = 70. Tambin podemos definir un heurstico que intuitivamente aproximar mejor que los anteriores el valor de h* como h3(n) = (N-k+1) coste medio de los arcos no incluidos en n y que no tocan a las ciudades intermedias de n. Aunque esta parezca, en general, una estimacin muy razonable claramente se trata de un heurstico no admisible. Se pueden utilizar otros criterios de razonamiento como el hecho de que para llegar de un estado n a una solucin tendremos que abandonar la ltima ciudad del estado, as como todas las no visitadas; o bien que tendremos que llegar a todas las no visitadas y de nuevo a la ciudad de partida. La definicin de los heursticos correspondientes queda como ejercicio. 9.2.3.4 El problema de secuenciamiento de tareas con cabezas y prioridades Para este problema, se puede hacer una estimacin optimista del coste de resolver el subproblema planteado por un nodo n si consideramos que todas las tareas que quedan por planificar tienen una prioridad igual a la prioridad mnima de todas ellas y tambin una duracin igual a la duracin mnima de todas ellas; y adems consideramos que se planifican en el orden dado por sus cabezas. En el ejemplo de la seccin 8.4.3, en concreto para los estados n1 = (t1) y n2 = (t1 t2) de la Figura 19 del captulo 8, el valor de este heurstico es h(n1) = (12 + 17 + 21) 2 = 100, h(n2) = (18 + 23) 2 = 82. El coste ptimo de cada nodo es claramente mayor que el valor del heurstico para el nodo, ya que en la solucin ptima la suma de los tiempos de finalizacin de las tareas es mayor que la estimacin que se hace en el heurstico y adems cada uno de estos tiempos aparece multiplicado por un valor mayor o igual que la prioridad mnima de las tareas. Luego h es admisible.

9.2.4.

Relajacin de las condiciones de optimalidad

En las secciones anteriores hemos visto en qu condiciones el algoritmo A* es capaz de encontrar soluciones ptimas. Dado que los problemas que se pretenden resolver con este algoritmo son muy complejos, en la prctica los heursticos que se pueden disear, con un tiempo de evaluacin aceptable, distan mucho de h* para la mayora de los nodos del espacio de bsqueda, por lo que la cantidad de nodos que es necesario expandir (al menos aquellos que cumplen la condicin suficiente de expansin) es muy grande. Lo que se traduce, frecuentemente, en una necesidad de recursos computacionales (tiempo de bsqueda y espacio de almacenamiento) inaceptables. Tal y como apunta Pearl (Pearl, J. 1984, p. 86), la experiencia muestra que en muchos problemas A* pasa demasiado tiempo discriminando entre caminos cuyos costes no varan significativamente. En estos casos la admisibilidad es realmente un inconveniente ms que una virtud, ya que fuerza al algoritmo a gastar un tiempo desproporcionado para seleccionar el mejor entre un conjunto de candidatos prcticamente iguales y no permite que la bsqueda termine encontrando una solucin aceptable, aunque no sea ptima.

Tcnicas Basadas en Bsquedas Heursticas 17/40

Lo que nos planteamos ahora es la posibilidad de hacer que el algoritmo A* sea ms eficiente, aunque para ello sea preciso perder la admisibilidad. Esto es lo que hay que hacer en la prctica con la mayora de los problemas que se resuelven con tcnicas de inteligencia artificial. 9.2.4.1 Ajuste de los pesos de g y h La estrategia de bsqueda de A* est basada en la ecuacin f = g + h. En ella, el sumando g trata de ajustar el algoritmo a una estrategia de bsqueda en anchura de costo uniforme, lo que garantiza encontrar soluciones ptimas. Por el contrario, el sumando h trata de acercar la bsqueda directamente hacia la solucin sin que, necesariamente, se expandan todos los nodos que disten igual del inicial. Una variante de este planteamiento sera efectuar una ponderacin de ambas cantidades, es decir, considerar una funcin fw de la forma: fw(n) = (1-w) g(n) + w h(n), w [0,1]. Claramente, w = 0, y 1 corresponden a las estrategias de coste uniforme, A* convencional y BF (con f=h) respectivamente. Si h es admisible, es fcil probar que el algoritmo es admisible en el intervalo 0w, pero se puede perder esta propiedad en el intervalo <w1, dependiendo de lo lejana que est h de h*. El problema de este tipo de ponderacin (que llamaremos esttica, pues el peso w no vara a lo largo del proceso), es la gran dificultad que presenta encontrar, a priori, un valor adecuado para w. En la prctica se suele encontrar el mejor valor de forma experimental. Por ejemplo, algunos resultados experimentales con el problema del 15puzzle (Pearl, J. 1984, p. 87) muestran que la mayor eficiencia se encuentra en el intervalo <w<1. Sin embargo para el problema del 8-puzzle, lo mejor es w=, mientras que si se aumenta el valor, se obtiene un nmero mucho mayor de nodos expandidos. 9.2.4.2 Algoritmos -admisibles Esta familia de algoritmos sacrifica la obtencin de una solucin ptima frente a la ventaja de obtener alguna mejora en el rendimiento del proceso, pero controlando el deterioro de la solucin obtenida a travs de un factor que representa la distancia mxima al coste ptimo. Definicin. Un algoritmo de bsqueda es -admisible si siempre encuentra una solucin con un coste que no excede el valor (1+)C* (a una solucin de este tipo la denominaremos solucin -ptima). En esta seccin veremos las dos versiones ms conocidas de este tipo de algoritmos: la ponderacin dinmica y el algoritmo A. Ponderacin Dinmica Esta estrategia se debe a Pohl (Pohl, I. 1973). En lugar de fijar unos pesos estticos, stos se cambian de manera dinmica a lo largo del proceso de bsqueda. La idea es proporcionar al sumando h un mayor peso al principio de la bsqueda hasta que se est en las proximidades de la solucin, en donde se reduce este peso para asegurar una bsqueda en anchura que afine lo ms posible la solucin. La funcin de evaluacin que se utiliza con este mtodo es f(n) = g(n) + h(n) + [1-d(n)/N] h(n)

Tcnicas Basadas en Bsquedas Heursticas 18/40

donde d(n) es la profundidad del nodo n y N es una cota superior de la profundidad de la mejor solucin. El nmero > 0 indica la desviacin que estamos dispuestos a admitir. No es difcil probar que si el heurstico es admisible, entonces el algoritmo es admisible. Teorema 13. Si el heurstico h es admisible, el algoritmo de ponderacin dinmica es admisible. Demostracin: Hemos de probar que si el problema tiene solucin el algoritmo de ponderacin dinmica devuelve una cuyo costo no excede (1 + )C*. En primer lugar debemos probar que el algoritmo termina, lo cual es simple mediante un razonamiento similar al utilizado con el A* normal (Teorema 1). Para ver que el algoritmo termina con una solucin -ptima probaremos que una condicin necesaria de expansin de un nodo n es que f(n) (1+)C*. El razonamiento es anlogo al utilizado en el Lema 1. Si P es un camino ptimo del inicial a los objetivos, entonces antes de terminar siempre hay en ABIERTA un nodo n de P tal que todos sus antecesores a travs de P ya fueron expandidos y por lo tanto g(n) = g*(n). Luego para el nodo n tendremos que f(n) = g*(n) + h(n) + [1-d(n)/N] h(n) g*(n) + h*(n) + [1-d(n)/N] h*(n) = C* + [1-d(n)/N] h*(n) C* + h*(n) (1 + ) C*. Luego siempre hay en ABIERTA un nodo n con f(n) (1 + ) C* antes de terminar, por lo que todo nodo expandido debe tener un valor de f menor o igual que (1 + ) C*. En particular si se elige un objetivo t para expansin debe ocurrir que f(t) = g(t) + h(t) = g(t) (1 + ) C* Algoritmo A* Esta versin es debida a J. Pearl y J. H. Kim (Pearl, J. 1983, pp.88). La idea consiste en considerar dentro de ABIERTA la sublista, llamada FOCAL, formada por aquellos nodos cuyo valor de f no se separa ms de un factor (1 + ) del valor mnimo de f en ABIERTA, es decir FOCAL = {n ABIERTA / f(n) (1 + ) min(f(n'), n' ABIERTA)} . La estrategia de A* es idntica a la de A*, salvo que en A* se desarrollan primero los nodos de la sublista FOCAL segn los valores de un segundo heurstico h', donde h'(n) es una estimacin del esfuerzo computacional que se necesitara para llegar desde n a una solucin. La razn de este cambio es que los nodos de FOCAL tienen todos ms o menos las mismas posibilidades de estar en un camino ptimo, segn las estimaciones basadas en f. As pues, si dispusisemos de algn conocimiento adicional, que no pudiese ser representado en la funcin f, parece razonable utilizar este conocimiento para decidir cul es el nodo ms prometedor. Observemos que como heurstico h' podra utilizarse el propio h, pero normalmente se podr aadir alguna informacin ms a h', que puede obtenerse, por ejemplo, a partir de

Tcnicas Basadas en Bsquedas Heursticas 19/40

lo ya explorado. Adems, como comprobaremos a continuacin, la eleccin de h' no puede influir nunca de modo negativo en la admisibilidad del algoritmo A*. Teorema 14. Si h es admisible, A* es -admisible. Demostracin: Probaremos que si el problema tiene solucin, el algoritmo A* obtiene una solucin -ptima. Puesto que el algoritmo siempre para (por el hecho de que el coste a travs de cualquier camino infinito crece de forma no acotada), bastar demostrar que cuando es seleccionado un nodo terminal t, se verifica f(t) (1 + ) C*. Sea n0 el nodo de ABIERTA con menor valor de f en el momento de la expansin del nodo objetivo t. Obsrvese que ese nodo no tiene por que ser t pues hemos modificado la estrategia de A* y ya no se expande necesariamente el elemento de menor coste estimado. Por otra parte, sea n1 el nodo de un camino ptimo P desde el inicial a los objetivos que est en ese momento en ABIERTA y que sus antecesores a travs de P ya fueron expandidos. En estas condiciones, tenemos que f(t) f(n0) (1 + ) f(n1) (1 + ) = (g*( n1) + h(n1)) (1 + ) (g*( n1) + h*(n1)) (1 + ) = (1 + ) C* Comparacin entre los dos algoritmos El algoritmo de ponderacin dinmica es ms simple ya que solamente tiene una lista de estados y un heurstico, pero tiene el inconveniente de que es necesario conocer la profundidad de la solucin ptima, o al menos una buena cota superior. Por otra parte, A* al utilizar un segundo heurstico h, que no tiene que ser admisible, ofrece un mecanismo ms flexible, del que ofrecen las funciones g y h, para hacer estimaciones del coste computacional de la bsqueda en una determinada direccin.

9.2.5.

Diseo sistemtico de heursticos

Tal y como hemos comentado anteriormente, el diseo de buenos heursticos es un proceso no trivial que requiere de una buena dosis de imaginacin, y en el que se pueden utilizar todo tipo de informaciones e intuiciones sobre el dominio del problema. Siguiendo esta idea, en la seccin 7.2.3 hemos diseado algunos heursticos para tres problemas concretos, y adems hemos justificado si se trataba o no de heursticos admisibles. No obstante si pensamos en problemas ms sofisticados, podemos intuir que el diseo de heursticos puede ser inabordable si no disponemos de un mtodo ms sistemtico que nos permita de alguna manera controlar la admisibilidad y la calidad de los heursticos. En el caso del problema del 8-puzzle, hemos diseado, entre otros, el heurstico h2 siguiendo este mtodo intuitivo y luego hemos empleado un razonamiento para probar su admisibilidad que consiste en lo siguiente. Dada una situacin del tablero, para llegar al objetivo, cada ficha deber seguir una trayectoria a travs de sucesivas posiciones cada una de ellas adyacente ortogonalmente a la anterior. En el caso ms favorable esta trayectoria coincide con la distancia ortogonal desde la posicin actual de la ficha hasta su posicin en el objetivo. Esto es evidente porque no hay otra trayectoria con estas caractersticas que sea ms corta. Anlogamente podramos haber llegado a este mismo heurstico mediante el siguiente razonamiento. Si pudisemos mover una ficha a cualquier posicin adyacente ortogonalmente, aunque esta posicin no estuviese vaca, entonces podramos llevar cada una de las fichas desde su posicin actual hasta su posicin en el objetivo con

Tcnicas Basadas en Bsquedas Heursticas 20/40

independencia de las otras fichas, y para cada una de ellas tendramos que realizar solamente un nmero de movimientos igual a su distancia ortogonal a la posicin que le corresponde en el objetivo. Con el razonamiento anterior, lo que estamos haciendo en realidad es considerar una versin simplificada del problema en la que se prescinde de la restriccin de que la casilla de destino debe estar vaca. El uso de modelos simplificados es la base de muchas estimaciones que hacemos para resolver problemas cotidianos. Por ejemplo, si tenemos que desplazarnos en coche desde un punto a otro en una ciudad en la que desconocemos el sentido de circulacin de las calles, inmediatamente pensamos en la distancia en lnea recta entre los dos puntos y comenzamos el desplazamiento en la direccin que ms se aproxime a la que indica esta lnea. En esta seccin vamos a introducir un mtodo sistemtico de diseo de heursticos basado en esta idea: el mtodo de la relajacin del problema. Los fundamentos de este mtodo se describen en el texto de J. Pearl (Pearl, J. 1984, captulo 4 ). En lneas generales el mtodo consiste en considerar una versin simplificada o relajada del problema original, de modo que esta versin simplificada se pueda resolver de forma ptima mediante un algoritmo polinomial. Luego, el coste ptimo del problema relajado se toma como una estimacin del coste del problema original. Lgicamente, esta estimacin es optimista ya que todas las soluciones del problema real son tambin soluciones del problema relajado, pero no al revs. Para la aplicacin sistemtica del mtodo, el primer paso consiste en enunciar el problema de modo que todas las restricciones queden reflejadas de forma explcita. En el siguiente paso lo que debemos hacer es considerar las posibles relajaciones que consisten en suponer que se relaja un subconjunto de las restricciones del problema hasta conseguir una versin del problema suficientemente simple para que se pueda resolver con un algoritmo polinomial. Pero adems debemos tener en cuenta que cuanto menos se relaje el problema, mejor ser el heurstico resultante ya que ms se parecer el problema relajado al problema original. Vamos a ilustrar el mtodo con la aplicacin a varios ejemplos ya conocidos. El 8-puzzle En este caso el problema puede enunciarse del siguiente modo. Se trata de encontrar una secuencia de movimientos de longitud mnima para llegar desde una configuracin inicial de 8 fichas en un tablero 33 hasta una configuracin objetivo, de modo que cada movimiento elemental de una ficha desde una casilla A a otra casilla B cumpla las 3 restricciones siguientes: R1. Las casillas A y B deben ser adyacentes. R2. Las casillas A y B deben estar en la misma fila o en la misma columna, es decir deben ser ortogonales. R3. La casilla B debe estar vaca. A partir de este enunciado podemos pensar en distintas relajaciones, en realidad tantas como el nmero de subconjuntos del conjunto de todas las restricciones. Vamos a considerar en principio las dos siguientes. Relajacin 1: Prescindimos de las tres restricciones R1, R2, y R3. En este caso el problema relajado se resuelve de forma ptima sin ms que mover cada ficha a la posicin que le corresponde en el objetivo, ya que la posicin de destino no

Tcnicas Basadas en Bsquedas Heursticas 21/40

tiene que ser adyacente, ni ortogonal a la posicin origen, y tampoco tiene que estar vaca. De este modo hemos descubierto de nuevo el heurstico h1, pero aplicando un mtodo sistemtico. Relajacin 2: Prescindimos solamente de la restriccin R3. En este caso el problema relajado se resuelve llevando cada ficha en su posicin en el objetivo pero a travs de una trayectoria de longitud mnima de movimientos a posiciones adyacentes ortogonalmente. Hemos redescubierto h2. Dado que h1 y h2 se obtiene a partir de simplificaciones del problema, podemos asegurar que son admisibles, sin necesidad de hacer ningn otro tipo de razonamiento, como el que hemos tenido que hacer en la seccin 9.2.3.1 cuando descubrimos estos mismos heursticos mediante otro mtodo. Adems, como el conjunto de restricciones que se relajan en la Relajacin 2 es un subconjunto de las restricciones que se relajan en la Relajacin 1, el problema resultante de la Relajacin 1 en realidad es una versin relajada del problema resultante de la Relajacin 2; en consecuencia tendremos que h2(n) h1(n) para todo nodo n, como ya sabamos tambin, pero ahora sin necesidad de realizar ninguna prueba. A modo de ejercicio podemos intentar otras relajaciones, por ejemplo prescindir solamente de R1, o de R2, o bien de cualquier subconjunto de dos de las tres restricciones. Tambin puede resultar un ejercicio interesante tratar de llegar al heurstico h3 definido en la seccin 9.2.3.1, que es admisible pero no montono, a travs del mtodo de la relajacin del problema. El problema del Viajante de Comercio (TSP) El problema del TSP tambin ofrece bastantes posibilidades de relajacin para obtener distintos heursticos. Para enunciar bien el problema, o mejor dicho el subproblema, debemos tener en cuenta que el subproblema que representa un estado, en el que ya se han visitado un subconjunto de las ciudades comenzando por la ciudad de partida, consiste en buscar una camino de coste mnimo que una la ltima ciudad visitada con la ciudad de partida pasando una y solo una vez a travs de cada una de las ciudades no visitadas. Si el problema tiene N ciudades, y en el estado n en el que nos encontramos han sido visitadas k ciudades, denotamos por Gn al grafo resultante de eliminar del grafo de conexiones todas las ciudades intermedias del estado, y la conexin de la ciudad A con la ltima. La figura 8 muestra el grafo Gn para el estado (ACB) correspondiente al problema de la Figura 6. El problema asociado a un nodo n se puede enunciar como: Se trata de calcular un subconjunto de ejes del grafo Gn de coste mnimo que satisfaga las restricciones siguientes: R1. Que tenga N-k+1 ejes. R2. Que todos los ejes sean distintos. R3. Que toque a todas las ciudades no visitadas de Gn. R4. Que toque a la ciudad de partida. R5. Que toque a la ltima ciudad visitada en el estado. R6. Que sea conexo. R7. Que sea de grado 1 para la primera y la ltima ciudad del estado, y de grado 2 para las ciudades no visitadas.
Tcnicas Basadas en Bsquedas Heursticas 22/40

A
113 9 15 25

B
32

92

F
39 17

180

Figura 8. Subgrafo de conexiones Gn para el estado n = (A C B) de la instancia del problema TSP de la Figura 6

Es evidente que cualquier subconjunto de arcos de Gn que satisfaga las siete restricciones anteriores es un camino que conecta la ltima ciudad visitada con la ciudad de partida. Si adems es de coste mnimo, al aadirlo al camino representado por el estado n, nos da un camino hamiltoniano de coste mnimo que se puede construir a partir de n, y en consecuencia es una solucin del problema. Si observamos las siete restricciones, podemos ver que no son independientes, por ejemplo, la restriccin R3 es una consecuencia de la restriccin R7. Luego podramos haber prescindido de R3 en la formulacin del problema. Sin embargo, si consideramos esta restriccin, las posibilidades de relajacin son mayores, ya que podemos relajar R7 y mantener R3. Tambin podemos observar que las restricciones R3, R4 y R5 se podan haber enunciado como una nica restriccin, pero de este modo hay ms posibilidades de relajacin. As, podemos pensar en principio en las relajaciones siguientes: Relajacin 1: Prescindimos de las cuatro restricciones R2, R5, R6 y R7. Con esta relajacin, la solucin ptima del problema se obtiene eligiendo para cada una de las ciudades no visitadas y para la ciudad de partida el eje de coste mnimo que toca a esa ciudad. Con lo que el problema relajado se resuelve en tiempo polinomial y da lugar al heurstico h1 definido como h1(n) = suma de los costes de los ejes de coste mnimo que salen de las ciudades no visitadas y de la ciudad de partida. Para el nodo n = (A C B) tendremos que h1(n) = 15+17+8+15 = 55. Qu pasara si no hubisemos relajado la restriccin R2 o R5? Con el enunciado que hemos dado para el problema, queda implcito que cuando tomamos un arco en la solucin, el coste de este arco es el que le corresponde segn el enunciado del problema. No obstante esto tambin se puede enunciar explcitamente como una restriccin que es susceptible de ser relajada. Con lo cual podemos aadir las siguientes restricciones R8. Cada uno de los ejes incluidos en la solucin tiene el coste de uno de los ejes del grafo Gn. R9. El coste de cada eje de Gn solo se puede tomar una vez. R10. Cada eje de la solucin tiene el coste que le corresponde en Gn.
Tcnicas Basadas en Bsquedas Heursticas 23/40

De nuevo tenemos que no se trata de restricciones independientes, ya que en este caso es evidente que R10 ( R8 R9), pero el hecho de considerar las tres ofrece ms posibilidades de relajacin. As una nueva relajacin puede ser Relajacin 2: Prescindimos de la restriccin R9 y nos quedamos con todas las anteriores. En este caso el problema relajado se resuelve tomando cualquier camino entre la ciudad final de n y la ciudad de partida A que pase una y solo una vez por cada una de las ciudades no visitadas, pero eligiendo para estos arcos los costes ms pequeos de Gn. Con lo que el nuevo heurstico se calcula como h2(n) = suma de los costes de los N-k+1 ejes de menor coste de Gn. Para el nodo n = (A C B) tendremos que h2(n) = 9+15+17+25 = 66. En este caso los dos heursticos h1 y h2 no son comparables ya que proceden de simplificaciones distintas del problema original. Se puede argumentar que heursticos h1 y h2 se pueden deducir fcilmente sin necesidad de aplicar el mtodo de relajacin del problema, con lo que aparentemente el mtodo no es de gran utilidad. Sin embargo esto no es as, ya que al haber muchas posibilidades de simplificacin, hay ms oportunidades de encontrar heursticos, muchos de los cuales no seran fciles de descubrir de otra manera. Por ejemplo si consideramos una tercera relajacin. Relajacin 3: Prescindimos solamente de R7. En este caso tenemos que calcular el subconjunto de ejes de coste mnimo que sea conexo y en el que cada eje tenga el coste que le corresponde en Gn. Un subconjunto de estas caractersticas es un rbol de expansin mnimo que se puede calcular en tiempo polinomial con los conocidos algoritmos de Prim o Kruskal. Con lo que tenemos el heurstico h3 definido como h3(n) = coste de un rbol de expansin mnimo de Gn. Este heurstico tampoco es comparable a los dos anteriores y aunque su clculo es algo ms complejo (O(m3) siendo m el nmero de ejes de Gn) en la prctica resulta muy eficiente. Para el nodo n = (ACB), la Figura 9 muestra el rbol de expansin mnimo para el correspondiente Gn, su coste es h3(n) = 17+9+32+15 = 73.
A
113 9 15 25

B
32

92

F
39 17

180

Figura 9. rbol de expansin mnimo para el grafo de la Figura 8

Tcnicas Basadas en Bsquedas Heursticas 24/40

Se pueden considerar otras relajaciones del problema. En algunos casos se obtienen heursticos similares a alguno de los anteriores, y en otros casos se obtienen versiones del problema que siguen siendo problemas NP-duros, por lo que no sirven para el propsito de disear heursticos. El problema de secuenciamiento de una mquina El problema que representa un estado intermedio en el secuenciamiento de una mquina con cabezas y prioridades se puede enunciar as: Dado un estado intermedio en el que estn planificadas un subconjunto de p tareas de {t1,,tN}, en orden (tk1,,tkp), tal que la ltima termina en el instante Tp; si C es el conjunto de tareas no planificadas, se trata de asignar a cada tarea i de C un tiempo de inicio sti Tp sobre la mquina m, de forma que se minimice la suma de los tiempos de ejecucin ponderados por la prioridad, y que se satisfagan las restricciones siguientes: R1. Cada tarea ti debe comenzar en un tiempo sti ri. R2. La ejecucin de dos tareas en la mquina no se puede solapar en el tiempo. R3. La ejecucin de las tareas en la mquina no se puede interrumpir durante su tiempo de procesamiento. R4. A cada tarea en la solucin le corresponde su prioridad. R5. A cada tarea en la solucin le corresponde la prioridad de una de las tareas del conjunto C, y no se puede asignar la prioridad de la misma tarea a dos tareas distintas. Con esta forma de enunciar el problema podemos hacer varias relajaciones distintas. En primer lugar consideramos la siguiente: Relajacin 1: Prescindimos de las restricciones R1 y R2. En este caso, en el problema relajado las tareas pueden comenzar en un instante sti = Tp, y adems se pueden solapar sobre la mquina m, con lo cual la solucin ptima se obtiene planificando todas las tareas en el instante Tp, y el valor del correspondiente heurstico es:
h1 (n ) = (Tp + d i )* pi
tiC

donde el conjunto C contiene a todas las tareas no planificadas en el estado n. Por ejemplo para el estado n = (t2 t1) del ejemplo de la Figura 19 del captulo 7, el valor de este heurstico es h1(n) = 202 + 193 = 97, siendo en este caso h*(n) = 107. Cmo ser el heurstico resultante de relajar solamente R2? Relajacin 2: Prescindimos de R3 y de R4. En este caso cada tarea tiene que comenzar a ejecutarse en un instante stiMaximo(ri,Tp), las tareas no se pueden solapar, pero la ejecucin de una tarea en la mquina se puede interrumpir antes de que termine su tiempo de procesamiento, y asignar la mquina ms tarde a esa tarea para que se procese durante el tiempo restante. En este caso la solucin ptima del problema relajado se puede obtener con el siguiente algoritmo de la Figura 10, denominado algoritmo PS (Preemptive Schedule). Este algoritmo requiere una prueba formal de su correccin. La idea de esta prueba se basa en que al planificar las tareas con interrupciones dando siempre prioridad a la tarea disponible con menor tiempo de procesamiento restante, la suma de las duraciones de

Tcnicas Basadas en Bsquedas Heursticas 25/40

las tareas es mnima. Luego si asociamos la prioridad ms alta a la tarea que antes termina, y as sucesivamente, la suma de los productos por las prioridades es mnima.
Algoritmo PS para cada instante desde Tp hasta que todas las tareas de C hayan terminado Asignar la maquina m a la tarea ti de C con menor tiempo de procesamiento restante y tal que ri, durante el intervalo [,+1[; finpara; Ordenar las tareas de C segn el tiempo cti de finalizacin, de menor a mayor; Reasignar las prioridades de las tareas de C de modo que la mayor prioridad se asigna a la tarea con menor tiempo de finalizacin, y as sucesivamente; devuelve tiC (cti pi); fin.
Figura 10. Algoritmo de clculo de la solucin ptima del problema de secuenciamiento de tareas con prioridades relajando las restricciones R3 y R4.

En este algoritmo, cti se refiere al instante de finalizacin del ltimo intervalo de ti. As, el heurstico resultante se calculara como h2(n) = Resultado de aplicar el algoritmo PS, de la Figura 10, al estado n. Para el nodo n = (t2 t1), la planificacin de las tareas restantes, t3 y t4, se muestra en la Figura 11; como la mayor prioridad de las tareas no planificadas se asigna a la tarea t3 por terminar la primera, el valor de este heurstico es h2(n) = 193 + 462 = 103 que, como vemos, se aproxima ms que el anterior al valor de h*(n).

t2 0 6 10

t1

t3 13 14

t4 19

t3 25 28

Figura 11. Planificacin ptima de las tareas t3 y t4 eliminando las restricciones R3 y R4.

El algoritmo de la Figura 10 se puede mejorar haciendo que la variable tome solamente los valores definidos por las cabezas y por los tiempos de finalizacin de las tareas, en lugar de tomar valores con incrementos de una unidad. De este modo, se puede implementar con una complejidad del orden de O(k log k) siendo k el nmero de tareas no planificadas en el estado n. Al igual que en el caso del heurstico h3 definido anteriormente para el TSP, ste es un heurstico no trivial, al que sera difcil llegar mediante un mtodo no sistemtico. Este problema tiene ms posibilidades de simplificacin, en particular algunas asociadas a la relajacin de las duraciones de las tareas. Ya hemos visto que los heursticos obtenidos por el mtodo de relajacin del problema son admisibles. Ahora veremos que tambin son montonos, y la prueba es muy simple. Teorema 15. Todo heurstico h obtenido por el mtodo de la relajacin del problema es montono Demostracin: Dados dos nodos cualesquiera, n y n, basta con observar que una forma de resolver el problema n en el modelo relajado es ir hasta n aplicando una regla de coste c(n,n) y luego resolver n en el modelo relajado. Por lo tanto, la mejor forma de resolver n en el modelo relajado es mejor o igual que sta que consiste en ir a travs de

Tcnicas Basadas en Bsquedas Heursticas 26/40

n. Como h(n) y h(n) representan el coste de la mejor forma de resolver n y n respectivamente en el modelo relajado, tenemos que h(n) h(n) + c(n,n), luego h es montono. Este resultado tiene varias consecuencias inmediatas. En primer lugar pone de manifiesto la eficacia del mtodo, ya que se trata de un mtodo sistemtico que proporciona heursticos con buenas propiedades y adems no es preciso probar formalmente estas propiedades una vez obtenidos los heursticos ya que stas son una consecuencia directa de la aplicacin correcta del mtodo. Por otra parte, pone de manifiesto que es el mtodo que tendemos a utilizar las personas de forma inconsciente, ya que la experiencia demuestra que la mayora de los heursticos admisibles que somos capaces de disear razonando de una forma lgica, son tambin montonos. Pensemos, por ejemplo, en los heursticos que hemos visto para el problema del 8-puzzle, en particular en el heurstico h3.

9.3. Bsqueda con memoria limitada


El principal problema que tiene el algoritmo A* es el requerimiento de memoria que crece de forma exponencial con la profundidad, aunque dispongamos de buenos heursticos. Para tratar de salvar este problema, se han propuesto variantes que incorporan mecanismos para limitar la cantidad de memoria. El primero se denomina IDA* (Iterative Deepening A*) y es una extensin del mtodo de bsqueda iterativa en profundidad. El segundo se denomina SMA* (Simplified Memory-Bounded A*) y es similar a A* pero restringe el tamao de ABIERTA a un valor mximo prefijado. Para simplificar la exposicin, consideraremos versiones de estos algoritmos para el recorrido de rboles.

9.3.1.

Algoritmo IDA*

Este algoritmo fue propuesto por R. Korf (Korf, R. 1985). En principio se establece una longitud lmite para la bsqueda igual al valor de f(inicial) que es obviamente una cota inferior de la solucin ptima. En cada iteracin, IDA* busca con una estrategia en profundidad descartando los nodos n cuya estimacin f(n) supere la longitud lmite. Si en una iteracin no se encuentra solucin, se realiza una nueva iteracin en la que la bsqueda comienza otra vez desde el principio, pero esta vez con una nueva profundidad lmite, el menor valor de f de los nodos descartados en la iteracin anterior. Puesto que el algoritmo dispone de una funcin heurstica h, se puede utilizar esta informacin para ordenar los sucesores del nodo expandido antes de insertarlos en ABIERTA, de modo que se consideren antes los sucesores ms prometedores de cada nodo expandido. De este modo, si en una iteracin se encuentra la solucin, el nmero de nodos expandidos en esta iteracin puede ser menor. Si por el contrario en una iteracin no se encuentra solucin, el nmero de nodos expandidos es el mismo que si los sucesores se ordenasen de otro modo. La Figura 7 muestra el algoritmo IDA* y la Figura 8 el algoritmo de bsqueda heurstica con longitud limitada que es utilizado por el algoritmo IDA* en cada iteracin.

Tcnicas Basadas en Bsquedas Heursticas 27/40

Algoritmo IDA*; comienzo LongitudLimite = f(inicial); Solucion = Primero en Profundidad con Longitud Limitada; mientras (Solucion = no encontrado) hacer ProfundidadLimite = NuevaLongitudLimite; Solucion = Primero en Profundidad con Longitud Limitada; finmientras; devolver Solucion; fin.
Figura 12. Algoritmo IDA* (Iterative Deepening A*)

Algoritmo de Bsqueda Primero en Profuncidad en rboles con Longitud Limitada; comienzo ABIERTA = (inicial); mientras (NoVacia(ABIERTA)) hacer n = ExtraePrimero(ABIERTA); si (EsObjetivo(n)) devolver Camino(inicial,n) finsi; S = ; si (f(n) < LongitudLimite) S = Sucesores(n); sino Actualizar NuevaLongitudLimite con f(n); finsi; si (Vacia(S)) LimpiarTABLA_A(n) finsi; para cada q de S hacer poner q en la TABLA_A con Anterior(q) = n, g(q) = Coste(inicial,n) + Coste(n,q), h(q) = Heuristico(q); finpara; Ordenar S segn los valores de f de menor a mayor; ABIERTA = Concatenar(S,ABIERTA); finmientras; devolver "no encontrado" y NuevaLongitudLimite; fin.
Figura 13. Algoritmo de bsqueda heurstica en profundidad en rboles con longitud limitada

No es difcil comprobar que IDA* es admisible si h es montono (si h es solamente admisible IDA* tambin es admisible, pero el razonamiento es ms complejo), ya que si en una iteracin no se encuentra solucin, el nuevo lmite de profundidad calculado como el menor valor de f de los nodos descartados en esa iteracin, es una cota inferior de la solucin ptima, ya que los valores de f de los nodos a lo largo de una rama del rbol de bsqueda forman una secuencia no decreciente por ser h montono. Luego si en la siguiente iteracin se encuentra una solucin, su coste debe ser igual al valor lmite y por lo tanto la solucin es ptima. Puesto que el algoritmo realiza bsquedas en profundidad, el consumo de memoria es proporcional a la profundidad de la solucin d y al factor de ramificacin b, como se ha visto en la seccin 7.4.1.2. Sin embargo, el tiempo de bsqueda es exponencial en la profundidad, es decir que en cada iteracin tenemos una bsqueda con tiempo exponencial en la profundidad lmite. En la prctica,

Tcnicas Basadas en Bsquedas Heursticas 28/40

si cada si todos los nodos tienen valores de f distintos, en cada iteracin solamente se aade un nodo al espacio de bsqueda, y en este caso, si el algoritmo A* necesita expandir N nodos para llegar a una solucin, el algoritmo IDA* necesita expandir 1+2++N = O(N2) nodos. Evidentemente si N es mucho espacio, N2 tambin es mucho tiempo. Una forma de atajar este inconveniente es, en cada iteracin, aadir un factor a la profundidad lmite, con lo que se obtiene un algoritmo admisible. Sin embargo, si el valor de f solamente cambia cada cierta profundidad, el tiempo requerido para una iteracin es mucho mayor que el de la iteracin anterior, de modo que el tiempo total de la bsqueda es prcticamente el tiempo de la ltima iteracin realizada, por lo tanto similar al tiempo de A*.

9.3.2.

Algoritmo SMA*

El principal problema del algoritmo IDA* es la cantidad de nodos que tiene que reexpandir, debido a que lo nico que recuerda de una iteracin a la siguiente es el valor del menor valor de f de los nodos descartados. El algoritmo SMA* propuesto por S. Russel (Russel, S., 1992) resuelve este problema a la vez es capaz de operar con una cantidad limitada de memoria. Para mantener una cierta uniformidad con las descripciones de los algoritmos anteriores, la descripcin que se sigue aqu, y que se muestra en la Figura 9, difiere en algunos aspectos de la original que puede verse tambin en el texto de Russel y Norving (Russell, S. y Norvig, P., 2003). En el algoritmo de la Figura 9, el valor de la variable Limite se refiere al nmero mximo de nodos que se pueden almacenar en la TABLA_A, y por lo tanto a la profundidad mxima de un camino registrado en esta tabla. La llamada a la funcin SiguienteSucesor(n) proporciona en cada llamada un sucesor del nodo, en principio en un orden no determinado, por lo que es preciso algn mecanismo de control de los sucesores generados hasta el momento. Este mecanismo se puede apoyar en la TABLA_A. En lneas generales, el funcionamiento del algoritmo SMA* es el siguiente. Cuando necesita expandir un nodo y no tiene espacio en la TABLA_A, elimina un nodo de esta tabla y de ABIERTA. Estos son los llamados nodos olvidados y son aquellos menos prometedores, es decir los que tienen un mayor valor de f en ABIERTA. Para no reexplorar subrboles que han sido eliminados de memoria, SMA* mantiene en los nodos ancestros informacin acerca de la calidad del mejor camino en cada subrbol descartado. De este modo, solamente reexplora un subrbol descartado cuando el resto de posibilidades es peor de acuerdo con las estimaciones. Para proceder de este modo, cuando se descartan todos los sucesores de un nodo n, el algoritmo recuerda la estimacin del mejor camino a travs de n. El algoritmo SMA* es bastante sofisticado, por lo que una forma de entenderlo es a travs de un buen ejemplo como el que se puede encontrar en el texto de Russel y Norving (Russell, S. y Norvig, P., 2003, p. 108-109). Por ltimo, tal y como se indica en el texto de Russel y Norving, las propiedades principales del algorirmo SMA* son las siguientes: Es capaz de evolucionar utilizando la memoria que tenga disponible. Evita estados repetidos en la medida en que la cantidad de memoria disponible se lo permita. Es completo si la memoria disponible es suficiente para almacenar el camino a la solucin menos profunda.

Tcnicas Basadas en Bsquedas Heursticas 29/40

Es admisible si tiene suficiente memoria para almacenar el camino hasta la solucin ptima menos profunda. En otro caso, devuelve la mejor solucin que se puede alcanzar con la memoria disponible. Si la memoria es suficiente para el rbol de bsqueda completo, la eficiencia de la bsqueda es ptima.

Sin embargo, no est resuelta la cuestin de si SMA* tiene una eficiencia mejor o igual que cualquier otro algoritmo, dada la misma informacin heurstica y la misma cantidad de memoria.
Algoritmo SMA*; comienzo Insertar el inicial en ABIERTA y en la TABLA_A; mientras NoVacia(ABIERTA) hacer n = Primero(ABIERTA); si (EsObjetivo(n)) devolver Camino(inicial,n) finsi; s = SiguienteSucesor(n); si (No EsObjetivo(s) y Profundidad(s) = Limite) f(s) = ; sino f(s) = Maximo(f(n),g(s)+h(s)); finsi; si (Todos los sucesores de n ya han sido generados) Actualizar el valor de f para s a partir de los valores de sus sucesores y propagar esta actualizacin a sus ancestros, si es preciso; finsi; si (Todos los sucesores de n estn en la TABLA_A ) Eliminar n de ABIERTA; finsi; si (la TABLA_A est llena) Eliminar de ABIERTA y de la TABLA_A el nodo con mayor f en ABIERTA y menor profundidad, actualizando la estimacin del mejor nodo olvidado; Insertar el padre del nodo eliminado en ABIERTA si es necesario; finsi; Insertar s en ABIERTA y en la TABLA_A; finmientras; devolver "no solucion"; fin.
Figura 14. Algoritmo SMA* (Simplified Memory-Bounded A*)

9.4. Algoritmos Voraces


Los algoritmos voraces (greedy) constituyen una alternativa a la bsqueda exhaustiva. La idea bsica es que un algoritmo de esta clase toma decisiones de forma irrevocable, de modo que nunca considera otra alternativa. Una consecuencia de este modo de proceder es que los algoritmos voraces no son admisibles, y en general tampoco son completos. Pero por otra parte resultan extremadamente eficientes, por lo que resultan muy adecuados por ejemplo en los sistemas de tiempo real. Adems si la decisin irrevocable est guiada por un buen heurstico, la probabilidad de obtener una buena solucin aumenta. Estos algoritmos aparecen con profusin en la literatura, por ejemplo los algoritmos de planificacin del procesador, u otro tipo de recursos, de los sistemas
Tcnicas Basadas en Bsquedas Heursticas 30/40

operativos, o los algoritmos de enrutamiento de mensajes en redes de comunicaciones, suelen ser algoritmos de este tipo. El diseo de un algoritmo voraz para la bsqueda en espacios de estados es simple a partir de los algoritmos que hemos visto hasta aqu; no obstante dada su simplicidad lo lgico es realizar una implementacin ms sencilla y eficiente. Por ejemplo, si tenemos un algoritmo A*, y en cada paso nos quedamos nicamente con el sucesor ms prometedor, de acuerdo con el heurstico h, tenemos un algoritmo voraz. En este caso se trata de un algoritmo determinista. Si adems resolvemos de forma aleatoria los empates, tenemos un algoritmo no determinista que, si lo ejecutamos varias veces, nos proporciona distintas soluciones con una calidad media que depender de la precisin de las estimaciones del heurstico. Podemos aumentar la variedad de las soluciones si en lugar de elegir aleatoriamente entre los mejores sucesores con una distribucin uniforme, hacemos una eleccin entre todos los sucesores con una distribucin proporcional a la bondad estimada de cada sucesor. Los algoritmos voraces son tiles en la prctica para resolver muchos problemas, y se pueden utilizar adems en combinacin con otras estrategias de bsqueda, como por ejemplo los esquemas de ramificacin y poda que se describen en la seccin siguiente, o los algoritmos evolutivos que se vern en el captulo 9.

9.5. Algoritmos de Ramificacin y Poda


Los algoritmos de ramificacin y poda constituyen, posiblemente, el mtodo ms empleado en la resolucin de problemas de optimizacin combinatoria. Como veremos, tienen muchos elementos en comn con otros algoritmos que hemos visto, como el propio A*, pero tienen tambin algunas caractersticas propias. En primer lugar, con los algoritmos anteriores, la bsqueda se plantea como un proceso en el que la solucin se va construyendo paso a paso, de modo que un estado representa normalmente parte de la solucin del problema, y sobre todo un subproblema que se debe resolver para llegar a una solucin del problema original. Por ejemplo, el estado inicial se interpreta como una situacin en la que no hemos hecho nada todava y por lo tanto en la que tenemos el problema original. Sin embargo, en un algoritmo de ramificacin y poda, el planteamiento es otro. Cada estado representa un subconjunto de soluciones del problema original, en el estado inicial tenemos todas las soluciones y a partir de aqu, mediante el proceso de ramificacin, un conjunto de soluciones se descompone en la unin disjunta de varios conjuntos, hasta llegar a conjuntos unitarios que representan soluciones del problema. Histricamente, los algoritmos de ramificacin y poda han sido ms utilizados por la comunidad de Investigacin Operativa, mientras que los algoritmos de bsqueda tipo A* lo han sido por la comunidad de Inteligencia Artificial. La Figura 15 muestra el esquema de un algoritmo de ramificacin y poda. Se trata de una versin iterativa que est inspirada en una de las propuestas de P. Brucker para resolver problemas de asignacin de recursos, normalmente denominados problemas de scheduling, en (Brucker, P. 1994), aunque evidentemente es una versin general y por lo tanto aplicable a todo tipo de problemas de optimizacin combinatoria. Los algoritmos de ramificacin y poda tienen cuatro componentes fundamentales: un esquema de ramificacin, un mtodo de clculo de cotas inferiores (Lower Bounds), un mtodo de clculo de cotas superiores (Upper Bounds) y una estrategia de control.

Tcnicas Basadas en Bsquedas Heursticas 31/40

Algoritmo de Ramificacin y Poda comienzo ABIERTA = {inicial}; UB = ; s = ; LB = cota inferior de inicial; mientras (NoVacia(ABIERTA) y (LB < UB) y (No CriterioTerminacion)) hacer Extraer un elemento n de ABIERTA; sn = solucin de Y(n) obtenida mediante un algoritmo heurstico; si (Coste(sn) < UB) s = sn; UB = valor de sn; finsi; Calcular los sucesores de n, q1,,qp, ordenados con algn criterio, de modo que Y(n) = Y(q1) Y(qp), siendo esta unin disjunta; Calcular cotas inferiores LBi de qi, 1ip; para cada i de 1 a p hacer si (LBi < UB) si (|Y(qi)|=1) UB = LBi; s = la solucin de Y(qi); sino Aadir qi a ABIERTA; finsi; finsi; finpara; LB = Minimo(LBq, qABIERTA); finmientras; devuelve s, UB, LB; fin.
Figura 15. Esquema de un algoritmo de Ramificacin y Poda

Esquema de ramificacin La ramificacin de un nodo es equivalente al clculo de sucesores en los algoritmos de bsqueda anteriores. Cada nodo representa un problema y dado un nodo n, Y(n) representada al conjunto de todas las soluciones de n. Obviamente este conjunto nunca se representa por extensin. La ramificacin de n consiste en descomponer el problema n en una serie de subproblemas q1,,qp, de forma que Y(n) es la unin disjunta de Y(q1), , Y(qp), es decir Y(n) = Y(q1) Y(qp), y Y(qi) Y(qj) = , 1i,jp, ij. El estado inicial es el nodo raz del rbol de bsqueda, y a partir de l se obtiene el resto del rbol de bsqueda mediante la aplicacin recursiva del esquema de ramificacin. Los nodos hoja de este rbol se caracterizan por el hecho de que representan una nica solucin del problema. Clculo de cotas inferiores El clculo de cotas inferiores para un nodo n es anlogo al clculo de heursticos admisibles. La obtencin de buenas cotas inferiores es fundamental para la eficiencia del algoritmo de ramificacin y poda. De la misma forma que los heursticos bien informados permiten expandir menos nodos al algoritmo A*, mediante las cotas

Tcnicas Basadas en Bsquedas Heursticas 32/40

inferiores se pueden realizar procesos de poda que permiten descartar subrboles del rbol de bsqueda. Dado un nodo n el algoritmo de clculo de cotas inferiores nos da una cota inferior de la mejor solucin de Y(n) (el valor de esta cota inferior es anlogo al valor f(n)=g(n)+h(n) en A* si tenemos un heurstico admisible). Obviamente, esta cota inferior no tiene por qu ser cota inferior del problema, ya que la mejor solucin del problema puede no estar incluida en Y(n). Solo cuando el algoritmo se aplica al nodo inicial podemos tener la seguridad de que obtenemos una cota inferior de la solucin ptima del problema. En la descripcin del algoritmo de la Figura 13, la condicin |Y(qi)|=1 significa que el nodo qi es un nodo solucin y por lo tanto la funcin del clculo de la cota inferior nos da el valor de la nica solucin del conjunto Y(qi). Clculo de cotas superiores Las cotas superiores estn asociadas a soluciones reales del problema completo. El algoritmo de ramificacin y poda mantiene en una variable UB la menor de las cotas superiores obtenidas hasta el momento, y la solucin correspondiente en la variable s. Tpicamente, los algoritmos de ramificacin y poda obtienen estas cotas cada vez que en la bsqueda se llega a un nodo hoja. Sin embargo la obtencin de cotas superiores se puede ampliar con el clculo de cotas para cada uno de los nodos que se van expandiendo mediante un algoritmo heurstico. Se trata simplemente de utilizar un algoritmo que para un nodo n nos de una buena solucin Y(n). Este algoritmo debe ser muy eficiente, por lo que suele ser un algoritmo voraz, como los descritos en el apartado 8.4. Estrategia de control La estrategia de control se refiere a la gestin de la lista ABIERTA que contiene los nodos candidatos a ser desarrollados mediante el esquema de ramificacin, es decir a la estrategia que se utiliza para decidir qu nodos entran en esta lista y cul es el siguiente en salir. Tpicamente, por razones de eficiencia los algoritmos de ramificacin y poda utilizan una estrategia de bsqueda en profundidad, es decir ABIERTA se trata como una pila. Como adems disponemos de la informacin que proporcionan las cotas inferiores, podemos ordenar los sucesores de cada nodo antes de insertarlos en ABIERTA. Sin embargo se pueden utilizar otras posibilidades. Por ejemplo ABIERTA puede estar ordenada de acuerdo con las cotas inferiores y en ese caso tendramos una estrategia anloga a la de A*. Por ltimo, al disponer de una cota superior en la variable UB, si despus de la ramificacin de un nodo, uno de sus sucesores qi tiene una cota inferior LBi UB, ya sabemos que en el conjunto Y(qi) no hay una solucin mejor que la que ya tenemos en este momento, y en consecuencia qi no se inserta en ABIERTA. Este es el proceso de poda que permite reducir el espacio de bsqueda efectivo y que ser tanto ms eficiente cuanto mejores sean las estimaciones que vamos haciendo de las cotas inferiores y superiores. Para asegurar la condicin de admisibilidad, los algoritmos de ramificacin y poda deben recorrer todo el espacio de bsqueda, salvo las partes que se podan, antes de terminar, ya que, en general, la primera solucin que encuentran no es la ptima. De ese modo, el criterio de parada ser en principio que ABIERTA se agote. No obstante, se puede mantener una cota inferior del problema, en la variable LB, que se calcula como el mnimo de las cotas inferiores, LBq, de los nodos q contenidos en ABIERTA justo antes de cada expansin. De ese modo, si encontramos una solucin cuyo valor coincida con la cota inferior, es decir LB = UB, tenemos la seguridad de que se trata de una solucin ptima y podemos detener la bsqueda. Si la instancia del problema es difcil de resolver y en consecuencia da lugar a un espacio de bsqueda muy grande, el tiempo

Tcnicas Basadas en Bsquedas Heursticas 33/40

puede resultar prohibitivo. En este caso es posible detener la bsqueda mediante algn criterio adicional, por ejemplo despus de un nmero de nodos expandidos, o despus de un determinado tiempo de ejecucin. Para ello se puede utilizar un tercer criterio de parada. Obviamente en este caso se pierde la admisibilidad, pero el algoritmo devolver la mejor solucin encontrada, con su coste UB, y la mejor cota inferior, LB, obtenida durante la bsqueda. Esta es una caracterstica importante de este tipo de algoritmos: son admisibles si disponen de un tiempo de ejecucin suficiente, pero producen una solucin y una cota inferior si el tiempo es limitado.

9.6. Algoritmos de Mejora Iterativa o Bsqueda Local


En general, la solucin que proporciona un algoritmo de bsqueda viene dada por un nodo objetivo junto con un camino desde el nodo inicial hasta este nodo. Sin embargo, hay muchos problemas para los cuales el nodo solucin contiene toda la informacin necesaria y en este caso el camino es irrelevante. Este es el caso del TSP y del problema de las N-reinas. Mientras que para otros problemas, como el 8-puzzle y el problema planificacin de actuaciones de robots, la informacin importante es el camino desde el inicial a la solucin. Para problemas como el TSP, es posible plantear otro tipo de bsqueda que consiste en partir de un estado que representa una solucin del problema y luego hacer pequeos cambios en la configuracin de este estado buscando mejoras de la solucin. Esta es la idea de los mtodos de mejora iterativa, que se suelen denominar tambin mtodos de bsqueda local por el hecho de que con los cambios que se realizan en la configuracin de un estado, en realidad lo que se hace es generar configuraciones prximas o vecinas a esta configuracin. La estructura bsica de un algoritmo de bsqueda local es la que se muestra en la Figura 16. El algoritmo parte de una solucin inicial y en cada iteracin calcula un conjunto de soluciones vecinas mediante una regla de vecindad. Cada una de estas soluciones debe ser evaluada, siendo sta una de las acciones ms crticas del algoritmo por el elevado tiempo de ejecucin que puede suponer, especialmente si el nmero de soluciones vecinas es muy grande, o bien si el procedimiento de evaluacin de cada solucin es muy costoso. A continuacin se selecciona una de las soluciones vecinas con un determinado criterio, normalmente la que tiene menor coste. Si esta solucin cumple el criterio de aceptacin, que puede ser simplemente que sea mejor que la solucin actual S, la solucin seleccionada reemplaza a la solucin S, y el proceso contina hasta que se cumpla el criterio de finalizacin. Este criterio suele ser que se agote un determinado nmero de iteraciones, o bien que no se produzcan mejoras en los ltimos intentos. La regla de vecindad debe cumplir la propiedad de conectividad, es decir que desde cualquier estado se pueda alcanzar un objetivo ptimo mediante una secuencia de transformaciones. Adems las reglas suelen ser simtricas, es decir que si una solucin x es vecina de otra y, y tambin es vecina de x. La aplicacin del algoritmo de Bsqueda Local al problema TSP es bastante simple. Si suponemos que el grafo de conexiones es totalmente conectado, entonces cualquier permutacin de las ciudades, prescindiendo de la ciudad de partida, es una solucin del problema. El coste de esta solucin se calcula de forma inmediata en un tiempo del orden de O(N), siendo N el nmero de ciudades. El clculo de soluciones vecinas se puede hacer de varias formas, la ms simple consiste en mover cada ciudad a continuacin de la siguiente en la permutacin, y la ltima por delante de la primera; as se obtienen N soluciones vecinas. Estas soluciones se pueden evaluar sin necesidad de recorrer toda la secuencia de ciudades, ya que en cada solucin vecina solamente cambian tres arcos con respecto a la solucin original.
Tcnicas Basadas en Bsquedas Heursticas 34/40

Algoritmo de Bsqueda Local comienzo S = SolucinInicial; mientras (no se cumpla el CriterioDeTerminacin) V = SolucionesVecinas(S); EvaluarSoluciones(V); S1 = Seleccin(V); si (S1 cumple el CriterioDeAceptacin) S = S1; finsi; finmientras; devuelve S; Fin.
Figura 16. Esquema de un algoritmo de Bsqueda Local

En el caso del problema de las N-reinas, se puede codificar una solucin mediante una distribucin de las N-reinas de forma que no haya dos reinas en una misma fila. Pero una configuracin as puede no ser solucin del problema ya que pueden estar dos o ms reinas en una misma columna o en una misma diagonal. En este caso, a una configuracin de estas caractersticas la consideraremos como una solucin potencial del problema, y esta solucin potencial se parecer tanto ms a una solucin real cuantas menos reinas se ataquen entre s. As podremos dar a cada solucin potencial un coste proporcional al nmero de reinas que son atacadas. Un regla de vecindad simple consiste en mover cada reina en su fila a una posicin distinta, con lo que tendremos (N1)N vecinos. La evaluacin de cada vecino se puede hacer en un tiempo del orden de O(N2) ya que tendremos que comprobar si cada reina es atacada por alguna de las dems. Los algoritmos de bsqueda local realizan una bsqueda en un espacio de soluciones potenciales del problema tratando de encontrar aquella que maximice, o minimice, una determinada funcin objetivo. Esta funcin objetivo tiene normalmente una forma o relieve (que se suele denominar landscape) muy irregular, con numerosos mximos y mnimos locales, por lo que la bsqueda del ptimo global es muy costosa. Por este motivo la bsqueda se suele asociar metafricamente con una excursin a travs de una cordillera en la que se trata de alcanzar la cima ms alta. Normalmente la bsqueda local no mantiene traza de todo el proceso realizado hasta el momento, sino que solamente utiliza informacin sobre el estado actual y sus vecinos. Siguiendo la metfora anterior, es como caminar a travs de la cordillera sin conocerla, en un da de niebla espesa y adems sufriendo amnesia. A pesar de esto, la bsqueda local es una estrategia muy eficaz en muchos casos que, adems, se puede combinar con otras estrategias como por ejemplo los algoritmos evolutivos que se describen en el captulo 11. Aqu veremos tres variantes de bsqueda local de uso muy extendido: los algoritmos de escalada o mximo gradiente, la bsqueda tab y el temple simulado (o simmulated annealing).

9.6.1.

Algoritmos de escalada o mximo gradiente

La bsqueda por mximo gradiente se caracteriza porque el criterio de aceptacin de la solucin vecina S1 frente a la solucin actual S es que S1 sea mejor o igual que S. Previamente en la seleccin se intenta elegir una solucin que mejore a S, o bien la
Tcnicas Basadas en Bsquedas Heursticas 35/40

mejor de todas las soluciones de la vecindad. Este tipo de bsqueda es simple, pero tiene algunos inconvenientes, concretamente tiene problemas en las siguientes situaciones ptimos locales: cuando se alcanza uno de estos puntos del espacio de bsqueda, todos los vecinos son peores con lo que la bsqueda finaliza sin encontrar el ptimo global. Regiones planas: en este caso todos los vecinos tienen el mismo valor que la solucin actual y la bsqueda es aleatoria. Crestas: si hay una cresta con pendientes muy marcadas, puede ser fcil alcanzar la cima de la cresta. Sin embargo, si la pendiente de la cima es muy suave en la direccin del ptimo global, resulta difcil guiar la bsqueda a travs de la cima sin desviarse hacia los lados de la cresta; a menos que existan operadores especficos para generar vecinos a travs de la cima.

En estos tres casos lo que ocurre es que la bsqueda se queda estancada en un ptimo local, que puede ser una solucin razonable o no serlo. Lo que se puede hacer en estos casos es reiniciar la bsqueda a partir de otra situacin inicial, lo que se suele denominar bsqueda multiarranque, con lo que alcanzaramos posiblemente otro ptimo local distintos. As, despus de un nmero de intentos podramos llegar a una solucin aceptable, sobre todo si el nmero de ptimos locales es pequeo. Sin embargo, para los problemas NP-duros, el nmero de ptimos locales suele ser un nmero exponencial, con lo que las posibilidades de alcanzar un ptimo global son muy escasas.

9.6.2.

Temple simulado

La idea de este mtodo consiste en admitir, con una cierta probabilidad, algunas transiciones en las que la solucin actual empeore; de este modo se puede salir de ptimos locales. La Figura 17 muestra el algoritmo de temple simulado. Las diferencias principales de este algoritmo con respecto al algoritmo de escalada son las siguientes. En el temple simulado se realiza una seleccin aleatoria entre los vecinos del estado actual. Si esta solucin es mejor que la actual, se realiza la transicin de forma incondicional, como en el caso del algoritmo de escalada. Pero si la solucin vecina es peor que la actual, entonces la nueva solucin se acepta con una determinada probabilidad que depende de dos parmetros: la temperatura T y el incremento de energa E. Los nombres de estos parmetros se han elegido por la analoga del mtodo con el proceso fsico de enfriamiento de un lquido hasta que se congela. Al principio de la bsqueda, la temperatura tiene un valor alto, inicialmente T0, de modo que la probabilidad de aceptar una solucin peor que la actual es alta. A medida que la bsqueda progresa, el valor de T se va actualizando de forma T = (t,T), siendo t la iteracin actual y una funcin que decrece al aumentar t. De este modo, la probabilidad de aceptar una solucin que empeora a la actual va disminuyendo a medida que avanza la bsqueda, hasta que al final prcticamente solo se admiten soluciones que mejoren o igualen a la actual. La funcin se puede definir de varias formas, dos posibilidades simples son las siguientes: (t,T) = kT, con 0<k<1, y (t,T) = T/(1+kT), siendo k>0 un valor muy pequeo. En general, si la variacin de T es lenta y el valor de T0 alto, la probabilidad de llegar a una buena solucin es mayor, pero la bsqueda es ms costosa ya que el criterio de terminacin suele ser que T alcance un valor suficientemente pequeo.

Tcnicas Basadas en Bsquedas Heursticas 36/40

Algoritmo de Temple Simulado comienzo S = SolucinInicial; t = 0; T = T0; mientras (no se cumpla el CriterioDeTerminacin) S1 = SeleccinAleatoria(SolucionesVecinas(S)); E = Coste(S1) Coste(S); si (E < 0) S = S1 ; sino S = S1 con probabilidad e E T finsi; t = t+1; T = (t,T); finmientras; devuelve S; Fin.
Figura 17. Esquema de un algoritmo de temple simulado

El principal inconveniente que presenta este mtodo es que requiere un ajuste de parmetros adecuado. Normalmente, este ajuste depende fuertemente del problema y hay que realizarlo de forma experimental. No obstante, el temple simulado es un mtodo que resulta eficiente en muchos problemas.

9.6.3.

Bsqueda tab

La diferencia esencial de la bsqueda tab con respecto a los mtodos anteriores es que dispone un mecanismo de memoria. Este mecanismo se utiliza para evitar la generacin de algunos vecinos dependiendo de la historia reciente, o de la frecuencia con la que se realizaron algunas transformaciones para llegar al estado actual. Por ejemplo, si la regla de vecindad es simtrica, y se genera x como vecino de y, suele ser buena idea recordarlo y no generar y inmediatamente a partir de x. En el caso ms simple, el mecanismo de memoria se realiza mediante una estructura H que registra las transformaciones que dieron lugar a las ltimas soluciones, de modo que estas transformaciones no se consideran en la generacin de los vecinos de la solucin actual, es decir se consideran tab. Por ejemplo, en una instancia del problema TSP con 6 ciudades A, B, C, D, E y F, siendo A la ciudad de partida, si la solucin actual viene dada por la permutacin de las ciudades (C D B F E) y las tres ltimas transformaciones realizadas fueron los intercambios (B,C), (B,D) y (E,F), la estructura H puede ser una lista tab de tamao 3 cuyo contenido actual es ((E,F) (B,D) (B,C)). De este modo al generar los vecinos del estado (C D B F E), no se consideran los estados correspondientes a las transformaciones que indica la lista tab, es decir (C D B E F) y (C B D F E). El tamao de la lista tab debe ajustarse en funcin de las caractersticas del problema. En algunos casos, es posible que un movimiento de la lista tab produzca en la solucin actual una mejora muy grande. Por ejemplo, en el caso anterior el intercambio (B,D)

Tcnicas Basadas en Bsquedas Heursticas 37/40

podra estar en esta situacin. Por este motivo se introduce lo que se denomina criterio de aspiracin y que consiste en establecer excepciones a lo que indica la lista tab, concretamente lo que se suele hacer es que si un movimiento tab produce una solucin que mejora a la mejor solucin encontrada hasta el momento, este movimiento se aplica como si no estuviese en la lista. Al igual que el mtodo anterior, el principal inconveniente de la bsqueda tab es el ajuste de parmetros, como el tamao de la lista tab, y la eleccin de los movimientos que se deben registrar y la definicin del criterio de aspiracin. Tambin como en el caso del temple simulado, la bsqueda tab se ha utilizado con xito en muchos problemas, en particular cuando se combina con otras estrategias como por ejemplo los algoritmos evolutivos.

9.7. Conclusiones
En este captulo hemos visto tcnicas que permiten introducir conocimiento especfico sobre el dominio del problema en los algoritmos de bsqueda. Nos hemos centrado en los mtodos ms generales, como la bsqueda en espacios de estados y los algoritmos de mejora iterativa, y hemos visto cmo aplicar estos mtodos a problemas formales. No obstante, todos estos mtodos tienen aplicacin a numerosos problemas reales que se presentan en muchos sectores de la sociedad. Cada vez se plantean problemas ms complejos y de mayor tamao que requieren de la aplicacin de nuevos mtodos de bsqueda en los que el conocimiento juega un papel fundamental para llegar a soluciones satisfactorias. Lgicamente, existen otros mtodos de resolucin de problemas que no se han descrito en el captulo, algunos de los cuales se describen en captulos posteriores, como por ejemplo los mtodos especficos de resolucin de problemas de satisfaccin restricciones que se tratan en el captulo 8, o la computacin evolutiva que se trata en el captulo 9. Tampoco hemos tratado aqu los mtodos de bsqueda en juegos con adversario, como el mtodo minimax y el procedimiento de poda alfa-beta asociado, por tratarse de mtodos de aplicacin ms restringida. Este tipo de sistemas de bsqueda se tratan con profundidad en otros textos como el de J. Pearl (Pearl, 1984, Parte III ) o el de S. Russel y P. Norving (Russel, 2003, Captulo 5). Incluso, dentro del paradigma de bsqueda en espacios de estados, hay en la literatura otras propuestas que han demostrado ser eficientes en muchos problemas. Por ejemplo los mtodos de bsqueda con discrepancia limitada (LDS) que se basan en considerar que el heurstico hace una buena eleccin un porcentaje alto de veces. En consecuencia, realizan una bsqueda visitando en primer lugar la rama del rbol correspondiente a la primera eleccin del heurstico, es decir la rama sin discrepancias heursticas; a continuacin consideran las ramas con una sola discrepancia, y as sucesivamente. Algunas de estas propuestas se pueden ver en el artculo de P. Meseguer y T. Walsh (Meseguer, P. y Walsh, T., 1998). Recientemente se ha acuado el trmino metaheurstica para hacer referencia a tcnicas generales de diseo de algoritmos heursticos. Los mtodos de bsqueda en espacios de estados, la bsqueda local y la computacin evolutiva son un caso particular de metaheursticas. No obstante, existen otras que no se han tratado aqu, pero que tambin son muy interesantes, como los algoritmos GRASP o la bsqueda dispersa. En el nmero 19 de la Revista Iberoamericana de Inteligencia Artificial, del ao 2003, editada por la Asociacin Espaola para la Inteligencia Artificial (AEPIA), se incluye una monografa sobre metaheursticas que ofrece una visin global sobre estas tcnicas. Tambin, el texto de Z. Michalewicz y D. B. Fogel (Michalewicz, 2000) trata con

Tcnicas Basadas en Bsquedas Heursticas 38/40

profundidad varias de estas tcnicas, as como otros mtodos de resolucin de problemas basados en tcnicas de programacin lineal. Adems este texto trata de dar un gua sobre como distinguir si una determinada tcnica es aplicable a un tipo de problemas o no lo es; aunque, evidentemente, sta es una capacidad que solamente se adquiere con la experiencia. En la seccin siguiente proponemos algunos ejercicios sobre aspectos formales de los algoritmos y la aplicacin de los mismos a otros problemas. El lector interesado puede encontrar tambin un gran nmero de problemas resueltos en el texto de S. Fernandez, J. Gonzlez y J. Mira (Fernndez, S. 1998).

9.8. Ejercicios
9.8.1 Probar que si A* utiliza un heurstico montono, entonces la secuencia de valores de f(n) para los nodos expandidos es no decreciente. 9.8.2 Probar que si h1 y h2 son dos heursticos montonos, entonces el heurstico h definido como h(n) = Maximo(h1(n), h2(n)), para todo n, tambin es montono. 9.8.3 Probar que el algoritmo de ramificacin y poda de la seccin 8.5 devuelve una cota inferior de la instancia del problema cuando termina sin encontrar una solucin ptima. 9.8.4 Definir heursticos, mediante el mtodo de relajacin del problema, para los siguientes problemas: el problema de los misioneros y los canbales, el problema de generacin de planes de actuacin de robots, el problema QAP y el problema LDMST. 9.8.5 Probar que el algoritmo IDA* es admisible si la funcin h que utiliza es admisible, y que si se aade un factor al actualizar el valor siguiente de la cota, entonces es admisible. 9.8.6 A partir de los datos del grafo de la Figura 18, tomado del texto de S. Russel y P. Norving (Russel, 2003), determinar si el heurstico h es admisible y montono. A partir de las propiedades del heurstico y de las condiciones, necesaria y suficiente, de expansin, indicar qu nodos se expandirn con seguridad si aplicamos el algoritmo A*, cules no se expandirn con seguridad, y cules se pueden expandir o no dependiendo de la forma en que se resuelvan los empates en el valor de la funcin f. Hacer lo mismo suponiendo que se utiliza el heurstico h(n)=0, para todo n.
12 10

A
8

B
5 10 10 8 2 8 0

G
5 16

C
10

D
5 10 0

I
0

E
5

F
Figura 18

J
0

K
5

9.8.7 Aplicar los algoritmos A*, IDA* y SMA* al ejemplo de la Figura 18 en la que se muestra el espacio de bsqueda y el valor del heurstico h para cada uno de los nodos.

Tcnicas Basadas en Bsquedas Heursticas 39/40

Los nodos contenidos en un cuadro son objetivos. En el caso del algoritmo SMA*, considrese al menos dos posibilidades para el tamao de ABIERTA: 3 y 4 nodos. 9.8.8 Hacer lo mismo que en el ejercicio anterior, pero considerando el heurstico trivial, es decir h(n)=0, para todo n. 9.8.9 Disear una versin recursiva del algoritmo de ramificacin y poda de la Figura 15. 9.8.10 Considrese ahora un algoritmo voraz obtenido a partir de un algoritmo A* sin ms que elegir en cada expansin solamente el sucesor con menor valor de f, resolviendo los empates de forma aleatoria, Cul es el resultado de la aplicacin de este algoritmo al problema de la Figura 18? Si en lugar de quedarse con el nodo de menor f, el algoritmo elige de forma aleatoria con una distribucin de probabilidad de modo que cada sucesor tiene una probabilidad inversamente proporcional al valor de f, Cul es la probabilidad de que el algoritmo voraz encuentre la solucin ptima?

Referencias
Brucker, P. (2004). Scheduling Algorithms. Fourth Edition. Springer. Fernndez, S., Gonzlez, J., y Mira, J. (1998). Problemas resueltos de Inteligencia Artificial. AddisonWesley. Korf, R. (1985). Depth-First Iterative Deepening: An Optimal Admissible Tree Search Algorithm. Artificial Intelligence, 27, pp. 97-109. Meseguer, P. and Walsh, T. (1998) Interleaved and Discrepancy Based Search. Proceedings of the 13th European Conference on Artificial Intelligence, ECAI-98 Brighton, UK, 239-243, 1998. Nilsson, N. J. (2001). Inteligencia Artificial: Una Nueva Sntesis. Madrid: McGraw-Hill. Pearl, J. (1984). Heuristics. Intelligent Search Strategies for Computer Problem Solving. Massachusests: Addison Wesley. Pohl, I. (1973) The avoidance of relative catastrophe, heuristic competence, genuine dynamic weighting and computational issues in heuristic problem solving. Proc. IJCAI 3, Standford, pp. 20-23. Dechther, R. and J. Pearl (1985). Generalized best first search strategies and the optimality of A*. Journal of the Association for Computing Machinery, 32(3), pp. 505-536. Michalewick, Z. Fogel D. B. How to Solve It: Modern Heuristics. Springer, 2000. Russell, S. y Norvig, P. (2003). Artificial Intelligence. A modern approach. 2d edition, US: Prentice-Hall Int. Russell, S. (1992) Efficient memory-bounded search methods. ECAI 92: Proceedings of the 10th European Conference on Artificial Intelligence, pp. 1-5. Vienna, 1992.

Tcnicas Basadas en Bsquedas Heursticas 40/40