Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: New opponent programmer, with some beginner's questions

Author: Bo Persson

Date: 14:18:23 11/21/05

Go up one level in this thread


On November 21, 2005 at 16:38:14, John Haugeland wrote:

>>
>>Several techniques exist.  The most common is to disable null move
>>pruning when the side to move has very little material left, and in
>>pawn endgames.  Some programs also avoid null moves when the side to
>>move has low safe mobility.  There are also search-based methods.
>>You can do a reduced-depth verification search after the null move
>>search, or allow two (but never three) null moves in a row.
>
>1) Sorry, I'm a little further behind in chess speak than you might expect.
>What's low safe mobility, and how do I detect it?

Low safe mobility must mean that you have few safe places to move to. At or
close to a zugswang, perhaps?

How you detect it depends heavily on your board representation, of course.  :-)


>
>2) Why never three null moves?  At that point have we crossed too far into
>"that'll never happen" land for the results to be useful?

There are several problems here, one being that "pass-pass-pass" doesn't move
the game further. Another is that you generally reduce the search depth after a
null move. If you have three reductions in a row, there will not be much left.

It is even debatable (just wait!) if you should allow two null moves in row.

>
>>In my experience, zugzwang isn't the most serious problem with
>>null move pruning.  The really big problem is that it tends to
>>prune away long, quiet lines where there are no short-term
>>tactical or positional threats along the way, and the point
>>only becomes clear at the end of the line.
>
>Making sure I understand you correctly, you're suggesting null move incorrectly
>throws away game approaches where the benefit is too far in the future to be
>seen within null-move's scope, and therefore would not be detected?

If you reduce the search 2-3 plies after a null move, you will of course get a
bit near sighted. Tactics nearby will show up, perhaps earlier, while the end of
longer lines may move beyond the horizon.

On the other hand (the are always other hands in chess programming!), the idea
of using null moves is to discard some lines faster, so you can search other
lines even deeper. If you do it right, you might win more than you lose!

If we knew exactly how to do this, we would all be world champions. Now just a
few of the guys are. :-)


>
>>You probably want to have a look at transposition tables and static exchange
>>evaluation.
>
>Will do.  Anything else?

A good transposition table is essential for MTD(f), as that involves a lot of
re-searches. If you go for PVS search, it is just important!


Bo Persson



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.