Author: Robert Hyatt
Date: 13:03:08 04/29/04
Go up one level in this thread
On April 29, 2004 at 02:08:40, Tony Werten wrote:
>On April 28, 2004 at 16:14:39, Gerd Isenberg wrote:
>
>>On April 28, 2004 at 13:45:05, Ed Schröder wrote:
>>
>><snip>
>>
>>>What is double nullmove? I only know recursive nullmove allowing multiple
>>>nullmoves. I also read about "allowing 2 nullmoves in a row". What are the
>>>differences?
>>>
>>>I use recursive nullmove, not allowing the next ply after the nullmove to
>>>nullmove. So:
>>>
>>> e2-e4
>>> e7-e5
>>> **-** // nullmove
>>> d7-d5 // do no allow nullmove
>>>
>>>When I remove that check I get a few percent speedup, results look okay.
>>>
>>>Ed
>>
>>
>>Hi Ed,
>>
>>yes Double Nullmove, suggested and invented by Vincent, allows to play two
>>nullmoves in a row, to efficiently get rid of zugzwang problems. It is recursive
>>too, and if i understand correctly, it works fine without any nullmove
>>precondition:
>>
>> if (!inCheck)
>> {
>> if ( move2thisNode != null || move2ParentNode != null ) (
>> val = -doNullMoveSearch(depth-1-R,...);
>> if ( val >= beta ) return val; // return beta;
>> }
>> }
>>
>>May be Vincent may correct me.
>>It seems that there is an implicit kind of IID with 2R-2 too.
>
>Correct. Chech your hashtable again after the nullmove, if you didn't have a
>best move before.
>
>Then throw out IID.
>
>Tony
I don't see how/why one would throw out IID.
NULL can collapse search to q-search, which means the best you can hope for is a
capture should you search this position later. That's not the same as a "good"
move when depth>0. If you mean after the second null, you are now 8 plies short
of a full search, which in most middlegame positions is going to be into the
capture only search...
>
>>
>>What i do (did?), is a conditional confirmation search with same depth reduction
>>if a single nullmove fails high. To look whether there is at least one move
>>equal or better than doing nothing. Pseudo code like this:
>>
>> if (!inCheck)
>> {
>> eva = evaluate(&thread,..); // thead is negative if eg. own pieces hang
>> if ( move2thisNode != null && eva + thread - margin >= beta )
>> (
>> val = -doNullMoveSearch(depth-1-R,...);
>> if ( val >= beta )
>> { // nullmove cutoff?
>> if ( !likely2haveZugzwang() )
>> return val;
>> if ( search(depth-1-R,...) >= beta ) // one may even try depth-2-R
>> return val;
>> // else zugzwang detected
>> }
>> }
>> }
>>
>>Cheers,
>>Gerd
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.