semana 4: métodos de búsqueda no informados · semana 4: métodos de ... ejercicio 1 determine el...
TRANSCRIPT
Estrategias de Búsqueda Búsqueda No Informada
(Ciega)
1. Búsqueda preferente por
amplitud
2. Búsqueda de costo
uniforme
3. Búsqueda preferente por
profundidad
4. Búsqueda limitada por
profundidad
5. Búsqueda por
profundización iterativa
6. Búsqueda bidireccional
Búsqueda Informada
(Heurística)
1. Búsqueda avara
2. Búsqueda A*
3. Búsqueda A*PI
4. Búsqueda A*SRM
Búsqueda en el Espacio de
Estados La resolución de un problema con esta
representación pasa por explorar el espacio de estados
Partimos del estado inicial evaluando cada paso hasta encontrar un estado final
En el caso peor exploraremos todos los posibles caminos entre el estado inicial del problema hasta llegar al estado final
Definiremos una representación del espacio de estados para poder implementar algoritmos que busquen soluciones.
Estructura del espacio de
estados
Estructuras de datos: Árboles y Grafos
Estados = Nodos
Operadores = Arcos entre nodos (dirigidos)
Árboles: Solo un camino lleva a un nodo
Grafos: Varios caminos pueden llevar a un
nodo
Algoritmo Básico
Basado en búsqueda y recorrido en árboles y grafos.
La estructura la construimos a medida que hacemos la búsqueda.
Algoritmo para una solución:
– Seleccionar el primer estado como el estado actual
– mientras el estado actual no es el estado final hacer
Generar y guardar sucesores del estado actual (expansión)
Escoger el siguiente estado entre los pendientes (selección)
– fin-mientras
La selección del siguiente nodo determinará el tipo de búsqueda (orden de selección o expansión).
Es necesario definir un orden entre los sucesores de un nodo (orden de generación).
Evaluación de las Estrategias
Las estrategias se evalúan de acuerdo a su:
Completitud. ¿La estrategia garantiza encontrar una solución, si ésta existe?
Complejidad temporal. ¿Cuánto tiempo se necesitará para encontrar una solución?
Complejidad espacial. ¿Cuánta memoria se necesita para efectuar la búsqueda?
Optimización. ¿Con esta estrategia se encontrará una solución de la más alta calidad, si hay varias soluciones?
Las complejidades temporal y espacial se miden en términos de:
b máximo factor de ramificación del árbol de búsqueda (branching factor)
d profundidad de la solución de menor coste
m profundidad máxima del espacio de estados (puede ser ∞)
Conceptos - Eficiencia de una búsqueda
Coste de un arco : Indica el tiempo requerido para aplicar
un operador a un estado en el proceso de búsqueda.
Costo de un nodo: medida del tiempo consumido en
alcanzar un nodo a lo largo del mejor camino encontrado
hasta un momento dado.
Factor de ramificación: número medio de descendientes
de un nodo ó número medio de operadores que pueden
aplicarse a un estado.
Longitud de una trayectoria: número de nodos
generados en un camino, ed, número de operadores
aplicados en dicho número,
Profundidad : Longitud del camino más corto desde el
estado inicial a un un nodo determinado.
Estrategias de búsqueda no
informada
No existe información sobre la cantidad de estados intermedios o el costo de ruta para pasar del estado actual a la meta. Es decir, realiza una búsqueda exhaustiva.
Sólo se sabe distinguir si estamos en el estado meta o no.
A esta búsqueda se le conoce también como búsqueda ciega ó fuerza bruta.
Búsqueda preferente por amplitud En este caso, primero se expande el nodo raíz y
luego todos los nodos generados por éste, luego sus
sucesores y así sucesivamente.
Todos los nodos que están a profundidad d se
expanden antes que los nodos con profundidad d+1.
Búsqueda preferente por amplitud
1. Crear una lista de nodos e inicializarla con el nodo raíz
(estado inicial). Esta lista se maneja como una cola FIFO.
2. Lazo:
– Si la lista está vacía. Terminar.
– Quitar el primer nodo de la lista.
– Si la lista contiene el nodo meta, salir.
La solución es el primer nodo de la lista
– Expandir el nodo actual y añadir todos sus hijos como nuevos
nodos al final de la cola.
H
A B C
D E F G J
K L
Estado de la cola Iteracción
H
A B C Extraer H+Hijos de H
B C D E Extraer A+Hijos de A
C D E F Extraer B+Hijos de B
D E F G J Extraer C+Hijos de C
E F G J K L Extraer D+Hijos de D
F G J K L Extraer E
G J K L Extraer F
Nodo Inicial : H nodo raíz
Nodos Objetivos : Nodos L y G
Nodos recorridos :
HABCDEFGJKL
Búsqueda preferente por amplitud Si hay solución, es seguro que se encontrará
mediante la búsqueda preferente por amplitud.
Si son varias soluciones, siempre encontrará primero el estado de meta más próximo (menos profundidad, más a la izquierda).
La búsqueda preferente por amplitud es completa y óptima siempre y cuando el costo de ruta sea una función que no disminuya al aumentar la profundidad del nodo.
Completitud, Complejidad Temporal, Complejidad Espacial,
Optimización.
Complejidad Temporal
Si b es el factor de ramificación de los
estados, y la solución está a una
profundidad d, entonces la cantidad
máxima de nodos expandidos antes de
encontrar la solución es:
1+ b + b2 + b3 + ... + bd + (bd+1 – b)
La complejidad de este algoritmo es
O(bd+1).
Resumen (BFS)
Los nodos se visitan y generan por niveles
La estructura para los nodos abiertos es una cola (FIFO)
Un nodo es visitado cuando todos los nodos de los niveles
superiores y sus hermanos precedentes han sido visitados
Características:
– Completitud: El algoritmo siempre encuentra una solución
– Complejidad temporal: Exponencial respecto al factor de
ramificación y la profundidad de la solución O(bd+1).
– Complejidad espacial: Exponencial respecto al factor de
ramificación y la profundidad de la solución O(bd+1).
– Optimización: La solución que se encuentra es óptima en
número de niveles desde la raíz
Ejercicio 1
Determine el orden en que un
agente basado en metas
busca el objetivo F
A
ED
CB
GF
I JH
K
A
ED
CB
GF
I JH
K
Búsqueda preferente por profundidad
En esta búsqueda siempre se expande uno de los nodos que se encuentre en lo más profundo del árbol.
Sólo si la búsqueda conduce a un callejón sin salida (un nodo que no es meta y que no tiene expansión), se revierte la búsqueda y se expanden los nodos de niveles menos profundos.
Lo anterior se logra mediante el algoritmo de Búsqueda-General, con una función de lista de espera que ponga los estados recién generados al principio de la lista.
Búsqueda preferente por
profundidad NOTA: Se supone que el factor de ramificación es b = 2 y que los nodos de nivel m = 3 no tienen sucesores.
Búsqueda preferente por
profundidad
1. Crear una lista de nodos e inicializarla con el nodo raíz
(estado inicial). Esta lista se maneja como una pila LIFO.
2. Lazo:
Si la lista está vacía. Salir .
Extraer el primer nodo de la lista
Si la lista contiene el nodo meta, salir.
La solución es el primer nodo de la lista
Para cada hijo del nodo actual, expandirlo y añadir todos
sus hijos como nuevos nodos al principio de la cola.
H
A B C
D E F G J
K L
Nodo Inicial : H nodo raíz
Nodos Objetivos : Nodos L y G
Nodos recorridos :
HADKLEBFCGJ
Estado de la cola Iteracción
H
A B C Extraer H+Hijos de H
D E B C Extraer A+Hijos de A
K L E B C Extraer D+Hijos de D
L E B C Extraer K
E B C Extraer L
B C Extraer E
F C Extraer B+Hijos de B
C Extraer F
G J Extraer C+Hijos de C
Búsqueda preferente por profundidad
Sólo es necesario guardar la ruta que va del nodo raíz al nodo hoja, junto con los nodos restantes no expandidos, por cada nodo de la ruta.
Si un espacio de estados tiene factor de ramificación b y profundidad máxima m, se requieren almacenar bm nodos.
La complejidad temporal es de O(bm).
Búsqueda preferente por profundidad
Si la cantidad de soluciones en un problema es grande, se recomienda esta búsqueda (BFS) sobre la búsqueda preferente por amplitud (DFS).
La desventaja de esta búsqueda es que se puede quedar estancada al avanzar por una ruta equivocada, ya que muchos árboles de búsqueda pueden ser muy profundos o infinitos. Por lo tanto, la BPPP no es ni la mas completa ni la más óptima.
Resumen (DFS) Los nodos se visitan y generan buscando los nodos a mayor
profundidad y retrocediendo cuando no se encuentran nodos sucesores
La estructura para los nodos abiertos es una pila (LIFO)
Para garantizar que el algoritmo acaba debe imponerse un límite en la profundidad de exploración
Características
– Completidud: El algoritmo encuentra una solución si se impone un límite de profundidad y existe una solución dentro de ese límite
– Complejidad temporal: Exponencial respecto al factor de ramificación y la profundidad del límite de exploración O(bm).
– Complejidad espacial: Si no se controlan los nodos repetidos el coste es lineal respecto al factor de ramificación y el límite de profundidad O(bm). Si tratamos repetidos el coste es igual que en anchura. Si la implementación es recursiva el coste es O(m).
– Optimización: No se garantiza que la solución sea óptima