Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: strange Q search of Rebel

Author: José Carlos

Date: 04:01:49 12/27/03

Go up one level in this thread


On December 26, 2003 at 20:37:52, Uri Blass wrote:

>On December 26, 2003 at 18:15:55, José Carlos wrote:
>
>>On December 26, 2003 at 16:09:32, Uri Blass wrote:
>>
>>>On December 26, 2003 at 15:59:29, Tony Werten wrote:
>>>
>>>>On December 25, 2003 at 06:29:31, rasjid chan wrote:
>>>>
>>>>Ed has a different structure in his search.
>>>>
>>>>Most people have:
>>>>search
>>>>{
>>>>  evaluate
>>>>  for all moves do
>>>>    make move
>>>>    call search
>>>>    unmake move
>>>>  next
>>>>}
>>>>
>>>>Ed uses:
>>>>search
>>>>{
>>>>  for all moves do
>>>>    make move
>>>>    evaluate
>>>>    call search
>>>>    unmake move
>>>>  next
>>>>}
>>>>
>>>>The different location of evaluate causes all the differences like <=alpha
>>>>instead of >=beta  etc
>>>>
>>>>Tony
>>>
>>>I do not understand.
>>>
>>>How the fact that I evaluate at a different place make the difference?
>>>
>>>Note that I also evaluate every node but I do not see how it changes alpha and
>>>beta.
>>>
>>>Uri
>>
>>  Because if you evaluate after making the move, your looking at the position
>>from the other side (for the opponent), so now "your" alpha is the opponent's
>>"beta" and vicecersa.
>>
>>  José C.
>
>You are right only if makemove does not change the side to move.
>
>The only reason that I see not to change the side to move is some speed
>improvement because it is possible that you will not need to do it thanks to
>pruning but I wonder how many programmers really do not change the side to move
>during make move and if the reason was really the thoughts of
>some probably less than 1% speed improvement.
>
>I have in my program side=1^side both in make move and unmake move when side is
>a global varaible that is the side to move.
>
>Uri

  No. It has nothing to do with that. Let me show some pseudocode:

//////////////////////////////////////////////////////////////////
for all moves    // white to move in this node, alpha = 0, beta = 50
{
  MakeMove();    // black to move after this
  Evaluate();    // we get a score from black side, for example 10
  TryToPrune();  // now we want to prune for black against beta, so we need
                 // to ask "is -10 < alpha?". The answer is yes, so black
                 // fails high and we (white) can ignore this move
  if (pruned)
    continue;
  Search();
  etc...
}
//////////////////////////////////////////////////////////////////

  Note that I don't know if Ed does this. It's been a long time since I read his
web page. I'm only answering to the alpha beta switch question.

  José C.



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.