Explicación
La profundización iterativa hace que un busque primero con un límite pequeño y repita el análisis con límites cada vez mayores. En ajedrez, una profundidad suele medirse en plies, donde un ply es una jugada de un solo bando.
A primera vista parece desperdiciar trabajo, porque las posiciones cercanas al inicio se visitan varias veces. Sin embargo, las iteraciones anteriores producen información valiosa: una mejor jugada provisional, la variante principal, que es la secuencia considerada mejor en ese momento, resultados almacenados y datos para . Empezar la siguiente búsqueda con las opciones prometedoras suele permitir que más ramas se detengan antes y compensa gran parte de la repetición.
La ventaja práctica más clara es el control del tiempo. Si el reloj obliga a detener el cálculo durante una iteración profunda, el motor todavía conserva el resultado completo de la iteración anterior. No necesita apostar todo a una búsqueda que quizá quede inconclusa.
No significa extender únicamente una línea favorita. Cada nueva iteración vuelve a considerar la posición inicial con un límite mayor, aunque técnicas selectivas puedan asignar profundidades diferentes dentro del árbol. También ayuda a desplazar el , pero no lo elimina.
Uso y contexto
Las interfaces suelen mostrar la profundidad alcanzada por la iteración actual; una cifra mayor no garantiza por sí sola que dos motores hayan realizado un trabajo comparable.
Confusiones frecuentes
Repetición inútil
El trabajo previo aporta el orden de jugadas, la variante principal y resultados almacenados, de modo que la siguiente iteración no comienza realmente desde cero.
Profundización y extensión selectiva
La profundización iterativa aumenta el límite global entre pasadas; una extensión añade búsqueda local a ciertas líneas.
Fuentes
- 1.Depth-first iterative-deepening: An optimal admissible tree search, Artificial Intelligence / Elsevier
- 2.Iterative Deepening, Chess Programming Wiki
- 3.search.cpp, Stockfish
