Busqueda Profundidad
-
Upload
luis-fernando-rodriguez-mendia -
Category
Documents
-
view
4 -
download
2
description
Transcript of Busqueda Profundidad
-
UNIVERSIDAD MAYOR DE SAN SIMN
FACULTAD DE CIENCIAS Y TECNOLOGIA
Cochabamba Bolivia
Estudiantes : Cspedes Cceres Damaris
Choque Choquecallata Lourdes Selen
Jancko Camacho Jhannet
Materia
:
Vaca Suarez Jess Piero
Inteligencia Artificial
Docente : Carmen R. Garcia Perez
Fecha : 02 de abril del 2014
-
BSQUEDA EN PROFUNDIDAD
1. INTRODUCCIN
La bsqueda en profundidad es un algoritmo usado para buscar elementos en un rbol o en un grafo.
Como toda estructura de datos, los rboles tienen tres operaciones bsicas:
Insercin de nuevos elementos. Eliminacin de elementos existentes. Bsqueda de un elemento en la estructura.
Nos interesa la bsqueda de un elemento en la estructura de datos (rbol).
Una bsqueda es una secuencia de acciones en un orden determinado, Segn la informacin utilizada para avanzar hacia una meta.
Los tipos de bsquedas se pueden clasificar:
Bsqueda ciega o no informada.- En esta estrategia se generan estados para luego
comprobar si estas cumplen con los objetivos para ser meta, sino son meta, se siguen
generando estados.
No informada: No tiene informacin acerca de los estados ms all de la que proporciona
la definicin del problema. Todo lo que este tipo de bsquedas pueden hacer es generar
un estado objetivo de uno que no lo es.
Bsqueda heurstica o informada.- La estrategia de control utiliza conocimiento del
dominio para estimar cual es el siguiente mejor estado.
Heurstica: Es el criterio mtodo, o principio para decidir cul entre varias acciones
promete ser la mejor para alcanzar una determinada meta.
Dentro de la bsqueda no informada tenemos:
Bsqueda en profundidad:
Siempre expande el nodo ms profundo, en la frontera actual del rbol de bsqueda. La
bsqueda procede inmediatamente al nivel ms profundo del rbol de bsqueda, donde los
nodos no tienen ningn sucesor. Cuando esos nodos se expanden, son quitados de la frontera,
as entonces la bsqueda al siguiente nodo ms superficial que todava tenga ms
sucesores inexplorados.
-
Esta estrategia puede implementarse por la BUSQUEDA-ARBOLES (LIFO ltimo en entrar primero
en salir). La bsqueda en profundidad tiene unos modestos requisitos de memoria, ya que esta
bsqueda es recursiva y toda implementacin recursiva tiende a ocupar grandes cantidades de
memoria.
Necesita almacenar solo un camino desde la raz a un nodo hoja, junto con los nodos hermanos
restantes no expandidos por cada nodo del camino. Una vez que un nodo se ha expandido, se
puede quitar de la memoria tan pronto como sus descendientes han sido explorados.
Entonces esta bsqueda expande el nodo no expandido ms profundo, para su implementacin
se usa una estructura LIFO es decir los sucesores se ponen delante.
Se debe saber que:
-Expandir un nodo: Es obtener los posibles hijos de un nodo a partir de la aplicacin de los distintos operadores sobre l. -Nodo cerrado: Se han aplicado todos los posibles operadores sobre l, obtenindose todos sus posibles hijos. -Nodo Abierto: No han actuado todos los posibles operadores, con los que podran obtenerse nuevos hijos aplicando los operadores restantes. -Nodo: Uno de los elementos del conjunto de estados.
- Nodo raz: Estado inicial.
- Hijos de un nodo: Posibles sucesores (nodos correspondientes a estados
resultantes de la aplicacin de un operador al nodo padre).
-Arco (operador): En la expansin de un estado n, denota cada uno de los operadores
aplicados a n.
-Expansin de un nodo: Dado un estado n, consiste en generar todos los posibles nodos
sucesores de este, por aplicacin de todas los operadores posibles y en todas sus formas
de aplicacin.
-Nodo meta: Es un nodo terminal u hoja que cumple los objetivos del problema.
-Nodo frontera: Nodo que est en espera de ser expandido.
-Frontera Actual: conjunto de nodos que estn en proceso de expansin
-Frontera de expansin: conjunto de nodos frontera.
-Profundidad del rbol: Longitud (nmero de niveles del rbol) desde el nodo inicial hasta
el nodo meta, o lo que es lo mismo, nmero de operadores (nmero de arcos) aplicados
a la solucin desde el estado inicial al estado meta. La profundidad del estado inicial (nodo
raz) es 0 y la profundidad de cualquier otro nodo ser la de su antecesor menos profundo
ms uno.
-
2. ALGORITMO PARA BSQUEDA EN PROFUNDIDAD
Para programar el comportamiento de la bsqueda en profundidad necesitaremos una
estructura llamada PILA, estructura de datos LIFO (Last In, First Out), de la que slo disponemos
dos operaciones: apilar y desapilar. Apilar aade el elemento en la cabeza y desapilar lo extrae y
elimina, por lo que el primer elemento que entre se quedar en el fondo y ser el ltimo en
visitarse.
Funcin Busqueda_Profundidad devuelve una solucin o fallo
Pila Insertar (raz, Pila)
REPETIR
SI esVacia? (Pila) entonces devolver fallo
Nodo Borrar_Primero (Pila)
SI esNodoMeta (Nodo)
Entonces devolver Solucin (Nodo)
listaSucesores Expandir (Nodo)
Pila Insertar_Todo (listaSucesores, Pila)
FIN REPETIR
FIN FUNCION
El procedimiento es:
- Insertamos la raz en la pila.
- Si existe algo en la pila, desapilamos la cabeza y comprobamos si es el elemento que
buscamos, si lo es devuelve la solucin. Si no lo es, cogemos todos los hijos del nodo y los
apilamos.
- Repetimos hasta que encontremos el elemento buscado o la pila est vaca, en cuyo caso
nos devolver un fallo.
- Finalizamos
-
EJEMPLOS:
PROBLEMA DE LAS 8 FICHAS
Estado Inicial Estado Meta
-
3. EVALUACIN DE LA ESTRATEGIA DE BSQUEDA POR PROFUNDIDAD
Eficacia.- Cumple con su funcin.
Se puede evaluar:
Completitud: Est garantizado que el algoritmo encuentre una solucin cuando esta exista? Este tipo de algoritmo de bsqueda no es completo, porque se puede meter por una rama infinita para hacer el recorrido y puede que no termine nunca. Para evitar este error se define el algoritmo de profundidad limitada, en el cual se le dar un lmite de profundidad hasta el cual se podr hacer la bsqueda y podr dar una respuesta ya sea satisfactoria o no. Optimizacin: Encuentra la estrategia una solucin ptima? Es decir que de las soluciones que es capaz de encontrar siempre encuentra la de menor coste. Esta bsqueda no es ptima, porque puede encontrar la solucin pero haciendo un recorrido ms de lo necesario y devuelve la primera solucin que encuentra, que no tiene por qu ser la ptima.
Eficiencia.- Cumple con su funcin y optimiza la cantidad de recursos que utiliza para realizar la bsqueda. Las dos complejidades (temporal y espacial) se miden usando:
b - factor de ramificacin del rbol de bsqueda. d - profundidad de la solucin de mnimo costo. m - mxima profundidad del espacio de bsqueda.
-
Complejidad en tiempo: Cunto tarda en encontrar una solucin? Esta bsqueda depende del factor de ramificaciones como de la solucin. Entonces la complejidad temporal es de O(), por lo tanto es expresado en un coste exponencial, terrible si m es mucho mayor que d. Complejidad en espacio: Cunta memoria se necesita para realizar la bsqueda? El peor caso ser cuando tengamos en cada nivel que se expande, un estado sin eliminar ninguno de sus hijos. Asi O(bm) orden lineal, si para cada nodo expandimos todos sus descendientes. Una de las ventajas de este algoritmo es que en comparacin a la complejidad en espacio de la bsqueda por anchura es de menor costo debido a que se va eliminando las ramas de los nodos expandidos en la que no se encontr el nodo objetivo.
M = nodo meta b = 2 m = 3
4. CONCLUSIN No es la mejor solucin, ya que el recorrido en profundidad es una bsqueda ciega-no informada
recorrer el rbol exhaustivamente para hallar el nodo meta si la haya no se asegura que sea con
el recorrido ms ptimo, todo depender de la posicin donde se encuentra la solucin. Entonces
no hay una bsqueda no informada mejor o peor, la mejor opcin ser realizar bsquedas
heursticas-informadas.