You are on page 1of 12

Una Bsqueda en profundidad (en ingls DFS o Depth First Search) es un algoritmo que permite recorrer todos los

nodos de un grafo o rbol de manera ordenada, pero no

uniforme. Su funcionamiento consiste en ir expandiendo


todos y cada uno de los nodos que va localizando, de forma recurrente, en un camino concreto. Cuando ya no quedan ms nodos que visitar en dicho camino, regresa, de modo que repite el mismo proceso con cada uno de los hermanos del nodo ya procesado.

Expande un camino al mximo partiendo de la raz. Cuando no puede expandir ms una rama, retrocede al nodo ms cercano para continuar por ah la expansin. Utiliza una estructura de datos temporal de tipo PILA(LIFO). Puede emplear lmite de exploracin o longitud mxima de exploracin para no perpetuar un camino en profundidad. Por debajo de ese lmite nunca se exploraran los nodos. Sin lmite de exploracin, en grafos infinitos no tendr fin. En cada descenso a un nuevo nivel, almacena todos los sucesores de ese nivel(y los pone en la pila).

Se dice que el recorrido es en profundidad, porque para visitar otro nodo adyacente del nodo inicial, primero se deben visitar TODOS los nodos adyacentes al que se eligi antes. Es as, como el nmero de ambientes recursivos vara dependiendo de la profundidad que alcance el algoritmo. Una bondad de este algoritmo es que los nodos solo se vistan una vez. Esto implica que si se salvan en alguna estructura las aristas que se van recorriendo se obtiene un conjunto de aristas de cubrimiento mnimo del grafo, lo cual se utiliza frecuentemente se utiliza para reducir la complejidad del grafo cuando la perdida de informacin de algunas aristas no es importante. Este resultado se conoce como rbol DFS (DFS Tree).

El conjunto de estados que el agente (en nuestro ejemplo, el robot) debe recorrer, generalmente se representa mediante un grafo, aunque en algunos casos concretos utilizaremos rboles. Siguiendo con nuestro ejemplo, cada nodo del grafo representar a uno de los baldosines de la habitacin, y dos nodos sern adyacentes si tambin lo son sus baldosines correspondientes. El grafo del dibujo en la parte inferior representa el tablero de manera parcial, y cada nodo es identificado por un nmero. Suponemos que la posicin inicial del robot es el baldosn marcado con el nmero 1. En este grafo se aplica una correspondencia entre los nodos del mismo y los baldosines numerados de igual forma. Como se puede observar en el tablero, por ejemplo, el baldosn 1 es adyacente al 2 y al 5, y este hecho queda plasmado en el dibujo mostrado

Supongamos que nuestro robot no tiene ninguna capacidad especial para poder moverse por la habitacin de una manera eficiente (desconoce cualquier informacin til para poder llegar al libro de la forma ms corta): entonces deber seguir un algoritmo de bsqueda no informada (un mtodo ciego) para llegar hasta l. En general, este tipo de algoritmos recorre el espacio de estados de una forma concreta hasta dar con el objetivo (en este caso, el libro). Nuestro primer mtodo se denomina bsqueda en profundidad.

Supongamos el rbol del dibujo representando un espacio de estados cualquiera. Vemos que, teniendo este rbol delante con sus nodos numerados, tenemos distintas formas de recorrerlo. Cmo lo hacemos en profundidad? Siendo el 1 el nodo inicial y 7 el nodo objetivo que se debe alcanzar, hacemos lo siguiente: buscaremos en todas las ramas que cuelgan, de izquierda a derecha, y exploramos cada rama hasta llegar a una hoja. Para cada hijo buscamos a su vez en profundidad, parando cuando se encuentre el objetivo. En este ejemplo, la secuencia a seguir est indicada por el nmero de los nodos: 1-> 2-> 3-> 4-> 5-> 6-> 7

You might also like