Author: Gian-Carlo Pascutto
Date: 08:03:07 11/23/01
Go up one level in this thread
On November 23, 2001 at 10:40:21, Robert Hyatt wrote: >On November 23, 2001 at 09:21:26, Matthias Gemuh wrote: > >> >>Hi Experts, >>look at this piece of code: >> >> >>p = 0; q = 0; >> >>int AlphaBeta(int depth, int alpha, int beta) >>{ >> nLegalMoveCount = 0; >> if (depth == 0) return Evaluate(); >> GenerateMoves(); >> while (MovesLeft()) { >> MakeNextMove(); >> if (!inCheck()) { >> >> nLegalMoveCount++; p = p + 1; >> if (nLegalMoveCount == 1) q = q + 1; >> >> val = -AlphaBeta(depth - 1, -beta, -alpha); >> UnmakeMove(); >> if (val >= beta) return beta; >> if (val > alpha) alpha = val; >> } >> } >> return alpha; >>} >> >> >>Is the ratio q/p the thing bearing the sophiscated name "Branching Factor" ? >>Optimal move ordering should mean q/p = 1. Do Profis come close to this? >>In my pogram q/p is about 1/6 or 1/7. Must I weep ? >> >>Thanx, >>Matthias. > > >Nope. Branching factor would be total_moves_generated / total_movgen_calls >or some such estimate that tells you, on average, how many moves you generate >for a specific node. > >Effective branching factor (much more commonly used here) is the time to >search iteration N+1 divided by the time to search iteration N. From looking at his code, what I guess he's trying to do is to measure move ordering efficiency (but in a wrong way). The most common way to do that is fail-high-first rate. How many times when you fail high is it on the first move? >90% is usually considered good enough -- GCP
This page took 0 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.