GODPAPER | All Packages | All Classes | Index | Frames No Frames |
MTDF

Package | com.lookbackon.AI.searching
Class | public class MTDF
Inheritance | MTDF Object

Public Methods

| Method | Defined By
--- | --- | ---
|  | MTDF(position:Array2, firstGuess:int, depth:int) MTD(f) is another clever trick which uses AlphaBeta's property of returning boundaries on the true MiniMax value. MTD(f) makes a few calls to AlphaBeta with changing windows to get the true value of the position. | MTDF

Constructor Detail

MTDF | () | Constructor

`public function MTDF(position:Array2, firstGuess:int, depth:int)`

MTD(f) is another clever trick which uses AlphaBeta's property of returning boundaries on the true MiniMax value. MTD(f) makes a few calls to AlphaBeta with changing windows to get the true value of the position. Each time it gets either a lower or an upper bound on the current position's value. These bounds converge toward the true MiniMax value. MTD(f) gets a 'firstguess' value from the last iterative deepening stage. By zooming in on the true MiniMax value with its minimal window calls, it arrives at the same result as a normal AlphaBeta search, but generally uses less nodes to find this value. I read that for MTD to work, you have to store both upper and lower bounds in your hashtable instead of just one value and bound type. The idea is that MTD will often re-search a position with a different alpha-beta window, and it would be a shame to forget results of earlier searches - which would happen if you were to overwrite the stored information that a position has a upper bound of 100 with the information that it also has a lower bound of 90.

Parameters

| `position:Array2`
| `firstGuess:int`
| `depth:int`

See also

http://www.fierz.ch/strategy.htm

Thu Jan 16 2014, 01:11 PM +08:00