Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: questions?

Author: Ed Schröder

Date: 14:34:50 04/08/04

Go up one level in this thread


On April 08, 2004 at 13:36:03, Uri Blass wrote:

>On April 08, 2004 at 12:22:15, Ed Schröder wrote:
>
>>On April 08, 2004 at 09:04:15, Harald Lüßen wrote:
>>
>>>On April 08, 2004 at 07:10:29, Daniel Shawul wrote:
>>>
>>>>Hi
>>>>Here are some questions
>>>>
>>>>2.In Ed's paper there are some tricks done at horizon.
>>>>   trick one     if(score - (margin + largest hanging piece) > beta)
>>>>                        don't do quiescence
>>>>   trick two     if(score - 900 > beta)
>>>>                        don't do quiescence
>>>>   My question is every body does
>>>>              score=eval()
>>>>              if(score > beta)
>>>>                   don't do quiescence;
>>>>   So i don't see how the tricks work?
>>
>>
>>>His alpha is our beta and vice versa.
>>
>>Really?
>>
>>If true I need to re-read some papers :)
>>
>>To clarify, suppose an aspiration search with a 0.50 window and a best move with
>>a 0.20 score then going to the next iteration I get a window of:
>>
>>ALPHA = -0.30
>>BETA = 0.70
>>
>>Your comment suggests:
>>
>>ALPHA = 0.70
>>BETA = -0.30
>>
>>Ed


>No
>
>
>suppose that we start with position of big advantage for white and you have
>alpha=3.00 beta=4.00
>
>His point is that the meaning of alpha and beta is different.
>Search is a recursive function so alpha=3.00 beta=4.00 turns out to be
>alpha=--4.00 beta=-3.00 after a recursive call.
>
>You try to prune moves before calling search so you may use
>alpha=3.00 beta=4.00  when most programmer try to prune moves after calling
>search so they have alpha=-4.00 beta=-3.00

Confusion all over here, I call "search" only once.


>Your pruning trick when it is white to move is

Realize the above definition is ambiguous, crucial: do do you mean before or
after "make_move"?




>if(score - (margin + largest hanging piece) > 4.00 pawns)
>                        don't do quiescence
>
>It is translated after calling search to
>
>if (score+margin+largest hanging piece<-4.00 pawns
>don't do qsearch.
>
>I guess also that your score is not from the same side to move like other
>programmers.

That could be very well the case, for me ALPHA means the "best_score_so_far" and
BETA is the upper limit of the window. I assume the internal organization of my
search is different than other programs although the outcome and behavior is the
same. In a nutshell:

static int ab[64];               // create depth based stack for alpha-beta
static int depth;

When I am on ply-3 in the search:

   depth=3;
   ab[depth]   = ALPHA
   ab[depth-1] = BETA

When going one ply deeper in the search (ply-4), I do:

   depth++;
   ab[depth]=ab[depth-2];

Then Alpha-Beta pruning:

   if (ab[depth-1] + score < 0)    // no alpha/beta -> do next move
   ..... prune here ......

Are you still with me?

Ed :)



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.