> > I'd be a bit more careful about the comparison with alpha-beta in > > section 2.3. I believe that iterative deepening of alpha-beta is very > > common. It can be argued that when iterative deepening is used, an > > early termination isn't very detrimental. [...] > > Alpha-Beta is for practical reasons of course also an anytime algorithm. > >[...] .My reaction when I read this > > statement was: "iterative deepening is not yet invented in the Go > > community". > > Of course iterative deepening exists. But to me it does not make Alpha-Beta > algorithm an "anytime" algorithm. First because the unit (one iteration) > costs much more in alpha-beta. By "iteration" I mean that if you stop your > program during an iteration, then it behaves as in the last iteration (the > current iteration is lost). In MC/UCT, the iteration takes less than 1 ms. > Second, and more importantly, the time increase of the iteration is huge in > alpha-beta. The time to perform the search at depth k+1 is much higher than > for depth k. > > So for me the reasons we gave comparing to alpha-beta hold, even if you are > right by saying that we should have mentionned iterative deepening.
Maybe my implementation of alpha-beta with iterative deepening is poor, but here's what I do: * When searching at depth k, create a reordered move list for the future search at depth k+1 * If a timeout occurs while searching at a particular depth, return the best move found so far For the reordering, here's what I do: * If a move evaluation doesn't result in an improved minimax value, leave its position alone * If a move evaluation does result in an improved minimax value, move it to the head of the list By using that method, I guarantee that the best move at depth k is searched first at depth k+1. If a timeout occurs, an early stop caused no harm in the evaluation. If more time is available, the 2nd move considered is the 2nd best move at depth k+1. Let's say the 2nd best proved to indeed be not as good but that the 3rd best shows an enhanced result. Even if there's 10 more moves to look at, a timeout will cause the alpha-beta to return what would have otherwise been considered the 3rd best at depth k, but is really the best of what has been considered at depth k+1. Regardless of if a true best for depth k+1 is returned, it's guaranteed that the move returned from a partial search is as good as or better than the results from a search at depth k. The extra effort isn't a waste. I also cache the partial search and allow alpha-beta to pick up where it left off. _______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/