Author: Uri Blass
Date: 14:56:28 03/13/04
Go up one level in this thread
On March 13, 2004 at 17:38:40, Andrew Williams wrote:
>On March 13, 2004 at 17:32:49, Uri Blass wrote:
>
>>On March 13, 2004 at 17:12:49, Andrew Williams wrote:
>>
>>>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.
>>
>>I think that you do not understand my idea
>>
>>I suggest to do exactly the same things in the same order but to check for
>>repetition or hash cut off before calling search and not after calling search.
>>
>
>Are you suggesting that crafty checks for a hash cutoff *after* searching the
>current position? That seems a bit unlikely. Perhaps you have misunderstood
>Bob's code?
>
>Andrew
No
I guess that I did not explain myself clearly.
My point is that Crafty checks for hash cutoff after calling search(not after
performing a search) with a lot of parameters.
This is from Crafty's code:
Crafty begins
int Search(TREE * RESTRICT tree, int alpha, int beta, int wtm, int depth,
int ply, int do_null, int lp_recapture)
/*
----------------------------------------------------------
| |
| check for draw by repetition. |
| |
----------------------------------------------------------
*/
/*
----------------------------------------------------------
| |
| now call HashProbe() to see if this position has been |
| searched before. if so, we may get a real score, |
| produce a cutoff, or get nothing more than a good move |
| to try first. there are four cases to handle:
I thought to have all these checks before the recursive call of the search.
I guess that the fact that I used the words "in the end of the search" caused
the confusion.
It is not the end of the search but I go back to the beginning of the search to
do recursive search so I called it "the end of the search".
Uri
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.