Comparación de la búsqueda en amplitud y la búsqueda en profundidad progresiva
PREGUNTA:
Tengo una duda sobre los métodos de búsqueda. Tal como está explicado en
el libro "Aspectos Básicos de la Inteligencia Artificial" en las páginas
112 a 116 y 124, no sé distinguir los métodos "Búsqueda en amplitud" y
Búsqueda en profundidad progresiva", pues en éste último, según se
explica, primero se exploran los nodos del primer nivel, después, los
nodos hasta el segundo nivel (en profundidad), pero como ya están
explorados los nodos del primer nivel, solamente se explorarán los nodos
del segundo nivel. De esta manera, al aumentar el límite de profundidad
(lp) en una unidad cada vez, en definitiva, cada vez se exploran los
nodos de un nivel superior, exactamente en el mismo orden que en la
"Búsqueda en amplitud".
Debe haber alguna imprecisión en mis razonamiento. Acudo a usted porque
en mi centro asociado (Dénia) no hay tutoría de Introducción a la
Inteligencia Artificial. Le agradecería que me lo pudiera resolver.
RESPUESTA:
La diferencia estriba en que en la búsqueda en amplitud cada vez que se
avanza un nivel se deben guardar en memoria todos los nodos de dicho
nivel y se mantienen en memoria hasta que todos hayan sido expandidos.
Por el contrario, en la búsqueda en profundidad progresiva se genera un
sucesor cada vez y no es necesario guardar todos los de un nivel. Por
eso, en la figura 3.11 las flechas reflejan que, por ejemplo, partiendo
de la raíz se genera el primer sucesor de la rama izquierda, como la
primera vez el lp=1 vuelve a la raíz y genera el de la rama derecha.
Como puede ver, no ha generado los dos simultáneamente y los ha guardado
en memoria, sino que cada vez debe retroceder para poder generar los de
otra rama. Para hacerlo operativo es necesario guardar los punteros
indicados en el dibujo mediante las flechas.