Changes

Jump to: navigation, search

Extensions

14,256 bytes added, 22:04, 27 April 2018
Created page with "'''Home * Search * Selectivity * Extensions''' Many programs '''extend''' certain moves to try and find better moves faster, or to resolve tactical "noi..."
'''[[Main Page|Home]] * [[Search]] * [[Selectivity]] * Extensions'''

Many programs '''extend''' certain moves to try and find better moves faster, or to resolve tactical "noise" resulting from the [[Horizon Effect|horizon effect]]. To extend a move, its [[Depth|search depth]] (draft) is incremented by some amount, typically one [[Ply|ply]]. Some extensions may be determined inside the move loop before or after [[Make Move|making the move]], the latter case often delayed to the recursively called search routine by some programs:
<pre>
for each move m € of all moves {
makeMove(m);
int ext = determineExtension( m, depth, node_type, ...); /* 0 or 1 */
score = -search(ply + 1, depth + ext - 1, -beta, -alpha);
unmakeMove(m);
...
}
</pre>
=Classification=
[[Bruce Moreland]] has classified extensions as either win-seeking, loss-seeking, or neutral <ref>[http://web.archive.org/web/20070607151732/www.brucemo.com/compchess/programming/extensions.htm Search Extension] from [[Bruce Moreland|Bruce Moreland's]] [http://web.archive.org/web/20070607231311/www.brucemo.com/compchess/programming/index.htm Programming Topics]</ref> :
# Win-seeking extension: If I stop searching now I'll fail low, but I think there might be something good here if I look a little further.
# Loss-seeking extension: If I stop searching now I'll fail high, but I think I'm in trouble.
# Neutral extension: This is a forcing sequence, and if I stop searching now I won't know how it ends.

=Types=
{| class="wikitable"
|-
! type
! typical class
|-
| [[Botvinnik-Markoff Extension]]
| style="text-align:right;" | loss-seeking
|-
| [[Capture Extensions]]
| style="text-align:right;" | neutral
|-
| [[Check Extensions]]
| style="text-align:right;" | neutral
|-
| [[Mate Threat Extensions]]
| style="text-align:right;" | win-seeking
|-
| [[One Reply Extensions]]
| style="text-align:right;" | loss-seeking
|-
| [[Passed Pawn Extensions]]
| style="text-align:right;" | neutral
|-
| [[PV Extensions]]
| style="text-align:right;" | neutral
|-
| [[Recapture Extensions]]
| style="text-align:right;" | neutral
|-
| [[Singular Extensions]]
| style="text-align:right;" | neutral
|}
<span id="FractionalExtensions"></span>
=Fractional Extensions=
This technique involves passing fractional [[Depth|depths]] to the search function. This is typically implemented by defining one [[Ply|ply]] to be a number greater than one. Then an extension can be added that does not yet extend the search, but further down the tree may cause an extension when another fractional extension causes the net extension to exceed one ply. Fractional extensions were first described by [[David Levy|David Levy's]], [[David Broughton|David Broughton's]] and [[Mark Taylor|Mark Taylor's]] paper on their [[SEX Algorithm]], in conjunction with "negative" extensions aka. fractional reductions and even [[Late Move Reductions|LMR]] <ref>[[David Levy]], [[David Broughton]], [[Mark Taylor]] ('''1989'''). ''The SEX Algorithm in Computer Chess''. [[ICGA Journal#12_1|ICCA Journal, Vol. 12, No. 1]]</ref>.

=Conditions/Restrictions=
Some programs restrict extensions, with either a maximum limit, or via other conditions, such as depth or iteration. Care must be taken so that the search is not extended infinitely (see [[search explosion]]). Some programs vary the extension based on the expected [[Node Types|node type]]. For example, in an expected [[Node Types#ALL|All-node]], it might use 1/2 a ply extension for a pawn to the 7th, but a full ply on the [[Node Types#PV|PV-node]] research.

==Non-reductions==
In contemporary, heavily reducing programs former typical extensions are often used in an inverted manner: to flag moves as exempt from reductions.

=See also=
* [[Reductions]]
: [[Late Move Reductions]]
* [[Markian Hlynka#PreSearching|Pre-Search]]
* [[Pruning]]
* [[SEX Algorithm]]

=Publications=
==1980 ...==
* [[Hermann Kaindl]] ('''1983'''). ''Searching to Variable Depth in Computer Chess.'' Proceedings of [http://www.informatik.uni-trier.de/~ley/db/conf/ijcai/ijcai83.html IJCAI 83], pp. 760-762. Karlsruhe. [http://ijcai.org/Past%20Proceedings/IJCAI-83-VOL-2/PDF/039.pdf pdf]
* [[Thomas Anantharaman]], [[Murray Campbell]], [[Feng-hsiung Hsu]] ('''1988'''). ''Singular extensions: Adding Selectivity to Brute-Force Searching''. AAAI Spring Symposium, Computer Game Playing, pp. 8-13. Also published in [[ICGA Journal#11_4|ICCA Journal, Vol. 11, No. 4]], republished (1990) in [https://en.wikipedia.org/wiki/Artificial_Intelligence_%28journal%29 Artificial Intelligence], Vol. 43, No. 1, pp. 99-109. ISSN 0004-3702.
* [[David Levy]], [[David Broughton]], [[Mark Taylor]] ('''1989'''). ''The SEX Algorithm in Computer Chess''. [[ICGA Journal#12_1|ICCA Journal, Vol. 12, No. 1]]
==1990 ...==
* [[Thomas Anantharaman]] ('''1991'''). ''Extension Heuristics''. [[ICGA Journal#14_2|ICCA Journal, Vol. 14, No. 2]]
* [[Chun Ye]] ('''1992'''). ''Experiments in Selective Search Extensions''. MSc. thesis, Department of Computing Science, [[University of Alberta]], [https://era.library.ualberta.ca/public/datastream/get/uuid:e4fbf48d-7603-490f-85cc-5497bbecf5a8/DS1 pdf]
* [[Chun Ye]], [[Tony Marsland]] ('''1992'''). ''Experiments in Forward Pruning with Limited Extensions.'' [[ICGA Journal#15_2|ICCA Journal, Vol. 15, No. 2]]
* [[Chun Ye]], [[Tony Marsland]] ('''1992'''). ''Selective Extensions in Game-Tree Search.'' [[3rd Computer Olympiad#Workshop|Heuristic Programming in AI 3]]
* [[Don Beal]], [[Martin C. Smith]] ('''1995'''). ''Quantification of Search-Extension Benefits.'' [[ICGA Journal#18_4|ICCA Journal, Vol. 18, No. 4]]
==2000 ...==
* [[Yngvi Björnsson]], [[Tony Marsland]] ('''2001'''). ''Learning Search Control in Adversary Games''. [[Advances in Computer Games 9]], pp. 157-174. [http://www.ru.is/faculty/yngvi/pdf/BjornssonM01b.pdf pdf]
* [[Yoshimasa Tsuruoka]], [[Daisaku Yokoyama]], [[Takashi Chikayama]] ('''2002'''). ''[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.9258 Game-Tree Search Algorithm based on Realization Probability]''. [[ICGA Journal#25_3|ICGA Journal, Vol. 25, No. 3]], [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.9258&rep=rep1&type=pdf pdf], [http://www-tsujii.is.s.u-tokyo.ac.jp/~tsuruoka/papers/icga02.pdf pdf]
* [[David Levy]] ('''2002''') ''[http://ilk.uvt.nl/icga/journal/contents/content25-3.htm#SOME%20COMMENTS%20ON%20REALIZATION%20PROBABILITIES SOME COMMENTS ON REALIZATION PROBABILITIES AND THE SEX ALGORITHM]''. [[ICGA Journal#25_3|ICGA Journal, Vol. 25, No. 3]]
==2010 ...==
* [[Pálmi Skowronski]], [[Yngvi Björnsson]], [[Mark Winands]] ('''2010'''). ''[http://www.sciweavers.org/publications/automated-discovery-search-extension-features Automated Discovery of Search-Extension Features]''. [[Advances in Computer Games 12]], [http://www.hr.is/faculty/yngvi/pdf/SkowronskiBW09.pdf pdf] <ref>[http://www.open-chess.org/viewtopic.php?f=5&t=248 "Automated Discovery of Search Extensions"] by [[Mark Watkins]], [[Computer Chess Forums|OpenChess - Programming and Technical Discussions]], June 22, 2010</ref>

=Forum Posts=
==1996 ...==
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/d6e548599141e359 Fractional depth increments] by S. Read, [[Computer Chess Forums|rgcc]], January 18, 1996
* [https://www.stmintz.com/ccc/index.php?id=12201 "Suspicious move" extension] by [[David Eppstein]], [[CCC]], November 20, 1997
* [https://www.stmintz.com/ccc/index.php?id=17954 Move Extensions] by [[Roberto Waldteufel]], [[CCC]], May 04, 1998
* [https://www.stmintz.com/ccc/index.php?id=20167 Extend or not extend in a nullmove tree] by [[Roland Pfister]], [[CCC]], June 08, 1998 » [[Null Move Pruning]]
* [https://www.stmintz.com/ccc/index.php?id=21654 Selective deepening and Hashtables] by [[Werner Inmann]], [[CCC]], June 30, 1998
* [https://www.stmintz.com/ccc/index.php?id=21888 search extension] by [[Werner Inmann]], [[CCC]], July 08, 1998
* [https://www.stmintz.com/ccc/index.php?id=43380 King danger extensions] by [[James Robertson]], [[CCC]], February 16, 1999
* [https://www.stmintz.com/ccc/index.php?id=45304 full-ply search extension leads to crash city!] by [[Dave Gomboc]], [[CCC]], March 07, 1999
* [https://www.stmintz.com/ccc/index.php?id=50627 Extensions and Futility Pruning] by [[James Robertson]], [[CCC]], May 04, 1999 » [[Futility Pruning]]
* [https://www.stmintz.com/ccc/index.php?id=52090 Q. about Rebel extensions] by [[Rémi Coulom]], [[CCC]], May 18, 1999 » [[Rebel]]
==2000 ...==
* [https://www.stmintz.com/ccc/index.php?id=87191 What is the use of extensions?] by [[Leonid Liberman|Leonid]], [[CCC]], January 09, 2000
* [https://www.stmintz.com/ccc/index.php?id=206802 No explosions] by [[Matthias Gemuh]], [[CCC]], January 11, 2002 » [[Search Explosion]]
* [https://www.stmintz.com/ccc/index.php?id=208272 Extensions] by [[Benny Antonsson]], [[CCC]], January 18, 2002
* [https://www.stmintz.com/ccc/index.php?id=247564 I need help with Search/Selective Extension] by [[Scott Farrell]], [[CCC]], August 24, 2002
* [https://www.stmintz.com/ccc/index.php?id=303131 Problem with extending to maxdepth] by [[Albert Bertilsson]], [[CCC]], June 26, 2003
* [https://www.stmintz.com/ccc/index.php?id=338851 Evaluation-based Reductions and/or Extensions] by [[Tom Likens]], [[CCC]], December 28, 2003 » [[Reductions]]
* [https://www.stmintz.com/ccc/index.php?id=356488 extensions + reductions + pruning = confusion] by [[Johan de Koning]], [[CCC]], March 24, 2004 (was [https://www.stmintz.com/ccc/index.php?id=356109 Shredder 8 secret: search depth?])
==2005 ...==
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=1754&p=8190 Limiting extensions] by [[David B. Weller]], [[Computer Chess Forums|Winboard Forum]], February 23, 2005 » [[GES]]
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=4952 Worthless extension ideas...] by [[Mark Lefler|mjlef]], [[Computer Chess Forums|Winboard Forum]], June 06, 2006
* [http://www.talkchess.com/forum/viewtopic.php?t=14594 PVS extension up] by [[Ed Schroder|Ed Schröder]], [[CCC]], June 21, 2007 <ref>[http://www.top-5000.nl/authors/rebel/chess840.htm#PVS Extension Techniques in REBEL (PVS extensions)]</ref> <ref>[http://www.talkchess.com/forum/viewtopic.php?t=15216 @Ed about PV extension] by [[Peter Fendrich]], [[CCC]], Jul 19, 2007</ref>
* [http://www.talkchess.com/forum/viewtopic.php?t=14860 Delaying Extensions Idea (does anyone do this)?] by [[Mark Lefler]], [[CCC]], July 03, 2007
* [http://www.talkchess.com/forum/viewtopic.php?t=20680 Threat extension] by [[Harm Geert Muller]], [[CCC]], April 15, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=21403 Search extensions at promising trajectories] by [[Reinhard Scharnagl]], [[CCC]], May 28, 2008
* [http://www.open-aurec.com/wbforum/viewtopic.php?t=49446 extensions] by [[Daniel Shawul]], [[Computer Chess Forums|Winboard programming Forum]], August 26, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=26632 Extensions, anyone?] by [[Gregory Strong]], [[CCC]], February 20, 2009
* [http://www.talkchess.com/forum/viewtopic.php?t=27017 Extensions: everywhere or near the tips?] by [[Alvaro Cardoso]], [[CCC]], March 15, 2009
* [http://www.talkchess.com/forum/viewtopic.php?t=31220 Stupid Extension Problem/Question] by [[John Merlino]], [[CCC]], December 23, 2009 » [[Repetitions]]
==2010 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=31505 Problem with exploding tree because of extensions] by [[Oliver Brausch]], [[CCC]], January 05, 2010 » [[Search Explosion]]
* [http://www.talkchess.com/forum/viewtopic.php?t=32940 Restricting extensions to the left most branches?] by [[Michael Sherwin]], [[CCC]], February 27, 2010
* [http://www.open-chess.org/viewtopic.php?f=5&t=248 "Automated Discovery of Search Extensions"] by [[Mark Watkins]], [[Computer Chess Forums|OpenChess - Programming and Technical Discussions]], June 22, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=40984 Loss-seeking extension/threatened pieces] by [[Evert Glebbeek]], [[CCC]], November 03, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=54281 search extensions] by [[Robert Hyatt]], [[CCC]], November 08, 2014 » [[Singular Extensions]]
==2015 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=56311 Adding an Extension Results in Deeper General Search!] by [[Steve Maughan]], [[CCC]], May 10, 2015 » [[Passed Pawn Extensions]]
* [http://www.open-chess.org/viewtopic.php?f=5&t=2968 Search extensions] by ppyvabw, [[Computer Chess Forums|OpenChess Forum]], March 17, 2016
* [http://www.talkchess.com/forum/viewtopic.php?t=59598 Extensions in the days of LMR?] by [[Martin Fierz]], [[CCC]], March 22, 2016 » [[Late Move Reductions|LMR]]
* [http://www.talkchess.com/forum/viewtopic.php?t=67131 Depth extensions and effect on transposition queries] by [[Kenneth Jones]], [[CCC]], April 16, 2018 » [[Transposition Table]]

=External Links=
==Search Extension==
* [http://web.archive.org/web/20070607151732/www.brucemo.com/compchess/programming/extensions.htm Search Extension] from [[Bruce Moreland|Bruce Moreland's]] [http://web.archive.org/web/20070607231311/www.brucemo.com/compchess/programming/index.htm Programming Topics]
* [http://www.frayn.net/beowulf/theory.html#extend Computer Chess Programming Theory - Search Extensions] by [[Colin Frayn]]
* [http://www.top-5000.nl/authors/rebel/chess840.htm Programmer Corner ] by [[Ed Schroder|Ed Schröder]] <ref>How Rebel Plays Chess is also available as [http://members.home.nl/matador/Inside%20Rebel.pdf pdf reprint]</ref>
: [http://www.top-5000.nl/authors/rebel/chess840.htm#EXTENSIONS Extension Techniques in REBEL]
* [http://www.3dkingdoms.com/chess/implementation.htm Programming Details - Slow Chess | Extensions Used, Detailed Description] by [[Jonathan Kreuzer]] » [[Slow Chess]]
==Misc==
* [https://en.wikipedia.org/wiki/Extension Extension from Wikipedia]
* [https://en.wikipedia.org/wiki/Extension_%28metaphysics%29 Extension (metaphysics) from Wikipedia]
* [https://en.wikipedia.org/wiki/Extension_%28music%29 Extension (music) from Wikipedia]
* [https://en.wikipedia.org/wiki/Jazz_chord#Extensions Jazz chord - Extensions from Wikipedia]

=References=
<references />
'''[[Selectivity|Up one level]]'''

Navigation menu