Author: Vladimir Medvedev
Date: 05:08:20 07/12/02
How to handle position repetitions during search? I use the following method: (pseudo-code) int CountSearchRepetitions[MAXSIZE]; int CountHistoryRepetitions[MAXSIZE]; int AlphaBeta(Position pos, int alpha, int beta) { if( current_ply > 0 && CountHistoryRepetitions[ pos.GetHash() % MAXSIZE ]>0 ) { return min( 0, beta ); } if( CountSearchRepetitions[ pos.GetHash() % MAXSIZE ] > 1 ) { return min( 0, beta ); } while( get_next_move() ) { pos.MakeMove(); SearchRepetition[ pos.GetHash() % MAXSIZE ] ++; int eval = - AlphaBeta( pos, -beta, -alpha ); SearchRepetition[ pos.GetHash() % MAXSIZE ] --; pos.UnmakeMove(); ........ } } Is this correct? Shouldn't I return 0 instead min(0, beta)? Is it good to add repetitions in game history to repetitions on the current branch?
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.