Changes

Jump to: navigation, search

Iterative Deepening

12,837 bytes added, 21:28, 27 April 2018
Created page with "'''Home * Search * Iterative Deepening''' FILE:ideep.jpg|border|right|thumb|link=http://ray.sakura.ne.jp/search_problem/i_deepening.html|Iterative deepeni..."
'''[[Main Page|Home]] * [[Search]] * Iterative Deepening'''

[[FILE:ideep.jpg|border|right|thumb|link=http://ray.sakura.ne.jp/search_problem/i_deepening.html|Iterative deepening search <ref>[http://ray.sakura.ne.jp/search_problem/i_deepening.html Iterative deepening (反復深化法)]</ref> ]]

'''Iterative deepening''' (ID) has been adopted as the basic [[Time Management|time management]] strategy in [[Depth-First|depth-first searches]], but has proved surprisingly beneficial as far as [[Move Ordering|move ordering]] is concerned in [[Alpha-Beta|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-Move|PV-]], [[Hash Move|hash-]] and [[Refutation Move|refutation moves]] determined in previous [[Iteration|iteration(s)]], as well the [[History Heuristic|history heuristic]].

=How it Works=
It works as follows: the program starts with a [[Ply|one ply]] search, then increments the search [[Depth|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|transposition table]], embed the [[Depth-First|depth-first]] algorithms like [[Alpha-Beta|alpha-beta]] into a framework with [[Best-First|best-first]] characteristics.

=History=
Iterative or progressive deepening was first mentioned by [[Adriaan de Groot]] in ''Thought and Choice in Chess'' <ref>[[Adriaan de Groot]] ('''1965'''). ''Thought and Choice in Chess.'' Mouton & Co Publishers, The Hague, The Netherlands. Second edition '''1978'''. ISBN 90-279-7914-6. ([http://www.amazon.com/gp/reader/9027979146/ref=sib_dp_pt#reader-link amazon])</ref> . [[Richard Korf]] on its "discovery" in ''Depth-first Iterative-Deepening: An Optimal Admissible Tree Search'' <ref>[[Richard Korf]] ('''1985'''). ''Depth-first Iterative-Deepening: An Optimal Admissible Tree Search''. [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.91.288 CiteSeerX]</ref> <ref>[[Tsan-sheng Hsu]] ('''2010'''). ''Depth-First Iterative-Deepening: An Optimal Admissible Tree Search by [[Richard Korf|R. E. Korf]]'', slides as [http://www.iis.sinica.edu.tw/~tshsu/tcg2010/slides/slide3.pdf pdf]</ref> :
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 [[David Slate|Slate]] and [[Larry Atkin|Atkin's]] [[Chess (Program)|Chess 4.5]] program <ref>[[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]]</ref>. [[Hans Berliner|Berliner]] <ref>[[Hans Berliner]] ('''1983'''). ''Search''. Artificial Intelligence Syllabus, Department of Computer Science, [[Carnegie Mellon University]]</ref> has observed that breadth-first search is inferior to the iterative-deepening algorithm. [[Patrick Winston|Winston]] <ref>[[Patrick Winston]] ('''1984'''). ''[http://people.csail.mit.edu/phw/Books/index.html#AI Artificial Intelligence]''. Addison-Wesley, Reading, MA</ref> 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. [[Judea Pearl|Pearl]] initially suggested the iterative-deepening extension of [[A*]], and [[Hans Berliner|Berliner]] and [[Gordon Goetsch|Goetsch]] <ref>[[Hans Berliner]], [[Gordon Goetsch]] ('''1984'''). ''A quantitative study of search methods and the effect of constraint satisfaction''. Tech. Report CMU-CS-84-147, Department of Computer Science, [[Carnegie Mellon University]], Pittsburgh, PA.</ref> have implemented such an algorithm concurrently with this work.

[[Tony Marsland]] in ''Computer Chess and Search'' on the History of ID <ref>[[Tony Marsland]] ('''1992'''). ''Computer Chess and Search''. Encyclopedia of Artificial Intelligence (2nd ed.) John Wiley & Sons, Inc. [http://webdocs.cs.ualberta.ca/~tony/RecentPapers/Marsland-CCandSearch-1991.pdf pdf preprint]</ref> :
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 [[John J. Scott|Scott]] <ref>[[John J. Scott]] ('''1969'''). ''A chess-playing program''. [http://www.doc.ic.ac.uk/~shm/MI/mi4.html Machine Intelligence 4]</ref> who reported in 1969 on the effective use of an iterated search. [[James Gillogly|Jim Gillogly]], author of the [[Tech]] chess program <ref>[[James Gillogly]] ('''1972'''). ''The Technology Chess Program''. Artificial Intelligence, Vol. 3, pp. 145-163. ISSN 0004-3702. Reprinted ('''1988''') in [[Computer Chess Compendium]]</ref> , coined the term iterative deepening to distinguish a full-width search to increasing depths from the progressively more focused search described by [[Adriaan de Groot|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]]
* [[Branching Factor#EffectiveBranchingFactor|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. ([http://www.amazon.com/gp/reader/9027979146/ref=sib_dp_pt#reader-link amazon])
* [[John J. Scott]] ('''1969'''). ''A Chess Playing Program''. in [http://www.doc.ic.ac.uk/~shm/MI/mi4.html Machine Intelligence 4] (ed. [[Donald Michie]]), pp. 255-265 <ref>[http://fox.cs.vt.edu/VAD1/DOWN/AILIST/V8/N138 Re: "Iterative Deeping" reference wanted] by [[Ira Baxter]], AIList Digest, December 06, 1988</ref>
==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''. [[ICGA Journal|ICCA Newsletter]], Vol. 5, No. 1
* [[Hans Berliner]] ('''1983'''). ''Search'', Artificial Intelligence Syllabus, Department of Computer Science, [[Carnegie Mellon University]]
* [[Richard Korf]] ('''1985'''). ''Depth-first Iterative-Deepening: An Optimal Admissible Tree Search''. [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.91.288 CiteSeerX]
==1990 ...==
* [[Matthew L. Ginsberg]] ('''1993'''). ''[http://searchworks.stanford.edu/view/2746445 Essentials of artificial intelligence]''. [https://en.wikipedia.org/wiki/Morgan_Kaufmann_Publishers 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. [http://webdocs.cs.ualberta.ca/%7Etony/RecentPapers/pami94.pdf pdf]

=Forum Posts=
==1988==
* [http://fox.cs.vt.edu/VAD1/DOWN/AILIST/V8/N138 Re: "Iterative Deeping" reference wanted] by [[Ira Baxter]], AIList Digest, December 06, 1988
==1990 ...==
* [https://groups.google.com/d/msg/rec.games.chess/XQWb-ZjSsy0/gsXMq42a-FAJ Re: Computer Chess and alpha-beta pruning] by [[Johannes Fürnkranz]], [[Computer Chess Forums|rgc]], September 22, 1993 » [[Alpha-Beta]]
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/530959055901588a Tricks in iterative deepening; was Re: AEGON '97] by [[Ingo Althöfer]], [[Computer Chess Forums|rgcc]], April 26, 1997 » [[Aegon 1997]]
* [https://www.stmintz.com/ccc/index.php?id=10903 pv score oscillation] by [[Will Singleton|Willie Wood]], [[CCC]], October 18, 1997
* [https://www.stmintz.com/ccc/index.php?id=21654 Selective deepening and Hashtables] by [[Werner Inmann]], [[CCC]], June 30, 1998
==2000 ...==
* [https://www.stmintz.com/ccc/index.php?id=156310 Iterative deepening deep increment] by [[Alvaro Cardoso|Alvaro Jose Povoa Cardoso]], [[CCC]], February 27, 2001
* [http://www.talkchess.com/forum/viewtopic.php?t=14963 iterative deepening and branching factor] by [[J. Wesley Cleveland]], [[CCC]], July 09, 2007 » [[Branching Factor#EffectiveBranchingFactor|Effective Branching Factor]]
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=6666 Even more search questions] by [[Sven Schüle]], [[Computer Chess Forums|Winboard Forum]], July 17, 2007
==2010 ...==
* [http://www.open-chess.org/viewtopic.php?f=5&t=1403 Node counts at a given depth/iteration in search] by [[Mark Watkins|BB+]], [[Computer Chess Forums|OpenChess Forum]], May 23, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=41001 Bigger steps when branching factor < 2?] by [[Marcel van Kervinck]], [[CCC]], November 05, 2011 » [[Branching Factor#EffectiveBranchingFactor|Effective Branching Factor]]
* [http://www.talkchess.com/forum/viewtopic.php?t=58542 Restarting iterative deepening] by [[Harm Geert Muller]], [[CCC]], December 09, 2015 » [[Aspiration Windows]], [[Fail-Low]]
* [http://www.talkchess.com/forum/viewtopic.php?t=59281 How do you signal stalemate in iterative deepening?] by Kenneth Jones, [[CCC]], February 17, 2016 » [[Stalemate]]
* [http://www.open-chess.org/viewtopic.php?f=5&t=2959 Iterative Deepening] by kickstone, [[Computer Chess Forums|OpenChess Forum]], February 26, 2016
* [http://www.open-chess.org/viewtopic.php?f=5&t=2961 TT and Iterative Deepening] by kuket15, [[Computer Chess Forums|OpenChess Forum]], February 26, 2016 » [[Transposition Table]]
* [http://www.talkchess.com/forum/viewtopic.php?t=60916 Iterative Deepening Question] by [[David Cimbalista]], [[CCC]], July 23, 2016 » [[Aspiration Windows]]
* [http://www.talkchess.com/forum/viewtopic.php?t=64321 (I)ID and PV dropout] by [[Harm Geert Muller]], [[CCC]], June 17, 2017 » [[Fail-Low]], [[Internal Iterative Deepening]]

=External Links=
* [https://en.wikipedia.org/wiki/Iterative_deepening_depth-first_search Iterative deepening depth-first search from Wikipedia]
* [http://cseweb.ucsd.edu/%7Eelkan/130fall99/itdeep.html Iterative deepening notes] by [[Charles Elkan]]
* [http://homepages.ius.edu/RWISMAN/C463/html/Chapter3.htm Chapter 3 Solving Problems by Searching] from [http://homepages.ius.edu/RWISMAN/C463/html/syllabus.htm C463 Artificial Intelligence Syllabus] by [http://homepages.ius.edu/RWISMAN/ Raymond F. Wisman]
* [http://home.hccnet.nl/h.g.muller/deepen.html µ-Max Search: Iterative Deepening] by [[Harm Geert Muller]]
* [[Videos#MichalUrbaniak|Urbaniak]] - [https://www.discogs.com/de/Micha%C5%82-Urbaniak-Urbaniak/release/1641078 Always Ready] (1977), [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: feat. [[Videos#MichalUrbaniak|Michał Urbaniak]], [https://en.wikipedia.org/wiki/Zbigniew_Namys%C5%82owski Zbigniew Namysłowski], [[Videos#UrszulaDudziak|Urszula Dudziak]], [https://en.wikipedia.org/wiki/Kenny_Kirkland Kenny Kirkland], [https://en.wikipedia.org/wiki/Tony_Bunn Tony Bunn], [https://www.discogs.com/artist/608833-Lurenda-Featherstone Laurenda Featherstone]
: {{#evu:https://www.youtube.com/watch?v=Dav_CKDVGIM|alignment=left|valignment=top}}

=References=
<references />
'''[[Search|Up one Level]]'''

Navigation menu