Changes

Jump to: navigation, search

MTD(f)

12,505 bytes added, 15:03, 2 May 2018
Created page with "'''Home * Search * MTD(f)''' FILE:EschersAscending_and_Descending.jpg|border|right|thumb|link=http://www.mcescher.com/Gallery/recogn-bmp/LW435.jpg| [[Arts..."
'''[[Main Page|Home]] * [[Search]] * MTD(f)'''

[[FILE:EschersAscending_and_Descending.jpg|border|right|thumb|link=http://www.mcescher.com/Gallery/recogn-bmp/LW435.jpg| [[Arts#Escher|M. C. Escher]], Ascending and Descending, 1960 <ref>[[Arts#Escher|M. C. Escher]], Ascending and Descending, 1960, [http://www.mcescher.com/Gallery/gallery-recogn.htm Picture gallery "Recognition and Success 1955 - 1972" ] from [http://www.mcescher.com/ The Official M.C. Escher Website]</ref> ]]

'''MTD(f)''',<br/>
a search algorithm created by [[Aske Plaat]] and the short name for MTD(n, f), which stands for something like '''M'''emory-enhanced '''T'''est '''D'''river with node n and value '''f'''. MTD is the name of a group of driver-algorithms that search [[Minimax|minimax]] trees using [[Null Window|null window]] [[Alpha-Beta|alpha-beta]] with [[Transposition Table|transposition table]] calls.

In order to work, MTD(f) needs a ''first guess'' as to where the minimax value will turn out to be. The better than first guess is, the more efficient the algorithm will be, on average, since the better it is, the less passes the repeat-until loop will have to do to converge on the minimax value. If you feed MTD(f) the minimax value to start with, it will only do two passes, the bare minimum: one to find an [[Upper Bound|upper bound]] of value x, and one to find a [[Lower Bound|lower bound]] of the same value <ref>Quote by [[Aske Plaat]] from [http://people.csail.mit.edu/plaat/mtdf.html MTD(f) - A Minimax Algorithm faster than NegaScout]</ref>.

=Pascal Pseudo Code=
Original [[Pascal]] pseudo code by [[Aske Plaat]]:
<pre>
function MTDF(root : node_type; f : integer; d : integer) : integer;
g := f;
upperbound := +INFINITY;
lowerbound := -INFINITY;
repeat
if g == lowerbound then beta := g + 1 else beta := g;
g := AlphaBetaWithMemory(root, beta - 1, beta, d);
if g < beta then upperbound := g else lowerbound := g;
until lowerbound >= upperbound;
return g;
</pre>
Typically, one would call MTD(f) in an [[Iterative Deepening|iterative deepening]] framework, the first guess the value of the previous iteration:
<pre>
function iterative_deepening(root : node_type) : integer;

firstguess := 0;
for d = 1 to MAX_SEARCH_DEPTH do
firstguess := MTDF(root, firstguess, d);
if times_up() then break;
return firstguess;
</pre>

=C Pseudo Code=
Slightly modified pseudo code in [[C]]:
<pre>
int mtdf(int f, int depth) {
int bound[2] = {-oo, +oo}; // lower, upper
do {
beta = f + (f == bound[0]);
f = alphaBetaWithMemory(beta - 1, beta, depth);
bound[f < beta] = f;
} while (bound[0] < bound[1]);
return f;
}
</pre>

=See Also=
* [[Aspiration Windows]]
* [[Iterative Deepening]]
* [[Window#MinimaxWall|Minimax Wall]]
* [[NegaC*]]
* [[SSS* and Dual*]]
* [[Transposition Table]]

=Publications=
==1994 ...==
* [[Aske Plaat]], [[Jonathan Schaeffer]], [[Wim Pijls]], [[Arie de Bruin]] ('''1994'''). ''[http://arxiv.org/abs/1404.1515?context=cs.AI A New Paradigm for Minimax Search]''. TR 94-18
* [[Aske Plaat]], [[Jonathan Schaeffer]], [[Wim Pijls]], [[Arie de Bruin]] ('''1996'''). ''Best-First Fixed-Depth Minimax Algorithms''. [http://www.ldc.usb.ve/%7Ebonet/courses/ci5437/papers/mtd.pdf pdf]
* [[Aske Plaat]], [[Jonathan Schaeffer]], [[Wim Pijls]], [[Arie de Bruin]] ('''1996'''). ''An Algorithm Faster than NegaScout and SSS* in Practice''. [http://citeseerx.ist.psu.edu/showciting;jsessionid=04E25D5F074D8B5BABB68D2AC5BA5D39?cid=3161130 pdf] from [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.8641 CiteSeerX]
* [[Aske Plaat]] ('''1997'''). ''[http://arxiv.org/abs/1404.1511?context=cs.AI MTD(f), A Minimax Algorithm Faster Than NegaScout]''. Internal Report, [https://en.wikipedia.org/wiki/Erasmus_University_Rotterdam Erasmus University Rotterdam]
==2000 ...==
* [[Jacek Mańdziuk]], [[Daniel Osman]] ('''2004'''). ''Alpha-Beta Search Enhancements with a Real-Value Game-State Evaluation Function''. [[ICGA Journal#27_1|ICGA Journal, Vol. 27, No. 1]], [http://www.mini.pw.edu.pl/~mandziuk/PRACE/ICGA.pdf pdf]
* [[Kazutomo Shibahara]], [[Nobuo Inui]], [[Yoshiyuki Kotani]] ('''2005'''). ''Adaptive Strategies of MTD-f for Actual Games''. [http://www.informatik.uni-trier.de/~ley/db/conf/cig/cig2005.html#ShibaharaIK05 CIG 2005], [http://cswww.essex.ac.uk/cig/2005/papers/p1018.pdf pdf]
==2010 ...==
* [[Jr-Chang Chen]], [[I-Chen Wu]], [[Wen-Jie Tseng]], [[Bo-Han Lin]], [[Chia-Hui Chang]] ('''2015'''). ''[https://ir.nctu.edu.tw/handle/11536/124541 Job-Level Alpha-Beta Search]''. [[IEEE#TOCIAIGAMES|IEEE Transactions on Computational Intelligence and AI in Games]], Vol. 7, No. 1

=Forum Posts=
==1997 ...==
* [https://groups.google.com/d/msg/rec.games.chess.computer/TkhrEajlMCs/r8BRbNjNCt8J Tree search issues!] by [[Magnus Heldestad]], [[Computer Chess Forums|rgcc]], May 26, 1997 » [[Enhanced Transposition Cutoff]]
: [https://groups.google.com/d/msg/rec.games.chess.computer/TkhrEajlMCs/Cg3pBOLSzv0J Re: Tree search issues!] by [[Robert Hyatt]], [[Computer Chess Forums|rgcc]], May 26, 1997
: [https://groups.google.com/d/msg/rec.games.chess.computer/TkhrEajlMCs/HgrYwdBcjnEJ Re: Tree search issues!] by [[Aske Plaat]], [[Computer Chess Forums|rgcc]], May 27, 1997
'''1998'''
* [https://www.stmintz.com/ccc/index.php?id=14481 New(?) search idea] by [[Andy Walker|Andrew Walker]], [[CCC]], January 21, 1998
: [https://www.stmintz.com/ccc/index.php?id=14527 Re: New(?) search idea] by [[Don Dailey]], [[CCC]], January 22, 1998
: [https://www.stmintz.com/ccc/index.php?id=14535 MTD(f) (was Re: New(?) search idea.)] by [[Stuart Cracraft]], [[CCC]], January 22, 1998
: [https://www.stmintz.com/ccc/index.php?id=14539 Re: New(?) search idea] by [[Robert Hyatt]], [[CCC]], January 22, 1998 » [[Window#MinimaxWall|Minimax Wall]]
'''1999'''
* [https://www.stmintz.com/ccc/index.php?id=43395 Re: CilkChess] by [[Don Dailey]], [[CCC]], February 14, 1999 » [[CilkChess]]
* [https://www.stmintz.com/ccc/index.php?id=60833 Building the Principal Variation in MTD(f) searches] by [[Andrew Williams]], [[CCC]], July 18, 1999 » [[Principal variation]]
* [https://www.stmintz.com/ccc/index.php?id=61058 MTD is a big win] by [[Don Dailey]], [[CCC]], July 19, 1999
* [https://www.stmintz.com/ccc/index.php?id=70890 MTD(f)] by Nicolas Carrasco, [[CCC]], September 28, 1999
==2000 ...==
* [https://www.stmintz.com/ccc/index.php?id=95696 Getting a PV using MTD(f)] by [[Tijs van Dam]], [[CCC]], February 08, 2000 » [[Principal variation]]
* [https://groups.google.com/d/msg/rec.games.chess.computer/Prqz2SzYuoc/4SkqqUYhrIsJ MTD(f) and PV] by [[David Rasmussen]], [[Computer Chess Forums|rgcc]], March 09, 2000 » [[Principal variation]]
'''2001'''
* [https://groups.google.com/d/msg/rec.games.chess.computer/AEFIYBEvCFA/66YpNnmDYiUJ MTD(f) and the PV] by Adrian Jackson, [[Computer Chess Forums|rgcc]], March 16, 2001 » [[Principal variation]]
* [https://www.stmintz.com/ccc/index.php?id=173514 Beating MTD(n,f)] by [[Gian-Carlo Pascutto]], [[CCC]], June 05, 2001
* [https://www.stmintz.com/ccc/index.php?id=179391 MTD(f) and killer heuristics] by Marcus Heidkamp, [[CCC]], July 12, 2001 » [[Killer Heuristic]]
* [https://www.stmintz.com/ccc/index.php?id=195217 Performance of MTD(f) versus eval granularity?] by Werner Mühlpfordt, [[CCC]], November 01, 2001
'''2002'''
* [https://www.stmintz.com/ccc/index.php?id=222624 MTD(f) Problems] by Oren Avraham, [[CCC]], April 10, 2002
: [https://www.stmintz.com/ccc/index.php?id=222680 Re: MTD(f) Problems] by [[Rudolf Huber]], [[CCC]], April 11, 2002
* [https://www.stmintz.com/ccc/index.php?id=223036 About False Fail Highs, professionals, and MTD searches] by [[Gian-Carlo Pascutto]], [[CCC]], April 12, 2002 » [[Fail-High]]
* [https://www.stmintz.com/ccc/index.php?id=251302 Couple of chess programming questions] by Eli Liang, [[CCC]], September 10, 2002 » [[ProbCut]], [[Evaluation]], [[Bitboards]], [[0x88]], [[Depth#FractionalPlies|Fractional Plies]], [[Transposition Table]]
: [https://www.stmintz.com/ccc/index.php?id=251522 Re: Couple of chess programming questions - MDT and parallel] by [[Scott Farrell]], [[CCC]], September 10, 2002 » [[Parallel Search]]
* [https://www.stmintz.com/ccc/index.php?id=251543 calculating the PV using MTD] by [[Fabien Letouzey]], [[CCC]], September 11, 2002 » [[Principal variation]]
* [https://www.stmintz.com/ccc/index.php?id=251687 MTD: an observation and a question] by [[Martin Fierz]], [[CCC]], September 11, 2002
'''2003'''
* [https://www.stmintz.com/ccc/index.php?id=278172 MTD(f), Quiscient Search, and hashing Quiscient nodes] by Joel, [[CCC]], January 19, 2003
* [https://www.stmintz.com/ccc/index.php?id=308755 MTD(f) and storing the PV] by [[Tord Romstad]], [[CCC]], July 29, 2003
* [https://www.stmintz.com/ccc/index.php?id=311269 MTD, IID, fail-low, root-research] by Juergen Wolf, [[CCC]], August 14, 2003 » [[Internal Iterative Deepening]], [[Fail-Low]], [[Root]]
: [https://www.stmintz.com/ccc/index.php?id=311280 Re: MTD, IID, fail-low, root-research] by [[Rudolf Huber]], [[CCC]], August 14, 2003
* [https://www.stmintz.com/ccc/index.php?id=311577 MTD(f) and hash table size] by [[Tord Romstad]], [[CCC]], August 16, 2003
* [https://www.stmintz.com/ccc/index.php?id=336505 MTD(F) results] by [[Anthony Cozzie]], [[CCC]], December 16, 2003
: [https://www.stmintz.com/ccc/index.php?id=336661 Re: MTD(F) results] by [[Rudolf Huber]], [[CCC]], December 17, 2003
'''2004'''
* [https://www.stmintz.com/ccc/index.php?id=342287 QSearch() as PVS() ?] by [[Matthias Gemuh]], [[CCC]], January 14, 2004
: [https://www.stmintz.com/ccc/index.php?id=342303 MTD(f)] by [[Tord Romstad]], [[CCC]], January 14, 2004
* [https://www.stmintz.com/ccc/index.php?id=353798 Search behavior in a case of root fail high/low] by [[Sergei Markoff|Sergei S. Markoff]], [[CCC]], March 10, 2004 » [[Fail-High]], [[Fail-Low]], [[Root]]
* [https://www.stmintz.com/ccc/index.php?id=354078 mtd(f) and null move] by [[Peter Aloysius Harjanto|Peter Alloysius]], [[CCC]] March 11, 2004
* [https://www.stmintz.com/ccc/index.php?id=359886 Question for the MTD(f) experts] by [[Dann Corbit]], [[CCC]], April 14, 2004
* [https://www.stmintz.com/ccc/index.php?id=377240 An MTD(f) question about NULL MOVE searching] by [[Dann Corbit]], [[CCC]], July 16, 2004
* [https://www.stmintz.com/ccc/index.php?id=379136 MTD(f)] by [[Stuart Cracraft]], [[CCC]], July 26, 2004
* [https://www.stmintz.com/ccc/index.php?id=381595 MTD Drivers] by [[Tor Lattimore]], [[CCC]], August 10, 2004
==2005 ...==
* [https://www.stmintz.com/ccc/index.php?id=431426 MTD(f)] by [[Tor Lattimore|Tor Alexander Lattimore]], [[CCC]], June 15, 2005
* [https://www.stmintz.com/ccc/index.php?id=469209 Rybka uses PVS and not MTD(f). Its no Fruit-Clone] by [[Chrilly Donninger]], [[CCC]] December 12, 2005
* [http://www.open-aurec.com/wbforum/viewtopic.php?t=3960 MTD(f) versus Alpha-Beta] by [[Harm Geert Muller]], [[Computer Chess Forums|Winboard Forum]], December 13, 2005
* [https://www.stmintz.com/ccc/index.php?id=471300 MTD(f)] by [[Engin Üstün]], [[CCC]], December 17, 2005
* [https://www.stmintz.com/ccc/index.php?id=480865 MTD(f) and Wikipedia] by [[Joachim Rang]], [[CCC]], January 19, 2006
* [http://www.talkchess.com/forum/viewtopic.php?t=21360 MTD(f) experiences] by [[Don Dailey]], [[CCC]], May 25, 2008
==2010 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=53388 An Idea Of speeding up MTD-f] by [[Pio Korinth]], [[CCC]], August 22, 2014
* [http://www.talkchess.com/forum/viewtopic.php?t=60583 MTD-f: Extracting PV ?] by [[Henk van den Belt]], [[CCC]], June 24, 2016
* [https://groups.google.com/forum/#!topic/fishcooking/ivM7n3DFQX8 mtd(f)] by stefano.c, [[Computer Chess Forums|FishCooking]], August 7, 2016 » [[Stockfish]]

=External Links=
* [http://people.csail.mit.edu/plaat/mtdf.html MTD(f) - A Minimax Algorithm faster than NegaScout] by [[Aske Plaat]]
* [https://en.wikipedia.org/wiki/MTD-f MTD(f) from Wikipedia]
* [[Videos#JanGarbarek|Jan Garbarek]], [[Videos#KeithJarrett|Keith Jarrett]], [https://en.wikipedia.org/wiki/Palle_Danielsson Palle Danielsson], [[Videos#JonChristensen|Jon Christensen]] - [https://en.wikipedia.org/wiki/Belonging_%28album%29 Spiral Dance], 1974, [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: {{#evu:https://www.youtube.com/watch?v=oZuPd9dVApo|alignment=left|valignment=top}}

=References=
<references />

'''[[Search|Up one level]]'''

Navigation menu