Computer Chess Club Archives


Search

Terms

Messages

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

Author: John Haugeland

Date: 13:38:14 11/21/05

Go up one level in this thread


>(I am guessing that you are Norwegian based on your name, I could
>be wrong).

By blood, yes, but I'm born and raised American, and have all the arrogance that
comes with it.  Heh.

>PVS has the practical advantage that it is by far the most common algorithm,
>which means that most of the code snippets you find here and elsewhere assumes
>a PVS search.  Adopting the techniques you see described to an MTD(f) search
>will sometimes be non-trivial.  On the other hand, being forced to do some
>independent thinking is not necessarily a bad thing.

I'm not terribly worried about issues like difficulty of implementation.  Much
more important to me are issues regarding software success.

>There are no deep issues here at all.  Null move pruning is based on the
>observation that zugzwang is a very rare phenomenon in chess, nothing
>more.  If you can allow your opponent to move twice in a row and still
>have the advantage, your position is probably very good.

Oh, it's to prevent observing a temporary gain in board quality?  Guh, that
hadn't even occurred to me.

>>And, how do I know when zugzwang is afoot, and therefore when to
>>stop null-move pruning?
>
>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?

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?

>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?

>>How much of a difference does null-move actually make,
>>anyway?  Can I get away without implementing it at all, or is it a major and
>>important tool that I'd be a moron to skip?
>
>No, not using recursive null-move pruning does not make you a moron.  Some
>of the world's strongest chess programs (most notably Chess Tiger and Junior)
>do not use null move pruning.  At least in the case of Chess Tiger, the
>author seems to firmly believe that whatever he is doing works better than
>null move.

But, he doesn't say what he's doing.

>You probably want to have a look at transposition tables and static exchange
>evaluation.

Will do.  Anything else?



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.