Author: Uri Blass
Date: 17:43:01 03/13/04
Go up one level in this thread
On March 13, 2004 at 20:29:34, Dan Honeycutt wrote:
>On March 13, 2004 at 17:47:06, Uri Blass wrote:
>
>>On March 13, 2004 at 17:40:06, Russell Reagan wrote:
>>
>>>On March 13, 2004 at 17:32:49, Uri Blass wrote:
>>>
>>>>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.
>>>
>>>Is this what you are wanting to do? Let's say the search normally looks like
>>>this:
>>>
>>>int AlphaBeta(int depth, int alpha, int beta)
>>>{
>>> if (depth == 0)
>>> return Evaluate();
>>>
>>> TryRepetition(); // <--------
>>> TryHashTable(); // <--------
>>> TryNullMove(); // <--------
>>>
>>> GenerateLegalMoves();
>>> while (MovesLeft()) {
>>> MakeNextMove();
>>> val = -AlphaBeta(depth - 1, -beta, -alpha);
>>> UnmakeMove();
>>> if (val >= beta)
>>> return beta;
>>> if (val > alpha)
>>> alpha = val;
>>> }
>>> return alpha;
>>>}
>>>
>>>You are wanting to do this?
>>>
>>>int AlphaBeta(int depth, int alpha, int beta)
>>>{
>>> if (depth == 0)
>>> return Evaluate();
>>>
>>> GenerateLegalMoves();
>>> while (MovesLeft()) {
>>> MakeNextMove();
>>>
>>> TryRepetition(); // <--------
>>> TryHashTable(); // <--------
>>> TryNullMove(); // <--------
>>>
>>> val = -AlphaBeta(depth - 1, -beta, -alpha);
>>> UnmakeMove();
>>> if (val >= beta)
>>> return beta;
>>> if (val > alpha)
>>> alpha = val;
>>> }
>>> return alpha;
>>>}
>>>
>>>Basically to avoid the extra function call?
>>
>>Yes
>>Except that I thought to trynullmove in the beginning of the search.
>>
>>It may be better to try null move also not in the beginning of the search
>>because it is possible that null move does not have search call and only call
>>qsearch.
>>
>>Uri
>
>I don't think you want TryNullMove() where shown in the second example. After
>MakeNextMove() you have a new position which could be a repetition or be in the
>hash table. but TryNullMove() should come before GenerateLegalMoves().
>
>Dan H.
I do not understand.
The order is the same order in both examples.
The difference is that there are less calls to search in the second example.
In both cases tryNullMove is done after
makenextmove,tryRepetition and tryHash.
Maybe I should not care about small speed optimization but I see no reason not
to do the code faster if I can do it without doing it less easy to read.
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.