fbpx
Wikipedia

Búsqueda en profundidad iterativa

Una búsqueda en Profundidad Iterativa (BPI) es un algoritmo de búsqueda no informada utilizado para una estrategia de búsqueda en el espacio de estados en la que se realizan sucesivas búsquedas en profundidad limitada incrementando el límite de profundidad en cada iteración hasta alcanzar , la profundidad del estado objetivo de menor profundidad. BPI es equivalente a la búsqueda en anchura, pero usa mucha menos memoria; en cada iteración, visita los nodos del árbol de búsqueda en el mismo orden que una búsqueda en profundidad, pero el orden en el que los nodos son visitados finalmente se corresponde con la búsqueda en anchura.

Propiedades

BPI combina la eficiencia del espacio de estados de la búsqueda en profundidad y la completitud de la búsqueda en anchura (cuando el factor de ramificación es finito). Es óptima cuando el costo del camino es una función no decreciente de la profundidad del nodo.

La complejidad en espacio de la BPI es  , donde   es el factor de ramificación y   es la profundidad de la solución más superficial. Dado que BPI visita los estados múltiples veces, puede parecer extremadamente costoso, pero no lo es, dado que la mayor parte de los nodos se encuentran en el nivel más profundo del árbol, por lo tanto no tiene mucha importancia que se visiten los niveles superiores varias veces.[1]

La principal ventaja de BPI en búsquedas en árboles de juegos es que las búsquedas anteriores tienen a mejorar la heurística usada, como heurística asesina o la poda alfa-beta, de forma que se puede obtener una estimación más precisa de la puntuación de varios nodos en la última búsqueda y la búsqueda se completa más rápidamente ya que se hace en un orden mejor. Por ejemplo, la poda alfa-beta es más eficiente si se busca el primer movimiento mejor.[1]

Una segunda ventaja es la complejidad en tiempo del algoritmo. Porque las primeras iteraciones usa valores pequeños para  , es decir, se ejecutan extremadamente rápido. Esto permite al algoritmo proporcionar indicaciones sobre el resultado casi inmediatamente, refinándolas según   aumenta. Cuando se utiliza en un entorno interactivo, como en un programa para jugar al ajedrez, esta facilidad permite al programa jugar en cualquier momento con la mejor solución encontrada hasta el momento en la búsqueda realizada.

La complejidad en tiempo en un árbol equilibrado es la misma en con búsqueda en profundidad:  .

En una búsqueda en profundidad iterativa, los nodos en el nivel más inferior se expanden una sola vez, los del nivel anterior dos veces y así hasta la raíz del árbol, que se expande   veces.[1]​ Por lo tanto, el número total de expansiones es

 
 

Para   y   el número de expansiones es

6 + 50 + 400 + 3,000 + 20,000 + 100,000 = 123,456

En resumen, una BPI de profundidad 1 a profundidad   expande, aproximadamente, un 11% más de nodos que una búsqueda en anchura simple o una búsqueda con profundidad limitada de profundidad  , cuando  . Cuanto mayor es el factor de ramificación, menor es la sobrecarga de estados expandidos múltiples veces, pero incluso para un factor de ramificación 2, la BPI solo necesita el doble que una búsqueda en anchura. Esto significa que la complejidad de la BPI es aún  , y la complejidad en espacio es   como una búsqueda en profundidad simple. En general, BPI es el método de búsqueda principal cuando hay un espacio de estados grande y la profundidad de la solución es desconocida.[1]

Ejemplo

 

Una búsqueda en profundidad empezando en A, asumiendo que los lados izquierdos del gráfico se toman antes que los derechos y asumiendo que la búsqueda recuerda los nodos visitados previamente y no los repite (dado que esto es un pequeño grafo), visitará los nodos en el siguiente orden: A, B, D, F, E, C, G.

Realizando la misma búsqueda sin recordar los nodos previamente visitados, el resultado no tendrá fin: A, B, D, F, E, A, B, D, F, E, etc., esto ocurre por el ciclo entre A, B, D, F y E, lo que no permite alcanzar C o G.

La búsqueda en profundidad iterativa nos soluciona estos bucles y alcanzará los nodos de los siguientes niveles. Asumiendo que procede de izquierda a derecha como antes:

  • 0: A
  • 1: A (repetido), B, C, E

