Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: a question about redesigning my alphabeta

Author: Andrew Williams

Date: 14:12:49 03/13/04

Go up one level in this thread


On March 13, 2004 at 16:27:22, Uri Blass wrote:

>On March 13, 2004 at 16:14:39, Anthony Cozzie wrote:
>
>>On March 13, 2004 at 15:51:12, Uri Blass wrote:
>>
>>>I redesign my alphabeta and I think to start my alphabeta by trying null move
>>>because checking for repetition or for hash cut off can be done at the end of
>>>alpha beta.
>>>
>>>When I look at Crafty's code I see that Crafty starts not with null move but
>>>with checking for repetition and hash.
>>>
>>>My question is if there is a soecial reason that I do not understand that Crafty
>>>does it.
>>>It seems to me a waste of time to call alphabeta with all the parameters when it
>>>can be avoided.
>>>
>>>Uri
>>
>>Which costs more: checking for a repetition, or searching a subtree?
>>
>>anthony
>
>I do not understand the reason for this question.
>
>I need to check for repetition in any case but I think that it is better to do
>it not in the beginning of alphabeta but before you call alphabeta.
>
>
>
>Crafty has
>search(a lot of parameters)
>{
>1)check for repetition or hash cutoff
>2)make null move to see if you can prune based on null move
>3)for all moves
>a)make move
>b)calculate extensions
>c)search(a lot of parameters)
>
>I think that it should be
>
>1)make null move
>2)for all moves
>a)make move
>b)calculate extensions
>c)check if you can cut based on repetition or hash cut off
>d)call search(a lot of parameters)
>
>Am I missing something?
>
>Uri

After you make a null move, you *search* (REMAININGDEPTH-REDUCTIONFACTOR).
Although this is obviously less than a normal search (which would be to
REMAININGDEPTH), it is still a search. Normally a check for a hash cutoff is
just a probe into the hash table. A check for repetition just means checking the
last few positions to see if the hash signature is the same as the current
position.

Generally, you'd do the null move search *last*, because it will take more time
than the other two. In other words, if you think you might find a reason to
*not* do a full search (ie a search to REMAININGDEPTH) in the current position,
you check all the reasons *not* to do that search first. You would check them in
such a way that you do the *quickest* test first and the *slowest* test later.

I have a feeling that I have misunderstood your question.

Andrew



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.