Professional Documents
Culture Documents
Artificial Intelligence
2
UNIDAD 2
Estrategias de búsquedas
22
Estrategias de búsqueda:
a. Búsqueda no informada (exhaustiva): independiente del problema.
• Búsqueda en anchura (amplitud): se construye nivel a nivel (horizontal)
• Búsqueda en profundidad: explota las rutas con mayor profundidad (vertical).
23
Búsqueda no informada
Nomenclatura:
24
Ejemplo: Puzle (rompecabezas) de 8 piezas
(3×3)
Estado Inicial Estado Final (Objetivo)
27
Búsqueda en
Profundidad (depth)
• Explora en profundidad un camino, en el
caso de no encontrar la solución volvería
atrás (Pila LIFO) a seguir explotando los
otros nodos no explotados.
• En este caso la solución se ha podido
encontrar en la explotación del primer nodo
y como se puede apreciar para este estado
inicial ha sido peor (27 nodos) que la
búsqueda en amplitud (15 nodos).
• Esta búsqueda es más compleja porque
requiere realizar el retroceso
(backtracking), teniendo que hacerlo en
los siguientes casos:
• Se ha llegado al final y no hay
solución a buscar
• Hemos llegado a un límite de
explotación en profundidad o corte.
• No necesariamente encuentra la ruta
más óptima. Como en este ejemplo la
solución se fue por el nodo 9, no por el 8
(óptima).
• Para algunos casos la búsqueda por
anchura resulta más eficiente que la
búsqueda por profundidad, y en otros 28
casos es lo contrario.
• La búsqueda en profundidad puede ser completa si mantiene una
lista de los nodos visitados.
• En general, la complejidad temporal del DFS (Depth First Search) será,
para la mayoría de los casos, mayor que BFS, o en el mejor de los
casos igual.
• La complejidad espacial del DFS puede ser ventajosa al BFS si se omite
la lista de nodos visitados o si la solución está entre las primeras
ramas exploradas.
• Por las características propias del DFS, es posible una implementación
alternativa usando recursividad.
29
Búsqueda Informada: función heurística
• Para el problema del Puzle, el heurístico más eficaz es la distancia de
Manhattan (se explica más adelante).
• Resuelve con el menor consumo de memoria al utilizar menos nodos.
• La diferencia de “inteligencia” entre los algoritmos mencionados:
tanto el de anchura como el de profundidad recorren todas las
posibles expansiones hasta dar con el estado final o resultado. Sin
embargo, el algoritmo que aplica heurística de Manhattan introduce
un elemento diferenciador porque aporta conocimiento del problema
ayudando a la resolución del mismo.
30
Heurístico:
• Intenta medir la “distancia” que hay entre un estado y el objetivo más
próximo (coste previsto o estimado).
• Entre varios estados se elige el que tenga el valor heurístico más bajo.
Este estado representará la dirección que debemos explotar.
• Debe ser una estimación razonable de la cantidad de trabajo restante
en la solución y fácil de calcular.
Ejemplos:
• Distancia de Hamming: el número de fichas que no están en su lugar.
• Distancia Manhattan: la suma de las distancias desde la posición
actual de cada ficha hasta su posición original. Definida como sigue:
(x, y) representa las coordenadas actuales de
la ficha
(x’, y’) representa las coordenadas originales
(objetivo) de la ficha 31
Árbol completo con heurísticos (Manhattan)
asociados a cada estado
Heurístico = 0+1+1+0+1+0+2+2 = 7
(el blanco no se considera en el cálculo)
Tarea:
Implemente las distancias de Hamming y
Manhattan, dado un estado actual como
parámetro de entrada (número o string) 32
Algoritmo A* (A estrella)
Trata de apaliar la complejidad de los algoritmos BFS y DFS intentando que la
convergencia hasta la solución sea más rápida. Para ello usa la función f(n) como
función de evaluación.
33
La función heurística h(n) es una estimación, basándose en la información
que disponemos del problema. La elección de una buena h(n) es muy
importante para que el algoritmo llegue a una solución rápidamente.
La función heurística h(n) debe cumplir las siguientes condiciones:
• h(n)≥0 para todo n
• h(n)=0 si n es el nodo objetivo
• h(n) ha de ser admisible, es decir, la estimación que haga h(n) siempre ha
de estar por debajo del coste real para llegar de n al nodo objetivo. Por
ejemplo: para la distancia entre 2 ciudades, podemos estimar h(n) como la
distancia en línea recta. No habrá camino más corto que este.
34
Taller
• Implemente los algoritmos de búsqueda estudiados (BFS, DFS, A*) para la resolución
del Puzle-8.
Código fuente disponible en:
Java
http://aci710.blogspot.com/2013/05/trabajo-catedra-1-resolucion-puzzle-8.html
Matlab
https://github.com/jae-lee/matlab-8-puzzle
Nota: Se deben hacer ciertos cambios para mejorar el rendimiento de los algoritmos y
corregir cierto error en el algoritmo A*.
35
Tarea
• Ejecute los algoritmos A* y BFS para el estado inicial: 123458679
(12 movimientos)
• Dibuje el árbol generado por cada algoritmo.
• Compare el número de nodos creados (complejidad espacial) y el
tiempo de ejecución (complejidad temporal).
36
Deber:
Utilizando alguna estrategia de búsqueda heurística:
37