(Nótese que BPI ha visitado C, lo que no ocurre con la búsqueda en profundidad.)

  • 2: A, B, D, F, C, G, E, F

(Nótese que aún visita C, pero aparece más tarde. También visita E por un camino distinto, pero vuelve a F dos veces.)

  • 3: A, B, D, F, E, C, G, E, F, B

Para este grafo, cuanta más profundidad se añade, los ciclos "ABFE" y "AEFB" simplemente se alargan antes de que el algoritmo abandone e intente otra rama. Puede recorrer varias veces al mismo nodo siempre y cuando no sea la solución

Algoritmo

El siguiente pseudocódigo muestra una BPI implementada en términos de una búsqueda en profundidad limitada recursiva. (LLamada BP).

BPI(raíz, objetivo) { profundidad = 0 repetir { resultado = BPL(raíz, objetivo, profundidad) Si (resultado es una solución) devolver resultado profundidad = profundidad + 1 } } 

Una búsqueda en profundidad limitada se puede implementar de forma recursiva como sigue. Nótese que solo tiene que comprobar los nodos objetivos cuando profundidad == 0, porque cuando profundidad > 0, BPL expande nodos que han sido visitados en iteraciones previas de BPI.

BPL(nodo, objetivo, profundidad) { Si (profundidad == 0 y nodo == objetivo) devolver nodo sino si (profundidad > 0) para cada hijo en expandir(nodo) resultado = BPL(hijo, objetivo, profundidad-1) si resultado distinto de null devolver resultado sino devolver null } 

Notas

  1. 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 .
  •   Datos: Q1675274

