Inteligencia Artificial Búsqueda Heurística (2ª parte) Ingeniería Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani –1– Inteligencia Artificial 4º Ing. Sup. Inf Tema 2: Agentes basados en Búsqueda Resumen: 2. Agentes basados en búsqueda 2.1. Búsqueda en espacios de estados 2.2 Búsqueda no-informada 2.3. Búsqueda heurística 2.4. Búsqueda multiagente 2.5. Búsqueda con espacios estructurados –2– Inteligencia Artificial 4º Ing. Sup. Inf Búsqueda heurística Funciones heurísticas: • h *(n): estimación del coste real del plan (camino) de mínimo coste que lleva de n a un nodo meta • f *(n) = g(n)+h*(n): estimación del coste real del plan (camino) de mínimo coste que lleva del estado inicial a un nodo meta pasando por n Algoritmo A* : • entre las hojas del árbol de búsqueda, elegir el nodo de valor f * mínimo • óptimo para funciones heurísticas h * consistentes Problema : • ¿ Es óptimo también para funciones heurísticas h * optimistas ? • ¿ Cuales son las condiciones para que el algoritmo A* sea completo ? –3– Inteligencia Artificial 4º Ing. Sup. Inf Cota de f * con función heurística optimista Lema 2: Sea camino_a(nm) el conjunto de nodos en el camino desde la raíz a un un nodo meta nm cualquiera. Si h* es optimista, entonces para todos los nodos nj∈camino_a (nm) se verifica que f *(nj ) ≤ f *(nm ) Prueba: f*(nm) = g(nm)+h*(nm) = g(nm) (dado que h* es optimista) = c(ni,n2)+...+c(nj-1,nj)+c(nj,nj+1)+...+c(nm-1,nm) (definición de g) f*(nm) ≥ c(n1,n2)+...+c(nj-1,nj)+h(nj) (definición de h) f*(nm) ≥ c(n1,n2)+...+c(nj-1,nj)+h*(nj) (dado que h* es optimista) f*(nm) ≥ g(nj)+h*(nj) (definición de g y f *) f*(nm) ≥ f*(nj). –4– Inteligencia Artificial 4º Ing. Sup. Inf Valores de f * en árboles de búsqueda A* f* f* (a) variable f *(nj) (b) acotado por f *(nm) f *(nm) n1 nj h* optimista (nodos cualesquiera) f* (c) monótono creciente f *(nj) n1 h* optimista (nodos meta) nj nj n1 h* consistente Corolario 2: Sea nm el mejor nodo meta, y camino_a(ni) el conjunto de nodos nj en el camino desde la raíz a un nodo ni cualquiera (ni incluido). Si h* es optimista, entonces el algoritmo A * expande todos los nodos ni tal que ∀nj ∈camino_a (ni). f *(nj ) ≤ f *(nm ) –5– Inteligencia Artificial 4º Ing. Sup. Inf Optimalidad de A* Teorema 1: Si h* es optimista, entonces el método A* es óptimo Prueba: Sean nm1 y nm2 dos nodos meta cualesquiera distintos, y nm1 el nodo meta de menor coste (es decir: g(nm1)<g(nm2)). 1. f*(nm1) = g(nm1)+h*(nm1) =g(nm1)+0 y f*(nm2) = g(nm2)+h*(nm2) =g(nm2)+0 Con la suposición se sigue que f*(nm1) < f*(nm2) (por las definiciones de f* y g y dado que h* es optimista) 2. Supongamos que nm2 se encuentra antes que nm1. Puesto que el algoritmo A* expande los nodos del árbol por valores crecientes de f *, debe existir un nodo ni ∈ camino_a(nm1) tal que f*(nm2) ≤ f*(ni) . 3. Pero por el lema 2 y (1) sabemos que ∀ nj ∈ camino_a(nm1). f*(nj) ≤ f*(nm1) < f*(nm2). Contradicción (no puede existir el nodo ni de (2)) 4. Por tanto, para cualesquiera dos nodos meta, A* encuentra el de menor coste antes, lo que implica que es óptimo. –6– Inteligencia Artificial 4º Ing. Sup. Inf Completitud de A* Teorema 2: El método A* es completo Prueba: • sea nm un nodo meta y camino_a(nm) el conjunto de nodos en el camino de la raíz a nm. Suponga que nm no es encontrado por el método A* – ya que el número de sucesores de un nodo es finito, debe haber un camino infinito p, tal que se expanden todos los nodos ni de p antes de nm – la secuencia de valores de g a lo largo de p aumenta estrictamente (el coste de los operadores es > 0) y dado que por definición h *(n) ≥ 0, existe algún nk en p con f * (nk ) = g (nk ) + h* (nk ) > [ f * (n j )] max n j ∈ca min o _ a ( nm ) – el algoritmo expande los nodos sucesivamente por valores de f * crecientes, por lo que todos los nodos en el camino a nm (incluido nm) son expandidos antes que el nodo nk • contradicción; en consecuencia, el método A* encuentra el nodo meta ng –7– Inteligencia Artificial 4º Ing. Sup. Inf Encontrar Funciones Heurísticas: Aprendizaje Idea: generar información heurística sobre la marcha • realizar varias búsquedas (ligeramente diferentes) en el mismo dominio (p.e. siempre a Bucarest, pero desde diferentes ciudades iniciales) • En cada paso de una búsqueda, usar el coste real de un paso parar mejorar el valor de h* • En la próxima búsqueda se utilizan los valores de h* actualizadas Método: • Inicialmente, se realiza una búsqueda con h*(n) = 0 para todos los nodos n * • En cada paso de ni a nj: h (ni ) ← min n j ∈expandir ( ni ) [h (n ) + c(n , n )] * j i j • Al visitar un nodo por segunda vez, se utilizan los valores de h* actualizadas Problema: • Hay que almacenar los valores h* de todos los nodos en una tabla (memoria!) –8– Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: A* con Aprendizaje de una Función Heurística A 140 S 75 118 fL * = 140+0 = 140 fL * = 118+0 = 118 80 151 140 R fL*=220+0 =220 80 S +75 fL*= 291 +0 +142 = 355 = 433 291 97 fL*=300 +80 =380 Z 75 71 A Ff * = 239+0 L L fL * = 75+0 = 75 118 111 99 AfL*= 280O Ejemplo: ir de A a L Inicialmente hL*(n) = 0 para todo nodo n fL * = 0+0 =0 fL *=229+0 fL =229 =311 = 239 71 146 P O *=236+75 Z fL*=317 fL*=366 C +0 +0 =317 =366 fL*=217 +71 =288 fL*=146+0 fL * = 150+75 = 146 A = 225 140 151 S fL*=297 +80 =377 S 118 75 fL*=290 fL*=225 fL*=268 +80 Z +71 T +111 =370 =296 =379 n A B C D E F G H I L M N O P R U V Z hL* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97 80 111 0 0 75 146 142 –9– S T 71 Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: A* con Aprendizaje de una Función Heurística Ejemplo: ir de Z a L Inicialmente hL*(n) aprendido anteriormente fL * = 0+71 = 71 Z 71 75 A fL * = 75+146 = 221 140 S 80 R fL*=295+97 =392 140 A fL * = 71+142 = 213 75 118 fL * = 215+80 = 295 Z F fL*= 355 fL*= 366 fL* = 314+0 = 314 +220 +231 = 575 = 597 fL*=142 +213 =355 118 111 151 151 71 fL * = 193+111 Z fL * ==150+213 = 304 363 99 O O L A S *=222 ffLL*=222 +99 +80 =321 =302 fL *=304+0 fL *=311+220 =304 =531 n A B C D E F G H I L M N O P R S hL* 146 0 0 0 0 0 0 0 0 0 0 0 80 111 220 0 142 231 – 10 – 97 T 99 111 U V Z 0 0 71 213 Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: A* con Aprendizaje de una Función Heurística Ejemplo: ir de A a L Inicialmente hL*(n) aprendido anteriormente A fL * = 0+220 = 220 140 75 118 S fL * = 140+99 = 239 fL * = 118+111 fL * = 75+213 Z = 229 = 288 118 111 L A fL *=229+0 fL *=236+229 =229 =465 n A B C D E F G H I L M N O P R S hL* 220 0 0 0 0 0 0 0 0 0 0 0 99 111 229 0 231 97 T U V Z 0 0 213 111 – 11 – Inteligencia Artificial 4º Ing. Sup. Inf Encontrar de Funciones Heurísticas: Diseño El problema del 8-puzzle: Estado inicial • Estados: – posición de cada una de las piezas • Operadores: – mover pieza adyacente a la posición del hueco – de 2 a 4 operadores aplicables, según el estado 2 7 3 1 8 4 6 Estado meta 1 • Coste: – La aplicación de cada operador vale una unidad – 12 – 5 2 8 7 3 4 6 5 Inteligencia Artificial 4º Ing. Sup. Inf Encontrar de Funciones Heurísticas: Diseño Estado inicial 2 7 3 1 8 4 6 5 Estado meta 1 2 3 • Problemas relajados: – menos restricciones para cada operador – h*: distancia h exacta en el problema relajado • 8 Puzzle: una pieza puede moverse de A a B... a) siempre b) si B está vació c) si A es adyacente a B • Funciones heurísticas: a) número de piezas descolocadas – ha*(s0) = 5 8 7 4 6 5 b) suma de saltos necesarios – hb*(s0) = 5 c) suma de las distancias de Manhattan – hc*(s0) = 1+1+1+3+1=7 – 13 – Inteligencia Artificial 4º Ing. Sup. Inf Calidad de las Funciones Heurísticas Definición: Sean h1* y h2* dos funciones heurísticas optimistas. h1* es más informada que h2*, si para todo nodo n se cumple que h1*(n ) ≥ h2*(n ) Ejemplo: • en el 8-puzzle, hc* es más informada que ha* – las piezas bien colocadas no cuenta en ha* ni en hc* – la distancia Manhattan de cada pieza descolocada es al menos 1 – en consecuencia, en toda posible configuración n del 8-puzzle la suma de las distancias es igual o mayor que la suma de piezas descolocadas – para todas las configuraciones n se cumple hc*(n ) ≥ ha*(n ) – 14 – Inteligencia Artificial 4º Ing. Sup. Inf Calidad de las Funciones Heurísticas Teorema: Sean h1* y h2* dos funciones heurísticas optimistas. Si h1* es más informada que h2*, entonces A*(h2* ) expande al menos tantos nodos como A*(h1* ) Prueba: ! 1. Para el mejor nodo meta nm se cumple que f *(nm) = f1*(nm) = f2*(nm) 2. Ya que h1* es más informada que h2*, para todos los nodos n se cumple que h1*(n ) ≥ h2*(n ), y por tanto f1*(n ) ≥ f2*(n ) 3. Por (1) y el corolario 2 se sigue que – – A*(h1* ) expande todos los nodos ni tal que ∀nj ∈camino_a(ni). f1*(nj ) ≤ f *(nm ) A*(h2* ) expande todos los nodos ni tal que ∀nj ∈camino_a(ni). f2*(nj ) ≤ f *(nm ) 4. Por (2), se verifica que f1*(nj ) ≤ f *(nm ) → f2*(nj ) ≤ f *(nm ) 5. Por (3) y (4) se concluye que cualquier nodo expandido por A*(h1*) también será expandido por A*(h2* ) Conclusión: • preferir grandes valores de h*, siempre que se mantenga optimista • si hay varias funciones heurísticas optimistas: h* (n) = max h1* (n), h2* (n),…, hm* (n) ( ) – 15 – Inteligencia Artificial 4º Ing. Sup. Inf Complejidad de A* El número de nodos expandidos por A* depende de la precisión de h*: • si h*(n) = h(n) para todos los nodos n: – información completa: complejidad lineal (sin contar la complejidad de computar h*!) – calcular h*(n) suele equivaler a resolver el problema completo • si h*(n) = 0 para todos los nodos n: – A* degenera a la búsqueda de coste uniforme • resultados generales (véase [Russell y Norvig, 2003]): – en el peor caso, A* es lineal sólo si para todos los nodos n, | h (n) – h*(n) | ≤ O(c) – en el peor caso, A* es polinomial sólo si para todos los nodos n, | h (n) – h*(n) | ≤ O(log h(n)) – en escenarios reales, el error heurístico |h (n) – h*(n) | crece, al menos, de forma proporcional al coste h (n) – aún así, suele haber una mejora notable en comparación con métodos no informados – 16 – Inteligencia Artificial 4º Ing. Sup. Inf Resultados experimentales Comparación experimental: • número de nodos expandidos en el problema del 8-puzzle • varias profundidades d de la solución • media sobre 100 instancias del problema d prof. iterativa 2 4 6 8 10 12 14 16 18 20 22 24 10 112 680 6.384 47.127 3.644.035 — — — — — — A*(ha) 6 13 20 39 93 227 539 1.301 3.056 7.276 18.094 39.135 – 17 – A*(hc) 6 12 18 25 39 73 113 211 363 676 1.219 1.641 Inteligencia Artificial 4º Ing. Sup. Inf Mejoras de A* Mejoras respetando la optimalidad: • atacar el problema de la complejidad en memoria de A* • transferir ideas de la búsqueda de profundización iterativa, equilibrando expansión repetida de nodos y almacenamiento de nodos en memoria – Korf (1985): IDA* (Iterative Deepening A* ) [Russell y Norvig (1ª ed.), Nilsson, pág.138] – Russell (1992): SMA* (Simplified Memory-bounded A* ) [Russell y Norvig, pág.104] – Korf (1992): RBFS (Recursive Best First Search) [Nilsson, pág.139; Russell y Norvig, págs.101-103] – 18 – Inteligencia Artificial 4º Ing. Sup. Inf Mejoras de A* Mejoras usando heurísticas fuertes: • idea: acotar el espacio de búsqueda con información heurística • búsqueda guiada por subobjetivos (island-driven search): – elegir estados (subobjetivos, islas ) i1,…,in por los que se supone que una solución ha de pasar (p.e. puertos) – realizar búsquedas A* del estado inicial n0 a i1, de i1 a i2,…, y de in a la meta ng • búsqueda jerárquica: – macro-operadores representan acciones complejas y ficticias (p.e. ir de puerto a puerto ) – realizar búsqueda A* a meta-nivel con macro-operadores: los estados de la solución son los subobjetivos – refinar la solución anterior en base a la búsqueda guiada por subobjetivos – 19 – Inteligencia Artificial 4º Ing. Sup. Inf Búsqueda en línea Búsqueda en línea (online search): • engranar búsqueda (elección de acciones) y acción/percepción • necesario cuando: – el espacio de búsqueda es demasiado grande para buscar hasta la solución (y no se puede aplicar las técnicas anteriores) – no es realista usar un modelo determinista de los efectos de acciones • por frecuentes contingencias (p.e.: a veces el brazo deja caer un bloque) • porque no se dispone de un modelo del entorno (p.e.: un mapa ) • medida de eficiencia: – en general, no se puede asegurar optimalidad ni completitud del camino real del agente – minimizar el índice competitivo = CosteCoste del camino óptimo – el índice competitivo puede ser infinito, particularmente cuando hay acciones que no son reversibles – 20 – Inteligencia Artificial 4º Ing. Sup. Inf Búsqueda con horizonte Búsqueda con horizonte (limited-horizon search): • Idea subyacente: – la primera acción de un plan que lleva a un nodo con una evaluación heurística óptima, tiene una buena probabilidad de pertenecer al camino (óptimo) al objetivo • Algoritmo: – Percibir el estado actual s – Aplicar búsqueda en profundidad limitada por el nivel k y nodos metas. Sea H el conjunto de hojas del árbol de búsqueda correspondiente. – Determinar el nodo hoja n* de menor valor de f *: n* ← arg min f * (n) n∈H – Ejecutar la primera acción a* en el camino que lleva a n* – Repetir hasta que el agente se encuentra en un estado meta [ ] • Optimización mediante podas α (para h* consistente) – Sea H el conjunto de hojas del árbol de búsqueda desarrollado hasta el momento. Mantener un valor de corte α tal que α ← min[ f * (n)] n∈H ʹ′ – Abandonar cualquier rama a partir de un nodo n con f *(n) > α – 21 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Búsqueda con horizonte estado actual s = A horizonte k = 3 filtrando ciclos simples A S F f* = = 393 O f * = 0+366 = 366 140+253 T f * = 118+329 = 447 Z f * = 75+374 = 449 f * = 220+193 = 413 R f * = 239+178 f * = 291+380 = 417 = 671 k=3 α = 413 – 22 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Búsqueda con horizonte estado actual s = S horizonte k = 3 filtrando ciclos simples A T f * = 140+366 = 506 f * = 258+329 = 587 Z f * = 215+374 = 589 S F f * = 0+253 = 253 f * = 99+178 = 277 O f * = 151+380 = 531 C B R f * = 226+160 = 386 f * = 80+193 = 273 P f * = 177+98 = 275 f * = 310+0 = 310 k=3 α = 587 α = 310 – 23 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Búsqueda con horizonte estado actual s = R horizonte k = 3 filtrando ciclos simples R C D f* = = 306 f * = 0+193 = 193 146+160 P P f * = 266+242 f * = 284+98 = 508 = 382 f * = 97+98 = 195 B f *= 198+0 = 198 S f * = 80+253 = 333 C f * = 235+160 = 395 k=3 α = 382 α = 198 – 24 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Búsqueda con horizonte estado actual s = R horizonte k = 3 filtrando ciclos simples P B f* = 101+0 = 101 f * = 0+98 = 98 C f * = 138+160 = 298 R f * = 97+193 = 290 k=3 – 25 – Inteligencia Artificial 4º Ing. Sup. Inf Ejercicio 4.1 Estado inicial 1 2 6 4 8 7 3 5 Estado meta 1 2 8 7 3 4 6 5 Heurísticas A* : Considere el 8-puzzle cuyo estado inicial y estado meta se muestran al lado: a)desarrolle el árbol de búsqueda del algoritmo A* usando la heurística ha* (número de piezas descolocadas) b)desarrolle el árbol de búsqueda del algoritmo A* usando la heurística hc* (suma de distancias Manhattan) c)¿Cuál de las heurística expande menos nodos? ¿Por qué? ¿Puede sacar una conclusión general con respecto a la calidad de la funciones heurísticas? – 26 – Inteligencia Artificial 4º Ing. Sup. Inf