MTD(f),
a search algorithm created by Aske Plaat and the short name for MTD(n, f), which stands for something like Memory-enhanced Test Driver with node n and value f. MTD is the name of a group of driver-algorithms that search minimax trees using null windowalpha-beta with 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 of value x, and one to find a lower bound of the same value [1].
function MTDF(root : node_type; f :integer; d :integer):integer;
g := f;
upperbound :=+INFINITY;
lowerbound :=-INFINITY;repeatif g == lowerbound then beta := g +1else beta := g;
g := AlphaBetaWithMemory(root, beta -1, beta, d);if g < beta then upperbound := g else lowerbound := g;until lowerbound >= upperbound;
return g;
Typically, one would call MTD(f) in an iterative deepening framework, the first guess the value of the previous iteration:
function iterative_deepening(root : node_type):integer;
firstguess :=0;for d =1to MAX_SEARCH_DEPTH do
firstguess := MTDF(root, firstguess, d);if times_up()thenbreak;
return firstguess;
a search algorithm created by Aske Plaat and the short name for MTD(n, f), which stands for something like Memory-enhanced Test Driver with node n and value f. MTD is the name of a group of driver-algorithms that search minimax trees using null window alpha-beta with 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 of value x, and one to find a lower bound of the same value [1].
Table of Contents
Pascal Pseudo Code
Original Pascal pseudo code by Aske Plaat:Typically, one would call MTD(f) in an iterative deepening framework, the first guess the value of the previous iteration:
C Pseudo Code
Slightly modified pseudo code in C:See Also
Publications
1994 ...
2000 ...
2010 ...
Forum Posts
1997 ...
- Tree search issues! by Magnus Heldestad, rgcc, May 26, 1997 » Enhanced Transposition Cutoff
1998Re: Tree search issues! by Robert Hyatt, rgcc, May 26, 1997
Re: Tree search issues! by Aske Plaat, rgcc, May 27, 1997
- New(?) search idea by Andrew Walker, CCC, January 21, 1998
1999Re: New(?) search idea by Don Dailey, CCC, January 22, 1998
MTD(f) (was Re: New(?) search idea.) by Stuart Cracraft, CCC, January 22, 1998
Re: New(?) search idea by Robert Hyatt, CCC, January 22, 1998 » Minimax Wall
2000 ...
- Getting a PV using MTD(f) by Tijs van Dam, CCC, February 08, 2000 » Principal variation
- MTD(f) and PV by David Rasmussen, rgcc, March 09, 2000 » Principal variation
2001- MTD(f) and the PV by Adrian Jackson, rgcc, March 16, 2001 » Principal variation
- Beating MTD(n,f) by Gian-Carlo Pascutto, CCC, June 05, 2001
- MTD(f) and killer heuristics by Marcus Heidkamp, CCC, July 12, 2001 » Killer Heuristic
- Performance of MTD(f) versus eval granularity? by Werner Mühlpfordt, CCC, November 01, 2001
2002- MTD(f) Problems by Oren Avraham, CCC, April 10, 2002
- About False Fail Highs, professionals, and MTD searches by Gian-Carlo Pascutto, CCC, April 12, 2002 » Fail-High
- Couple of chess programming questions by Eli Liang, CCC, September 10, 2002 » ProbCut, Evaluation, Bitboards, 0x88, Fractional Plies, Transposition Table
- calculating the PV using MTD by Fabien Letouzey, CCC, September 11, 2002 » Principal variation
- MTD: an observation and a question by Martin Fierz, CCC, September 11, 2002
2003Re: MTD(f) Problems by Rudolf Huber, CCC, April 11, 2002
Re: Couple of chess programming questions - MDT and parallel by Scott Farrell, CCC, September 10, 2002 » Parallel Search
- MTD(f), Quiscient Search, and hashing Quiscient nodes by Joel, CCC, January 19, 2003
- MTD(f) and storing the PV by Tord Romstad, CCC, July 29, 2003
- MTD, IID, fail-low, root-research by Juergen Wolf, CCC, August 14, 2003 » Internal Iterative Deepening, Fail-Low, Root
- MTD(f) and hash table size by Tord Romstad, CCC, August 16, 2003
- MTD(F) results by Anthony Cozzie, CCC, December 16, 2003
2004Re: MTD, IID, fail-low, root-research by Rudolf Huber, CCC, August 14, 2003
Re: MTD(F) results by Rudolf Huber, CCC, December 17, 2003
MTD(f) by Tord Romstad, CCC, January 14, 2004
2005 ...
2010 ...
External Links
References
What links here?
Up one level