búsqueda, profundidad, iterativa, estilo, esta, traducción, aún, sido, revisado, terceros, eres, hispanohablante, nativo, participado, esta, traducción, puedes, colaborar, revisando, adaptando, estilo, esta, otras, traducciones, acabadas, búsqueda, profundidad. El estilo de esta traduccion aun no ha sido revisado por terceros Si eres hispanohablante nativo y no has participado en esta traduccion puedes colaborar revisando y adaptando el estilo de esta u otras traducciones ya acabadas Una busqueda en Profundidad Iterativa BPI es un algoritmo de busqueda no informada utilizado para una estrategia de busqueda en el espacio de estados en la que se realizan sucesivas busquedas en profundidad limitada incrementando el limite de profundidad en cada iteracion hasta alcanzar d displaystyle d la profundidad del estado objetivo de menor profundidad BPI es equivalente a la busqueda en anchura pero usa mucha menos memoria en cada iteracion visita los nodos del arbol de busqueda en el mismo orden que una busqueda en profundidad pero el orden en el que los nodos son visitados finalmente se corresponde con la busqueda en anchura Indice 1 Propiedades 2 Ejemplo 3 Algoritmo 4 NotasPropiedades EditarBPI combina la eficiencia del espacio de estados de la busqueda en profundidad y la completitud de la busqueda en anchura cuando el factor de ramificacion es finito Es optima cuando el costo del camino es una funcion no decreciente de la profundidad del nodo La complejidad en espacio de la BPI es O b d displaystyle O bd donde b displaystyle b es el factor de ramificacion y d displaystyle d es la profundidad de la solucion mas superficial Dado que BPI visita los estados multiples veces puede parecer extremadamente costoso pero no lo es dado que la mayor parte de los nodos se encuentran en el nivel mas profundo del arbol por lo tanto no tiene mucha importancia que se visiten los niveles superiores varias veces 1 La principal ventaja de BPI en busquedas en arboles de juegos es que las busquedas anteriores tienen a mejorar la heuristica usada como heuristica asesina o la poda alfa beta de forma que se puede obtener una estimacion mas precisa de la puntuacion de varios nodos en la ultima busqueda y la busqueda se completa mas rapidamente ya que se hace en un orden mejor Por ejemplo la poda alfa beta es mas eficiente si se busca el primer movimiento mejor 1 Una segunda ventaja es la complejidad en tiempo del algoritmo Porque las primeras iteraciones usa valores pequenos para d displaystyle d es decir se ejecutan extremadamente rapido Esto permite al algoritmo proporcionar indicaciones sobre el resultado casi inmediatamente refinandolas segun d displaystyle d aumenta Cuando se utiliza en un entorno interactivo como en un programa para jugar al ajedrez esta facilidad permite al programa jugar en cualquier momento con la mejor solucion encontrada hasta el momento en la busqueda realizada La complejidad en tiempo en un arbol equilibrado es la misma en con busqueda en profundidad O b d displaystyle O b d En una busqueda en profundidad iterativa los nodos en el nivel mas inferior se expanden una sola vez los del nivel anterior dos veces y asi hasta la raiz del arbol que se expande d 1 displaystyle d 1 veces 1 Por lo tanto el numero total de expansiones es d 1 1 d b d 1 b 2 3 b d 2 2 b d 1 b d displaystyle d 1 1 d b d 1 b 2 cdots 3b d 2 2b d 1 b d i 0 d d 1 i b i displaystyle sum i 0 d d 1 i b i Para b 10 displaystyle b 10 y d 5 displaystyle d 5 el numero de expansiones es 6 50 400 3 000 20 000 100 000 123 456En resumen una BPI de profundidad 1 a profundidad d displaystyle d expande aproximadamente un 11 mas de nodos que una busqueda en anchura simple o una busqueda con profundidad limitada de profundidad d displaystyle d cuando b 10 displaystyle b 10 Cuanto mayor es el factor de ramificacion menor es la sobrecarga de estados expandidos multiples veces pero incluso para un factor de ramificacion 2 la BPI solo necesita el doble que una busqueda en anchura Esto significa que la complejidad de la BPI es aun O b d displaystyle O b d y la complejidad en espacio es O d displaystyle O d como una busqueda en profundidad simple En general BPI es el metodo de busqueda principal cuando hay un espacio de estados grande y la profundidad de la solucion es desconocida 1 Ejemplo Editar Una busqueda en profundidad empezando en A asumiendo que los lados izquierdos del grafico se toman antes que los derechos y asumiendo que la busqueda recuerda los nodos visitados previamente y no los repite dado que esto es un pequeno grafo visitara los nodos en el siguiente orden A B D F E C G Realizando la misma busqueda sin recordar los nodos previamente visitados el resultado no tendra fin A B D F E A B D F E etc esto ocurre por el ciclo entre A B D F y E lo que no permite alcanzar C o G La busqueda en profundidad iterativa nos soluciona estos bucles y alcanzara los nodos de los siguientes niveles Asumiendo que procede de izquierda a derecha como antes 0 A 1 A repetido B C E Notese que BPI ha visitado C lo que no ocurre con la busqueda en profundidad 2 A B D F C G E F Notese que aun visita C pero aparece mas tarde Tambien visita E por un camino distinto pero vuelve a F dos veces 3 A B D F E C G E F BPara este grafo cuanta mas profundidad se anade los ciclos ABFE y AEFB simplemente se alargan antes de que el algoritmo abandone e intente otra rama Puede recorrer varias veces al mismo nodo siempre y cuando no sea la solucionAlgoritmo EditarEl siguiente pseudocodigo muestra una BPI implementada en terminos de una busqueda en profundidad limitada recursiva LLamada BP BPI raiz objetivo profundidad 0 repetir resultado BPL raiz objetivo profundidad Si resultado es una solucion devolver resultado profundidad profundidad 1 Una busqueda en profundidad limitada se puede implementar de forma recursiva como sigue Notese que solo tiene que comprobar los nodos objetivos cuando profundidad 0 porque cuando profundidad gt 0 BPL expande nodos que han sido visitados en iteraciones previas de BPI BPL nodo objetivo profundidad Si profundidad 0 y nodo objetivo devolver nodo sino si profundidad gt 0 para cada hijo en expandir nodo resultado BPL hijo objetivo profundidad 1 si resultado distinto de null devolver resultado sino devolver null Notas Editar a b c d Russell Stuart J Norvig Peter 2003 Artificial Intelligence A Modern Approach 2ª edicion Upper Saddle River New Jersey Prentice Hall p 1080 ISBN 0 13 790395 2 Datos Q1675274Obtenido de https es wikipedia org w index php title Busqueda en profundidad iterativa amp oldid 118711544, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos