Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: I hate null moves

Author: Tord Romstad

Date: 05:31:54 01/30/04

Go up one level in this thread


On January 30, 2004 at 04:10:29, Ed Schröder wrote:

>On January 30, 2004 at 03:40:57, Tord Romstad wrote:
>
>>Recursive null move pruning is an effective way to speed up the search of
>>a chess engine, but I really detest its unfortunate side effects.  Most of all
>>i hate its tendency to cause search inconsistencies, and that it tends to prune
>>away strong lines where a piece must traverse a long and complicated path in
>>order to reach a good square.  I try to cure the second problem by using a
>>dynamic reduction factor, and I also plan to experiment with Markoff's idea
>>of trajectories to see if that can help to reduce the problem further.  I have
>>no idea what to do with the search inconsistencies.
>>
>>Most of all, I would like to throw away null move pruning (at least in its
>>traditional form) completely.  Unfortunately my attempts to get rid of it have
>>so far been very unsuccessful.  It simply slows down my engine too much, and
>>the other pruning I do is not enough to compensate.  I really need some
>>effective replacement for recursive null move pruning.
>>
>>Are there any known algorithms which are close to null move pruning in terms
>>of efficiency?  It is clear that such techniques exist, for instance whatever
>>Junior and Tiger do appears to be at least as effective.  But I cannot recall
>>having seen any really interesting ideas discussed in public.
>>
>>Tord
>
>
>Tord,
>
>I am sure you have read Rebel's approach -> static selective search as a base
>and controlled by nullmove during the first x plies catching the errors of the
>static evaluation.

I have read it, but always suspected I didn't quite understand it, and what
you write now confirms my suspicion.  Your section about nullmove on your
home page has always confuse me.  You start out by writing that your nullmoves
are used "in a totally different way", and proceed to describe something
that has always appeared to me to be completely ordinary null move pruning.
It now seems clear that I must have misunderstood something.

Do you mean that you never return the value of the null move search, but
only use it to make sure it is safe to prune?  If yes, what does your
search return?  Your static eval, or something different?  What are the
advantages of your approach compared to normal null move pruning?

If you just return the static eval, this is a variant of an idea I
experimented with recently:  When the static eval was so much higher
than beta that it seemed clear that only a direct tactical refutation
could prevent a fail high, I tried doing a nullmove search with a
simplified evaluation function in order to detect tactical threats.
If nothing serious was discovered, I returned the static eval.  The
idea was only moderately successful, and the code is now disabled.
It is something I should give a closer look some time later, though.

I also have a few other, untested ideas that might work, but I'll try
them out myself before I waste everybody's time and bandwidth explaining
them.

Thanks for your advice!

Tord




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.