Un algoritmo de bsqueda se basa en la construccin de un rbol, cuyo
nodo raz representa el estado inicial, es decir, la situacin desde la cual
partimos. Cada uno de los nodos hijos de la raz representar los estados posibles a los que se puede cambiar desde el estado inicial, y as sucesivamente.
En la bsqueda primero en profundidad, partiendo del estado inicial, el algoritmo comienza a examinar cada uno de las transiciones posibles, construyendo el rbol de estados, pero no abandona una rama hasta haber agotado todas las posibilidades, o haber llegado a la solucin (denominada estado final o estado meta). Por tanto, su funcionamiento sera el siguiente: Parte del estado inicial y examina la primera de las posibilidades de transicin, a continuacin, pasa a examinar la primera de las posibilidades del nuevo estado, y as sucesivamente, va bajando de nivel en el rbol. Una vez que ha alcanzado el estado meta o un estado ya repetido (lo cual indica que por esa rama no va a ninguna parte), examina la siguiente posibilidad del ltimo nodo explorado, y as hasta completar el rbol. Una bsqueda en profundidad la realizamos yendo al primer vrtice hijo que encontremos. Repetimos esto hasta llegar al vrtice con la respuesta o a una hoja. En caso de que encontremos la respuesta, paramos; en caso de que lleguemos a una hoja, regresamos un nivel y buscamos en los vrtices que no hayamos visitado. Para saber cmo regresarnos, los vrtices los vamos guardando en una pila (seccin 11.4). Es por esto que se acostumbra programar esta bsqueda de forma recursiva, con lo que el manejo de la pila lo realiza el lenguaje.
Conociendo el nmero de ramas (E) y de aristas (V), la complejidad en tiempo de esta bsqueda es de O(E + V). Si denotamos la profundidad mxima como d, y a la cantidad de opciones (ramificaciones) que tenemos en cada vrtice como c, entonces la complejidad en tiempo la podemos expresar como O(cd) y la complejidad en espacio como O(d).
Cuando es utilizada para bsquedas exhaustivas en problemas de cumplimiento de restricciones, a la bsqueda en profundidad tambin se le conoce como vuelta atrs (backtracking). Para acelerar la bsqueda, es comn que en los problemas de vuelta atrs se revise si al visitar un nuevo vrtice se siguen cumpliendo las condiciones de restriccin. Con esto podemos evitar tener que llegar hasta una hoja para saber si el problema est resuelto. Tambin se acostumbra utilizar las variables con ms restricciones al principio, ya que generalmente ayuda a visitar menos vrtices.
PSEUDOCODIGO
Se tiene un rbol en un estado inicial y se cuenta con cuatro metas: M1, M2, M3 y M4. Se introduce A como primer elemento de la lista. A no es la meta as que se saca de la lista. Se introducen los hijos de A al frente de la lista guardando siempre el orden de descendencia y empezando de izquierda a derecha.
Se saca AB de la lista ya que no se llego a ninguna meta. Se introducen los hijos de B siguiendo siempre el orden de izquierda a derecha. En el frente de la lista quedan ABD y ABE. Al no ser ABD una meta se saca de la lista. Se introducen los hijos de D al frente de la lista. Queda como resultado el estado mostrado. No se encuentra una meta en H. Se introducen los hijos de H y se puede ver que uno de los hijos es una meta. Se comprueba de que P no es una meta y se saca ABDHP de la lista. Se comprueba de que M2 es una de las metas y se registra el recorrido completo. Se Obtiene el recorrido hacia la meta. Existe mas de una meta en el rbol, el algoritmo alcanza el xito cuando encuentra una meta y no distingue cual de ellas sea En el caso hipottico de que M2 no fuese una meta el siguiente paso habra sido sacar ABDHM2 de la lista y analizar el nodo I. Como I no es una meta el siguiente estado de la lista seria: L7 = {ABDIQ ABDIR ABDE AC} Se comprueba que ni Q ni R son metas y se sacan de la lista hasta llegar al estado de la lista L9 = {ABEJ ABEM1 AC}. Se expanden los hijos de J y la lista queda como L10 = {ABEJS ABEJT ABEM1 AC}. Ni S ni J son metas as que se sacan de la lista y finalmente se llega al estado meta M1 con la lista L12 = {ABEM1 AC}. Se hace el recorrido que lleva desde A hasta M1: A B E M1.