7. Búsqueda informada - Incorporando...

Info iconThis preview shows pages 1–5. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Incorporando el Costo Incurrido como Factor de Decisi´n o Para encontrar soluciones ´ptimas, es necesario incorporar el costo o para llegar a cada nodo del espacio de b´squeda. u El costo incurrido para llegar desde la ra´ (estado inicial) hasta un ız nodo n se denotar´ como g (n). As´ el costo total estimado para a ı, llegar a una soluci´n que atraviese un nodo n estar´ dada por: o a f (n ) = g (n ) + h (n ). El valor de f (n) se divide en g (n), que es el costo que se incurre al llegar de la ra´ del ´rbol al nodo n, m´s h(n) que es la funci´n ız a a o heur´ ıstica. Una estrategia de b´squeda que incorpore el costo incurrido como u factor de decisi´n, utilizar´ la funci´n f para elegir el nodo m´s o a o a promisorio. Jorge Baier (DCC-PUC) Intro a Prolog 1 / 24 Best-First Search I El tipo de b´squeda que se obtiene utilizando este algoritmo se u conoce como el mejor primero (best-first search). El funcionamiento del algoritmo es similar a BFS o DFS, pero en todo momento se mantiene una frontera de b´squeda, en la cual la funci´n u o de mezcla es una ordenaci´n de los nodos por orden de menor a o mayor valor de f . Adem´s se mantiene una lista de cerrados, que contiene a los nodos a ya visitados. Un sucesor de un nodo puede ser agregado a la frontera s´lo si no o est´ en la lista de cerrados o, si est´ y se lleg´ a ´l con un mayor valor a a oe de f . Jorge Baier (DCC-PUC) Intro a Prolog 2 / 24 El pseudo c´digo del algoritmo de el mejor primero: o Funci´n buscar_a(lista abiertos, lista cerrados, o boolean funci´n es_objetivo, o float funci´n f(nodo), o lista_estados funci´n mezcla_ord(lista_estados, o lista_estados, float funcion (nodo), lista_estados funci´n sucesores(lista_estados)); o { Aux = extract-min(abiertos); while (not es_objetivo(Aux)) { if not member_menor_igual((Aux,f(Aux)),cerrados) { cerrados = insert((Aux,f(Aux)),cerrados); abiertos = insert(abiertos,cerrados, sucesores(Aux),f); } Aux = extract-min(abiertos); } retornar(Aux); } Jorge Baier (DCC-PUC) Intro a Prolog 3 / 24 Best-First (cont.) La funci´n extract-min extrae desde su argumento el elemento con o menor valor f. Los par´metros usados son los mismos que en la b´squeda sin a u repetici´n de estados y f es una funci´n que recibe un nodo como o o par´metro y retorna la funci´n de estimaci´n de costo para el nodo. a o o Por otro lado, la funci´n member_menor_igual, dado un estado y su o valor-f , y la lista de cerrados, retorna verdadero si el estado est´ en la a lista de cerrados con un valor f menor o igual al proporcionado como argumento. Hasta ahora, no hemos analizado las propiedades de optimalidad de estos algoritmos. Jorge Baier (DCC-PUC) Intro a Prolog 4 / 24 A∗ : B´squeda best-first optima u ´ Veremos a continuaci´n qu´ propiedades debe cumplir la funci´n h o e o para que la estrategia de b´squeda A sea ´ptima. u o Una estimaci´n de costo para llegar a una soluci´n desde un nodo o o cualquiera es optimista si menor o igual que el costo real para llegar a la soluci´n. o Si h es una funci´n que estima siempre en forma optimista el costo o para llegar a una soluci´n diremos que h es admisible. o Cuando el algoritmo A utiliza como funci´n heur´ o ıstica una funci´n h o admisible, entonces el algoritmo resultante recibe el nombre de A∗ (A estrella). En el ejemplo del mapa, la heur´ ıstica que considera la distancia en l´ ınea recta como estimaci´n del costo m´ o ınimo es admisible, porque siempre subestima el costo m´ ınimo a para llegar a la soluci´n. o Jorge Baier (DCC-PUC) Intro a Prolog 5 / 24 Optimalidad de A∗ Para que la propiedad de optimalidad se satisfaga, debemos suponer que las siguientes propiedades se cumplen: 1 2 3 4 El factor de ramificaci´n es finito. o Los costos de los arcos son siempre positivos. Es decir, si n￿ es sucesor de n, entonces g (n￿ ) − g (n) > 0. h(n) subestima al costo real m´ ınimo (h∗ (n)) en el que se incurre para llegar desde n a un nodo objetivo. Es decir h(n) ≤ h∗ (n). h(n) ≥ 0, para todo n. Theorem Bajo las condiciones anteriores, A∗ siempre se detiene encontrando una soluci´n ´ptima. oo Demostraci´n: Pizarra. o Jorge Baier (DCC-PUC) Intro a Prolog 6 / 24 Heur´ ısticas Mon´tonas o Definition Una heur´ ıstica h(n) es mon´tona o consistente ssi: o h (n ) − h (n ￿ ) ≤ c (n , n ￿ ), , donde n￿ is un successor de n y c (n￿ , n) representa el costo de moverse de n a n￿ . Theorem Cuando h(·) es mon´tona, A∗ expande cada nodo por un camino ´ptimo. o o Jorge Baier (DCC-PUC) Intro a Prolog 7 / 24 Busqueda A: Un experimento I ´ Reconsideremos el ejemplo del robot que desea ir desde el punto A al punto B , pero supongamos que ahora es posible que el agente se mueva hacia el cuadrado m´s cercano avanzando en diagonal. a Es posible modelar este problema a trav´s del siguiente programa: e :- consult(’busquedaA.pl’). resulta(p(X,Y),rt,p(X2,Y)) :- X2 resulta(p(X,Y),lt,p(X2,Y)) :- X2 resulta(p(X,Y),dn,p(X,Y2)) :- Y2 resulta(p(X,Y),up,p(X,Y2)) :- Y2 resulta(p(X,Y),lu,p(X2,Y2)) :Y2 is Y+1, X2 is X-1. resulta(p(X,Y),ld,p(X2,Y2)) :Y2 is Y-1, X2 is X-1. resulta(p(X,Y),ru,p(X2,Y2)) :Y2 is Y+1, X2 is X+1. resulta(p(X,Y),ld,p(X2,Y2)) :Y2 is Y-1, X2 is X+1. is is is is X+1. X-1. Y-1. Y+1. legal(p(X,Y)) :X=<30,X>=1, Jorge Baier (DCC-PUC) Intro a Prolog 8 / 24 Busqueda A: Un experimento II ´ Y=<30,Y>=1, \+ obstaculo(p(X,Y)). final(p(19,18)). inicial(p(1,1)). obstaculo(p(X,Y)) :X>=5,X=<6, Y>=4,Y=<8. obstaculo(p(X,Y)) :X>=3,X=<4, Y>=7,Y=<8. obstaculo(p(X,Y)) :X>=13,X=<18, Y>=3,Y=<6. obstaculo(p(X,Y)) :X>=8,X=<13, Y>=11,Y=<14. obstaculo(p(X,Y)) :X>=10,X=<17, Y>=9,Y=<17. costo([P|Hist],C) :member(P,[lt,rt,up,dn]), Jorge Baier (DCC-PUC) Intro a Prolog 9 / 24 Busqueda A: Un experimento III ´ costo(Hist,Cp), C is Cp+1. costo([P|Hist],C) :member(P,[lu,ru,ld,rd]), costo(Hist,Cp), C is Cp+sqrt(2). costo(,0). costo_a([p(X,Y),Hist],EstCost) :costo(Hist,G), final(p(X2,Y2)), H is sqrt((X-X2)^2+(Y-Y2)^2), EstCost is G*1.5+H. costo_bfs([p(_,_),Hist],EstCost) :costo(Hist,G), EstCost is G*1.5. costo_greed([p(X,Y),_],EstCost) :final(p(X2,Y2)), H is sqrt((X-X2)^2+(Y-Y2)^2), EstCost = H. sucesores([Estado,Hist],Sucesores,F) :findall([Est2,Hist2,EstCost], ( Jorge Baier (DCC-PUC) Intro a Prolog 10 / 24 Busqueda A: Un experimento IV ´ resulta(Estado,X,Est2), legal(Est2), append(Hist,[X],Hist2), Funct=..[F,[Est2,Hist2],EstCost], call(Funct) ), Sucesores). Jorge Baier (DCC-PUC) Intro a Prolog 11 / 24 Busqueda A: Un experimento V ´ Las siguientes consultas muestran c´mo se comporta el algoritmo A o ∗ ), f = g (BFS) y f = h (greedy). cuando se considera f = g + h (A ?- time(buscarA([[p(2,2),,0]],,[R,H],final,mezclaA,sucesores,costo_a)). Plan: [rt, rt, rt, rt, rt, rt, ru, ru, ru, ru, ru, rt, rt, rt, ru, ru, ru, up, up, up, up, up, up, up, up] Largo Plan: 25 Frontera: 342 Cerrados: 265 % 812,281 inferences, 0.220 CPU in 0.226 seconds (97% CPU, 3692186 Lips) R = p(19, 18), H = [rt, rt, rt, rt, rt, rt, ru, ru, ru|...]. ?- time(buscarA([[p(2,2),,0]],,[R,H],final,mezclaA,sucesores,costo_bfs)). Plan: [ru, rt, rt, rt, ru, ru, ru, ru, ru, rt, rt, rt, rt, rt, rt, ru, ru, up, up, up, up, up, up, up, up] Largo Plan: 25 Frontera: 393 Cerrados: 503 % 2,409,508 inferences, 0.710 CPU in 0.745 seconds (95% CPU, 3393673 Lips) R = p(19, 18), H = [ru, rt, rt, rt, ru, ru, ru, ru, ru|...]. ?- time(buscarA([[p(2,2),,0]],,[R,H],final,mezclaA,sucesores,costo_greed)). Plan: [ru, ru, up, up, lt, lu, up, ru, ru, ru, ru, ru, up, ru, ru, up, ru, rt, rt, rt, rt, rt, rt, rt, rt, rt] Largo Plan: 26 Frontera: 125 Cerrados: 26 Jorge Baier (DCC-PUC) Intro a Prolog 12 / 24 Busqueda A: Un experimento VI ´ % 12,274 inferences, 0.010 CPU in 0.006 seconds (159% CPU, 1227400 Lips) R = p(19, 18), H = [ru, ru, up, up, lt, lu, up, ru, ru|...]. Jorge Baier (DCC-PUC) Intro a Prolog 13 / 24 Busqueda A: Un experimento VII ´ Las rutas obtenidas se ven en el siguiente gr´fico: a B A Ruta obtenida por algoritmo greedy Ruta obtenida por los algoritmos A* y BFS Jorge Baier (DCC-PUC) Intro a Prolog 14 / 24 Encontrando Heur´ ısticas Admisibles I Consideremos el siguiente problema del puzle de 8: 2 3 186 754 Configuracion Inicial 123 8 4 765 Configuraci´n Final o Los operadores en este problema de b´squeda son ↑, ↓, ← y →. El u operador ↑ toma el azulejo que est´ debajo del espacio desocupado y a lo mueve hacia arriba. Los otros operadores funcionan de manera an´loga. a Los operadores no son siempre aplicables. Por ejemplo, en la configuraci´n del la figura anterior el operador ↓ no es aplicable. o El objetivo que se persigue es encontrar una secuencia de operadores que llevan a la siguiente configuraci´n: o Jorge Baier (DCC-PUC) Intro a Prolog 15 / 24 Restricciones del Problema En este problema, los operadores pueden aplicarse sujetos a las siguientes restricciones: 1 2 Un azulejo s´lo se puede mover a un cuadrado vecino (horizontal o o verticalmente). Un azulejo s´lo se puede mover a un cuadrado desocupado. o T´cnica para obtener heur´ e ısticas Encontrar una simplificaci´n del problema (relajaci´n) y obtener la o o heur´ ıstica resolviendo esta relajaci´n. o ¿Por qu´ esta t´cnica funciona? e e Jorge Baier (DCC-PUC) Intro a Prolog 16 / 24 Simplificando el puzle de 8: primera simplificaci´n o Supongamos que simplificamos el problema del puzzle de 8. Primera simplificaci´n: Eliminar ambas restricciones. o Costo en el problema simplificado: n´mero de azulejos en u posiciones equivocadas. En nuestro ejemplo el costo del problema simplificado es 6, dado que no hay azulejos en la posici´n correcta. o Jorge Baier (DCC-PUC) Intro a Prolog 17 / 24 Segunda Simplificaci´n: distancia Manhattan o Otra simplificaci´n: Removemos s´lo la segunda restricci´n. o o o En este caso, la heur´ ıstica que resulta es la llamada distancia de Manhattan, que resulta de calcular, para cada azulejo, el n´mero de u movidas que lo lleva a su posici´n correcta. La distancia Manhattan a o la soluci´n ser´ igual a la suma de las distancias Manhattan o a individuales. En la siguiente figura se muestra el ´rbol de b´squeda explorado con a u esta heur´ ıstica. En cada configuraci´n se especifica el valor f = g + h o que corresponde. Jorge Baier (DCC-PUC) Intro a Prolog 18 / 24 2 186 754 0+7 3 23 186 754 1+6 1+8 754 1+8 1 6 283 23 186 754 Jorge Baier (DCC-PUC) 123 86 754 2+5 123 786 54 3+6 8 3+4 123 6 754 123 86 754 4+3 123 864 12 863 754 5+4 123 864 7 6+1 123 864 75 7+2 123 8 7+0 4 765 123 864 75 7+2 5 75 5+2 123 8 4+5 6 754 Intro a Prolog 19 / 24 Cuando es mejor una heur´ ıstica que otra Manteniendo admisibilidad: Peor caso: h(n) = 0 Funciona como una b´squeda en amplitud. u Mejor caso: h(n) = h∗ (n) Nos vamos directo hacia el ´ptimo. o En la pr´ctica: Dadas dos heur´ a ısticas, la mejor es la que da el valor m´s a alto. Jorge Baier (DCC-PUC) Intro a Prolog 20 / 24 Desempe˜o en el puzle de 8 n h1 = “number of plates in the incorrect place” h2 = “sum of the manhattan distance of each plate to the correct plate” Jorge Baier (DCC-PUC) Intro a Prolog 21 / 24 Profundizaci´n Iterativa y A∗ o El algoritmo A∗ tiene caracter´ ısticas similares al algoritmo BFS. Por ejemplo, mantiene en memoria una frontera de b´squeda, la cual u crece en forma exponencial. Por esta raz´n, la cantidad de memoria utilizada puede limitar la o aplicabilidad de A∗ . Una variante del algoritmo es la profundizaci´n iterativa con A∗ o o ∗ (Iterative Deeping A∗ ). IDA∗ es similar al m´todo de IDA e profundizaci´n iterativa. Sin embargo, en vez de utilizar como punto o de corte la profundidad de la b´squeda, toma un l´ u ımite de costo como corte. Es decir, primero busca una soluci´n igual a un costo m´ o ınimo e incrementa este costo m´ ınimo en cada iteraci´n del procedimiento. o Jorge Baier (DCC-PUC) Intro a Prolog 22 / 24 IDA∗ El algoritmo es el siguiente: 1 2 Se inicializa fmax := f (n0 ). Hacemos b´squeda en profundidad, descartando a un nodo n si u f (n) ≥ fmax . Si una soluci´n es encontrada, se retorna. o En caso contrario, actualiza fmax con el m´ ınimo valor f de los nodos evaluados en el paso 2 y que excedieron el antiguo valor de fmax . Volver al paso 2. 3 4 Theorem Bajo las mismas condiciones de optimalidad de A∗ , IDA∗ siempre retorna una soluci´n ´ptima. oo Jorge Baier (DCC-PUC) Intro a Prolog 23 / 24 Otras Variantes Beam Search Como Best-first, pero s´lo un n´mero limitado de nodos es mantenido o u en la frontera. Es eficiente en memoria. No se puede dar garant´ de optimalidad. ıas Weighted A∗ Como A∗ pero f (n) = g (n) + wh(n) with w ≥ 1. Si encuentra un nodo soluci´n n, entonces g (n) ≤ wc ∗ (con c ∗ el o costo ´ptimo para llegar a una soluci´n). o o Jorge Baier (DCC-PUC) Intro a Prolog 24 / 24 ...
View Full Document

Page1 / 24

7. B&amp;Atilde;&amp;ordm;squeda informada - Incorporando...

This preview shows document pages 1 - 5. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online