Búsqueda en profundidad limitada
En ciencias de la computación, la búsqueda en profundidad limitada es un algoritmo para explorar los vértices de un grafo. Es una modificación de la búsqueda en profundidad y se usa, por ejemplo, en el algoritmo de búsqueda en profundidad iterativa.
Búsqueda en profundidad | ||
---|---|---|
Estructura de datos | Grafo | |
Clase de complejidad | Algoritmo de búsqueda | |
Tiempo de ejecución | ||
Peor caso | ||
No es óptimo ni completo | ||
General
editarComo la búsqueda en profundidad normal, la búsqueda en profundidad limitada es una búsqueda sin información. Funciona igual que la búsqueda en profundidad simple, pero evita los inconvenientes respecto a la completitud, imponiendo un límite máximo de profundidad de búsqueda. Incluso aunque la búsqueda pudiese expandir un vértice más allá de esa profundidad, no lo hará, por lo que no continuará por caminos de profundidad infinita ni se atascará en ciclos. Por lo tanto, la búsqueda en profundidad limitada encontrará una solución si esta se encuentra dentro del límite de profundidad, lo que garantiza completitud en todos los grafos.[1]
Algoritmo (informal)
editar- Determinar el vértice donde la búsqueda debe empezar y asignar la máxima profundidad
- Comprobar si el vértice actual es el estado objetivo
- Si no: No hacer nada
- Si sí: devolver
- Comprueba si el vértice actual está dentro de la profundidad máxima
- Si no: No hacer nada
- Si sí:
- Expandir el vértice y guardar todos sus sucesores en una pila
- Llamar a BPL recursivamente para todos los vértices de la pila y volver al paso 2
BPL(nodo, objetivo, profundidad) { si ( profundidad >= 0 ) { si ( nodo == objetivo ) devolver nodo para cada hijo en expandir(nodo) BPL(hijo, objetivo, profundidad-1) } }
Propiedades
editarComplejidad en espacio
editarComo, internamente, BPL usa una búsqueda en profundidad, la complejidad en espacio es equivalente a la búsqueda en profundidad simple.[1]
Complejidad en tiempo
editarComo, internamente, BPL usa una búsqueda en profundidad, la complejidad en tiempo es equivalente a la búsqueda en profundidad simple y es O( ) donde es el número de vértices y el número de lados en el grafo explorado. Nótese que la BPL no explora el grafo completo, sólo la parte que hay antes del límite de profundidad.[1]
Completitud
editarAunque BPL no puede seguir caminos de longitud infinita, ni puede atascarse en ciclos, en general el algoritmo no es completo ya que no puede encontrar una solución más allá del límite de profundidad. Pero si la profundidad máxima elegida es mayor a la profundidad de alguna solución, el algoritmo pasa a ser completo.[1]
Optimalidad
editarBPL no es óptima.[1] Aún tiene el problema de la búsqueda en profundidad simple de que primero explora un camino hasta su fin, en el cual puede encontrar una solución que es más cara que alguna otra solución en otro camino.
Referencias
editar- ↑ a b c d e f Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2ª edición), Upper Saddle River, New Jersey: Prentice Hall, p. 1080, ISBN 0-13-790395-2.