Métodos de Búsqueda Informados Prof. Lic Ana María Huayna D. Búsqueda Informada (Heurística) La búsqueda heurística utiliza información adicional sobre el problema específico como el coste ó la distancia al estado final; pudiendo encontrar soluciones de una manera más eficiente. Las estrategias de búsqueda heurística se caracterizan por la tendencia a limitar el tiempo y el espacio en donde buscar la respuesta a problemas complejos. A su vez se pueden dividir en tres tipos de búsqueda: – Búsqueda preferente por lo mejor. – Búsqueda limitada por la capacidad de la memoria. – Búsquedas de mejoramiento iterativo. Búsqueda preferente por lo mejor Esta búsqueda consiste en expandir primero aquél nodo con mejor evaluación. Dicha evaluación es el resultado de aplicar la función de evaluación al nodo, la cual devuelve un número que sirve para representar lo deseable que sería la expansión de un nodo. Dentro de este tipo de búsqueda se encuentran: • • Búsqueda avara (voraz) Ó Búsqueda primero el mejor Búsqueda A*. BUSQUEDA AVARA ó Búsqueda voraz primero el mejor Greedy Search Búsqueda preferente por lo mejor Búsqueda Avara (Greedy Search) – Es una de las más sencillas estrategias en la BPPLM, que consiste en reducir al mínimo el costo estimado para lograr una meta. – En otras palabras, el nodo cuyo estado se considere más cercano a la meta en términos de costo de ruta se expande primero. – Aunque casi siempre es posible calcular el costo aproximado hasta la meta, es difícil hacerlo con precisión. Búsqueda preferente por lo mejor Búsqueda Avara (Greedy Search) – La función utilizada para dicho estimado del costo se llama función heurística, simbolizada por h. – h(n) = costo estimado de la ruta más barata que une el estado del nodo n con un estado meta. – h puede ser cualquier función. El único requisito es que h(n) = 0 cuando n es una meta. – La mejor heurística para la determinación de rutas en el mundo real es la distancia en línea recta a la meta: hDLR (n) = distancia en línea recta entre n y la meta Ejercicio Utilizar el método de búsqueda avara para solucionar el problema de Rumania. Mostrar el desarrollo con árboles de búsqueda. Búsqueda preferente por lo mejor Búsqueda Avara Arad h=366 Búsqueda preferente por lo mejor Búsqueda Avara Arad h=366 Sibiu h=253 Timisoara h=329 Zerind h=374 Búsqueda preferente por lo mejor Búsqueda Avara Arad h=366 Sibiu h=253 Arad h=366 Fagaras h=178 Timisoara h=329 Oradea h=380 Rimnicu h=193 Zerind h=374 Búsqueda preferente por lo mejor Búsqueda Avara Arad h=366 Sibiu h=253 Arad h=366 Fagaras h=178 Sibiu h=253 Timisoara h=329 Oradea h=380 Zerind h=374 Rimnicu h=193 Bucharest h=0 Es una solución, pero no es la óptima Búsqueda preferente por lo mejor Búsqueda Avara – Esta búsqueda usualmente produce resultados buenos – Tienden a producir soluciones rápidamente, aunque no siempre la solución encontrada es la óptima. – Ejemplo, tratar de llegar de Lasi a Fagaras. Búsqueda preferente por lo mejor Búsqueda Avara Iasi h=160 Búsqueda preferente por lo mejor Búsqueda Avara Iasi h=160 Neamt h=150 Vaslui h=170 Búsqueda preferente por lo mejor Búsqueda Avara Iasi h=160 Neamt h=150 Iasi h=160 Vaslui h=170 Búsqueda preferente por lo mejor Búsqueda Avara Iasi h=160 Neamt h=150 Vaslui h=170 Iasi h=160 Neamt h=150 Búsqueda preferente por lo mejor Búsqueda Avara – Se asemeja a la búsqueda preferente por profundidad, ya que se “atora” al toparse con un callejón sin salida. – Tiene sus mismas deficiencias: no es óptima, es incompleta, puede recorrer una ruta infinita. – Su complejidad es espacial es tan grande como su temporal: O(bm), donde m es la profundidad máxima del espacio de búsqueda. Una buena función heurística permite disminuir notablemente la complejidad tanto de espacio como de tiempo. Resumen (Búsqueda Avara) Consiste en reducir al mínimo el costo estimado para alcanzar una meta. Para ello se utiliza una función llamada heurística, la cual estima el costo que implica llegar a una meta desde un estado determinado, y elige cual es el siguiente nodo que se va a expandir aplicando esta función a cada nodo. – En esta búsqueda el tiempo y la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad. Pero la elección de una buena función heurística permite disminuir notablemente la complejidad tanto en tiempo como en espacio. – No es óptima ni completa. BUSQUEDA A* Búsqueda preferente por lo mejor Búsqueda A* – La búsqueda avara reduce h(n), el costo hacia la meta, pero no es óptima ni completa. – La búsqueda de costo uniforme reduce g(n), el costo de ruta, es óptima y completa, pero puede ser ineficiente. – Las dos funciones se podrían combinar mediante una suma: f(n) = g(n) + h(n) Búsqueda preferente por lo mejor Búsqueda A* – f(n) puede llamarse el costo estimado de la solución más barata, pasando por n. – Es posible demostrar que esta estrategia es completa y óptima, dada una restricción de h. – La restricción es escoger una función h que nunca sobreestime el costo que implica alcanzar la meta. Búsqueda preferente por lo mejor Búsqueda A* – A dicha función h se le llama heurística admisible. – A la búsqueda preferente por lo mejor que usa f como función de evaluación y una función h aceptable se le conoce como búsqueda A*. – En el ejemplo de Rumania, la distancia en línea recta es una heurística aceptable, ya que la ruta más corta entre dos puntos es la línea recta (por lo tanto, siempre será menor que la distancia real, nunca la sobreestimará). Búsqueda preferente por lo mejor Búsqueda A* Arad f=0+366 f=366 Búsqueda preferente por lo mejor Búsqueda A* Arad Sibiu f=140+253 f=393 Timisoara f=118+329 f= 447 Zerind f=75+374 f=449 Búsqueda preferente por lo mejor Búsqueda A* Arad Sibiu f=140+253 f=393 Arad f=280+366 f=646 Timisoara f=118+329 f= 447 Fagaras f=239+178 f=417 Oradea f=146+380 f=526 Zerind f=75+374 f=449 Rimnicu f=220+193 f=413 Búsqueda preferente por lo mejor Búsqueda A* – Se puede observar que a lo largo de las rutas originadas en la raíz, el costo f nunca disminuye. – En toda heurística donde esto ocurre, se dice que muestra monotonicidad. – Si la heurística fuera no monotónica, debe usarse la fórmula f(n’) = max f(n),g(n’) + h(n’) Donde n’ es el nodo actual y n es el padre de n’ – A esta fórmula se le llama ecuación de ruta máxima. Resumen (Búsqueda A*) Esta búsqueda es una búsqueda preferente por lo mejor en la que se utiliza f como función de evaluación. La función f calcula el costo estimado de la solución más barata, pasando por n y se calcula de la siguiente manera: f=g(n) + h(n) Siendo g(n) el costo de ruta y h(n) una heurística admisible (que nunca sobreestima el costo que implica alcanzar la meta). – En esta búsqueda la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad. Pero la elección de una buena función heurística permite disminuir notablemente la complejidad tanto en tiempo como en espacio. – Es óptima y completa.