Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: null move efficiency

Author: Sune Fischer

Date: 16:57:00 04/20/04

Go up one level in this thread



>>In principle it can work, but you must be very accurate in guessing when not to
>>nullmove because a full search is very expensive.
>
>I do some static threat detection in my eval.  Perhaps this is why this
>works better for me than for you and Tony.

Yes that could be it, but of course simple tactics can also cause the eval to
estimate completely wrong.

>Another interesting idea by Sergei Markoff, which didn't work for me the last
>time I tried, but which is used successfully in SmarThink, is to do a shallow
>null move search around alpha before deciding to do the full null move search.
>In pseudo code, it looks like this:

Interesting, I'll try this out. :)

>By the way, if you are satisfied with detecting a few of the most common
>mating patterns, and you are willing to accept rare cases of false matches
>(i.e. the static mate detector reports a mate when no mate is there), static
>mate detection is neither very difficult nor expensive.  It is not worth
>the cost if you use it only to decide when to avoid null move searches,
>but it is useful when deciding whether or not to search checks in the qsearch.

I have a simple detector like that, but it is nowhere near perfect.
It might be good enough for this job though, I'll try and fiddle with this some
more, it's on the todo-list, ...somewhere.

>I used to do static mate detection in the past, but had to sacrifice it when
>I simplified my attack tables.

As always it's a trade off, your new tables are probably faster? :)

>>Btw, extending on threats completely blows up the tree for me, it seems there
>>are certain position in the tree where you just have to live with a constant
>>mate threat. Practicly all nodes gets extended here and a blowup is unavoidable.
>
>This is strange.  I have very rarely seen something like this.  Do you have
>any examples of positions where this occurs?  How much did you extend for
>mate threats?

It happens pretty much in all attacking positions, eg. wac141 takes a lot longer
to solve with null-threat extension on.
I use half a ply for the extension.

Threat ext ON:
6	-234	13	      65536	1.Kf1 Re2
6	-233	20	     126618	1.Qxf4
6	397	28	     188155	1.Qxf4 Bxf4 2.Rxh5 gxh5 3.Rxh5 Bh6 4.Rxh6 Qh2+
7	981	119	    1014524	1.Qxf4 Be7 2.Rxh5 Bxf6
8	32756	617	    6225970	[Mate in 6] 1.Qxf4 Be7 2.Rxh5 Bxf6 3.Qxf6 Qg3+ 4.Kxg3
gxh5 5.Rxh5 Kf8 6.Rh8++

Threat ext OFF:
6	-234	11	      52773	1.Kf1 Re2
6	-233	14	      74051	1.Qxf4
6	321	25	     164139	1.Qxf4 Re6 2.Qg5 Rxf6 3.Qxf6 c5
7	981	66	     540949	1.Qxf4 Be5 2.Rxh5 Bxf6 3.Qxf6 gxh5 4.Rxh5 Qh2+ 5.Kxh2
8	32756	286	    2676756	[Mate in 6] 1.Qxf4 Be5 2.Rxh5 Bxf6 3.Qxf6 gxh5 4.Rxh5
Qh2+ 5.Kxh2 Rxd4 6.Qxf7++

I think there are simply too many mates in 1 encountered in the search, most of
them easy to refute and not worth an extension.

Do you have an example of a position where it does work well?
Perhaps wac141 is not a good position, although threats seem to be the major
theme.

>I currently use the following scheme for deciding how much to extend when
>the side to move is threatened by mate in one (PLY=60, value of pawn=128):
>
>if(static_eval > 0) extension = 45;
>else if(static_eval > -100) extension = 30;
>else if(static_eval > -200) extension = 20;
>else extension = 0;
>
>>I think it would be better to extend on a newly detected mate threat, ie. the
>>ply before we wasn't being mated.
>
>In fact, I think precisely the opposite.  If you have the same mate threat
>as two plies earlier, there is a serious risk of a horizon effect problem,
>and it is even more important to extend.  I add half a ply to the mate threat
>extension in this case (a special case of the Botvinnik-Markoff extension).

I found a few positions were it did work great, but on average
the Botvinnik-Markoff extension doesn't work either for me.
Perhaps it is related somehow.

I think the problem is a lot of nonsense gets extended.
Ie. you are in a position where there is a threat, you have only one single
refutation move, so it is practicly forced and this should be the move you
extend.

What can happen is that you make a different (totally losing) move, but now
instead of playing the winning threating move your opponent might also make a
different (neutral) move.
So we are back, the threat is still there, but the line is nonsense because you
and your opponent has played inferior moves already. This gets extended.

With really good move ordering this might be less of a problem, but still.
It seems better to me to just extend a threat once on its initial arrival.

-S.
>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.