Iterative Deepening

Home * Search * Iterative Deepening



Iterative deepening (ID) has been adopted as the basic time management strategy in depth-first searches, but has proved surprisingly beneficial as far as move ordering is concerned in alpha-beta and its enhancements. It has been noticed, that even if one is about to search to a given depth, that iterative deepening is faster than searching for the given depth immediately. This is due to dynamic move ordering techniques such as; PV-, hash- and refutation moves determined in previous iteration(s), as well the history heuristic.

=How it Works= It works as follows: the program starts with a one ply search, then increments the search depth and does another search. This process is repeated until the time allocated for the search is exhausted. In case of an unfinished search, the program always has the option to fall back to the move selected in the last iteration of the search. Yet if we make sure that this move is searched first in the next iteration, then overwriting the new move with the old one becomes unnecessary. This way, also the results from the partial search can be accepted - though in case of a severe drop of the score it is wise to allocate some more time, as the first alternative is often a bad capture, delaying the loss instead of preventing it. Iterative deepening, using a transposition table, embed the depth-first algorithms like alpha-beta into a framework with best-first characteristics.

=History= Iterative or progressive deepening was first mentioned by Adriaan de Groot in Thought and Choice in Chess. Richard Korf on its "discovery" in Depth-first Iterative-Deepening: An Optimal Admissible Tree Search : Depth-first iterative-deepening has no doubt been rediscovered many times independently. The first use of the algorithm that is documented in the literature is in Slate and Atkin's Chess 4.5 program. Berliner has observed that breadth-first search is inferior to the iterative-deepening algorithm. Winston shows that for two-person game searches where only terminal-node static evaluations are counted in the cost, the extra computation required by iterative-deepening is insignificant. Pearl initially suggested the iterative-deepening extension of A*, and Berliner and Goetsch have implemented such an algorithm concurrently with this work.

Tony Marsland in Computer Chess and Search on the History of ID : In the early 1970’s several people tried a variety of ways to control the exponential growth of the tree search. A simple fixed depth search is inflexible, especially if it must be completed within a specified time. This difficulty was noted by Scott who reported in 1969 on the effective use of an iterated search. Jim Gillogly, author of the Tech chess program, coined the term iterative deepening to distinguish a full-width search to increasing depths from the progressively more focused search described by de Groot. About the same time David Slate and Larry Atkin (1977) sought a better time control mechanism, and introduced an improved iterated search for carrying out a progressively deeper and deeper analysis. For example, an iterated series of 1-ply, 2-ply, 3-ply ... searches is carried out, with each new search first retracing the best path from the previous iteration and then extending the search by one ply. Early experimenters with this scheme were surprised to find that the iterated search often required less time than an equivalent direct search...

=See also=
 * Alpha-Beta
 * Aspiration Windows
 * Best-First
 * Depth-First
 * Effective Branching Factor
 * Internal Iterative Deepening
 * Move Ordering
 * MTD(f)
 * Odd-Even Effect
 * Time Management
 * Transposition Table

=Publications=

1965 ...

 * Adriaan de Groot (1965). Thought and Choice in Chess. Mouton & Co Publishers, The Hague, The Netherlands. Second edition 1978. ISBN 90-279-7914-6. (amazon)
 * John J. Scott (1969). A Chess Playing Program. in Machine Intelligence 4 (ed. Donald Michie), pp. 255-265

1970 ...

 * James Gillogly (1972). The Technology Chess Program. Artificial Intelligence, Vol. 3, pp. 145-163. ISSN 0004-3702. Reprinted (1988) in Computer Chess Compendium
 * David Slate, Larry Atkin (1977). CHESS 4.5 - The Northwestern University Chess Program. Chess Skill in Man and Machine, reprinted (1988) in Computer Chess Compendium

1980 ...

 * William Fink (1982). An Enhancement to the Iterative, Alpha-Beta, Minimax Search Procedure. ICCA Newsletter, Vol. 5, No. 1
 * Hans Berliner (1983). Search, Artificial Intelligence Syllabus, Department of Computer Science, Carnegie Mellon University
 * Richard Korf (1984). The Complexity of Brute Force Search. Technical Report, Department of Computer Science, Columbia University
 * Richard Korf (1985). Depth-first Iterative-Deepening: An Optimal Admissible Tree Search. CiteSeerX

1990 ...

 * Matthew L. Ginsberg (1993). Essentials of artificial intelligence. Morgan Kaufmann Publishers, ISBN13: 9781558602212, 3.3 Iterative Deepening
 * Alexander Reinefeld, Tony Marsland (1994). Enhanced Iterative-Deepening Search. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 16, No. 7, pp. 701-710. ISSN 0162-8828. pdf

=Forum Posts=

1988

 * Re: "Iterative Deeping" reference wanted by Ira Baxter, AIList Digest, December 06, 1988

1990 ...

 * Re: Computer Chess and alpha-beta pruning by Johannes Fürnkranz, rgc, September 22, 1993 » Alpha-Beta
 * Tricks in iterative deepening; was Re: AEGON '97 by Ingo Althöfer, rgcc, April 26, 1997 » Aegon 1997
 * Iterative Deepening by John Scalo, rgcc, June 27, 1997
 * pv score oscillation by Willie Wood, CCC, October 18, 1997
 * Selective deepening and Hashtables by Werner Inmann, CCC, June 30, 1998

2000 ...

 * Iterative deepening deep increment by Alvaro Jose Povoa Cardoso, CCC, February 27, 2001
 * iterative deepening and branching factor by J. Wesley Cleveland, CCC, July 09, 2007 » Effective Branching Factor
 * Even more search questions by Sven Schüle, Winboard Forum, July 17, 2007

2010 ...

 * Node counts at a given depth/iteration in search by BB+, OpenChess Forum, May 23, 2011
 * Bigger steps when branching factor < 2? by Marcel van Kervinck, CCC, November 05, 2011 » Effective Branching Factor
 * Restarting iterative deepening by Harm Geert Muller, CCC, December 09, 2015 » Aspiration Windows, Fail-Low
 * How do you signal stalemate in iterative deepening? by Kenneth Jones, CCC, February 17, 2016 » Stalemate
 * Iterative Deepening by kickstone, OpenChess Forum, February 26, 2016
 * TT and Iterative Deepening by kuket15, OpenChess Forum, February 26, 2016 » Transposition Table
 * Iterative Deepening Question by David Cimbalista, CCC, July 23, 2016 » Aspiration Windows
 * (I)ID and PV dropout by Harm Geert Muller, CCC, June 17, 2017 » Fail-Low, Internal Iterative Deepening

=External Links=
 * Iterative deepening depth-first search from Wikipedia
 * Iterative deepening notes by Charles Elkan
 * Chapter 3 Solving Problems by Searching from C463 Artificial Intelligence Syllabus by Raymond F. Wisman
 * µ-Max Search: Iterative Deepening by Harm Geert Muller
 * Michał Urbaniak - Always Ready (1977), YouTube Video
 * feat. Michał Urbaniak, Zbigniew Namysłowski, Urszula Dudziak, Kenny Kirkland, Tony Bunn, Laurenda Featherstone

=References= Up one Level