Пояснення
Ітеративне поглиблення змушує спочатку виконувати пошук із малою межею, а потім повторювати аналіз із дедалі більшими межами. У шахах глибину зазвичай вимірюють у напівходах, де один напівхід є одним ходом однієї сторони.
Спочатку це здається марнотратством, оскільки позиції біля початку відвідуються неодноразово. Однак попередні ітерації дають цінну інформацію: попередній найкращий хід, головний варіант, тобто лінію, яку наразі вважають найкращою, збережені результати й дані для . Пошук перспективних варіантів першими в наступній ітерації часто дозволяє раніше зупинити більше гілок і компенсує значну частину повторної роботи.
Найочевиднішою практичною перевагою є керування часом. Якщо годинник змушує рушій зупинитися під час глибшої ітерації, він усе одно має повний результат попередньої. Йому не потрібно ризикувати всім заради пошуку, який може залишитися незавершеним.
Ітеративне поглиблення не означає розширення лише однієї улюбленої лінії. Кожна ітерація знову розглядає початкову позицію з більшою межею, хоча вибіркові техніки можуть призначати різні локальні глибини всередині дерева. Воно також відсуває , але не усуває його.
Використання й контекст
Інтерфейси часто показують глибину поточної ітерації, але більше число саме собою не доводить, що два різні рушії виконали порівнянний обсяг роботи.
Поширені непорозуміння
Безглузде повторення
Попередня робота надає порядок ходів, головний варіант і збережену інформацію пошуку, тому наступна ітерація насправді не починається з нуля.
Поглиблення й вибіркове розширення
Ітеративне поглиблення підвищує загальну межу між проходами, а розширення додає локальний пошук до окремих ліній.
Джерела
- 1.Depth-first iterative-deepening: An optimal admissible tree search, Artificial Intelligence / Elsevier
- 2.Iterative Deepening, Chess Programming Wiki
- 3.search.cpp, Stockfish
