Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: One stupid(?) null-move question

Author: Bernhard Bauer

Date: 21:20:16 08/10/98

Go up one level in this thread


On August 10, 1998 at 04:59:04, Robert Hyatt wrote:

>On August 09, 1998 at 23:57:46, blass uri wrote:
>
>>
>>On August 09, 1998 at 23:28:43, Jouni Uski wrote:
>>
>>>Can any programming expert explain this: There are some simple positions, which
>>>Fritz5 is not able to solve because of null-move(as I have been told). But
>>>are they totally unsolvable even if I give Fritz enough time let's say one
>>>year?!
>>
>>I did not give fritz one year to run but I believe Fritz cannot solve them
>>and it is not a problem of time.
>>If there is no threat then fritz simply do not analyze so it cannot see.
>>There are positions other programs can solve in 1 second and fritz cannot solve
>>because it sees the result of 1 move is a draw and cannot see the result of a
>>second move is better because there is no threat in the second move.
>>
>>These positions are not common because fritz does not use null move in king and
>>pawn endgames and when there are queens in the board
>>position with no threat are not common.
>>
>>Uri
>>>
>>>Jouni
>
>
>
>Basically null-move fails whenever there is a zugzwang.  Which means that
>not moving is the best move.  There are few such positions when there are

This is the usual argument: There are few positions where null move fails.
However, chess seems to be a set of many types which seldom occur.
Bruce Moreland comes to mind when he provided code for a KNN-KP endgame and
soon after he did it happend.

If your program fails on nullmove uou are likely to never notice and that
will strengthen you that null move problems are very rare.

>pieces on the board, but they do exist.  And in such positions, each time
>such a situation arises, the null-move fails high, not because the position
>is good for the side on move, but because the position is so bad that doing
>nothing is actually the best move...
>
>and no amount of searching will get around that, unless the null-move
>algorithm is modified in some way...  It is possible, however, to reduce
>the frequency of occurrences, but it means turning null-move off at selected
>nodes...

If you use a chess program for analysis purposes time (speed) may not be
the most important thing - you may prefer accuracy. You may want your
program to solve any type of position, at least to some debth.

Here are two examples with a *modified* crafty to avoid the null move problem.


FEN: 8/2b2pk1/6p1/p2p3p/P2P1P1P/2P3P1/2qB2QK/8 b

       +---+---+---+---+---+---+---+---+
    8  |   |   |   |   |   |   |   |   |
       +---+---+---+---+---+---+---+---+
    7  |   |   | *B|   |   | *P| *K|   |
       +---+---+---+---+---+---+---+---+
    6  |   |   |   |   |   |   | *P|   |
       +---+---+---+---+---+---+---+---+
    5  | *P|   |   | *P|   |   |   | *P|
       +---+---+---+---+---+---+---+---+
    4  | P |   |   | P |   | P |   | P |
       +---+---+---+---+---+---+---+---+
    3  |   |   | P |   |   |   | P |   |
       +---+---+---+---+---+---+---+---+
    2  |   |   | *Q| B |   |   | Q | K |
       +---+---+---+---+---+---+---+---+
    1  |   |   |   |   |   |   |   |   |
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

Black(1): end-game phase
              clearing hash tables
              time surplus   0.00  time limit 10:00 (10:00)
              depth   time  score   variation (1)
starting thread 1
                5     0.11  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                5->   0.24  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                6     0.28  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                6->   0.49  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                7     0.69  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                7->   1.70  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                8     2.39  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                8->   4.64  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                9     7.28  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
                9->  16.00  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
               10    23.75  -0.66   1. ... Qd1 2. Kh3 Qg4+ 3. Kh2 Qd1
               10    56.27     ++   1. ... Qxa4!!
               10     1:04  -0.27   1. ... Qxa4 2. Qxd5 Qc2 3. Qg2 a4 4.
                                    f5 Qxf5 5. Bc1 Bd6 6. Bg5
               10->   1:19  -0.27   1. ... Qxa4 2. Qxd5 Qc2 3. Qg2 a4 4.
                                    f5 Qxf5 5. Bc1 Bd6 6. Bg5
               11     1:55  -0.01   1. ... Qxa4 2. Qxd5 Qc2 3. Qg2 a4 4.
                                    f5 Qxf5 5. Bg5 f6 6. Be3 a3 7. c4
               11->   3:40  -0.01   1. ... Qxa4 2. Qxd5 Qc2 3. Qg2 a4 4.
                                    f5 Qxf5 5. Bg5 f6 6. Be3 a3 7. c4
               12     6:28  -0.08   1. ... Qxa4 2. Qxd5 Qc2 3. Qg2 a4 4.
                                    f5 Qxf5 5. Bc1 Qg4 6. Bg5 a3 7. Be7
                                    a2 8. Qxa2 Bxg3+
              time: 10:00  cpu:200%  mat:-1  n:128702148  nps:214364
              ext-> checks:10118863 recaps:653709 pawns:565899 1rep:4053339
              predicted:0  nodes:128702148  evals:11368176
              endgame tablebase-> probes done: 10  successful: 10
              hashing-> trans/ref:38%  pawn:24%  used:w99% b99%

Black(1): Qxa4
              time used:  10:00

and FEN: 2q5/8/6p1/B6p/7k/7P/R5PK/8 w

       +---+---+---+---+---+---+---+---+
    8  |   |   | *Q|   |   |   |   |   |
       +---+---+---+---+---+---+---+---+
    7  |   |   |   |   |   |   |   |   |
       +---+---+---+---+---+---+---+---+
    6  |   |   |   |   |   |   | *P|   |
       +---+---+---+---+---+---+---+---+
    5  | B |   |   |   |   |   |   | *P|
       +---+---+---+---+---+---+---+---+
    4  |   |   |   |   |   |   |   | *K|
       +---+---+---+---+---+---+---+---+
    3  |   |   |   |   |   |   |   | P |
       +---+---+---+---+---+---+---+---+
    2  | R |   |   |   |   |   | P | K |
       +---+---+---+---+---+---+---+---+
    1  |   |   |   |   |   |   |   |   |
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

White(1): end-game phase
              clearing hash tables
crafty is behind  1.5 on time, reducing by 1/3.
              time surplus   0.00  time limit 10:00 (10:00)
              depth   time  score   variation (1)
                4->   0.16  -1.68   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bf4
                5     0.30  -1.85   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qh8
                5->   0.75  -1.85   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qh8
                6     1.21  -1.79   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qe6 5. Bf6+ Kh6
                6->   2.91  -1.79   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qe6 5. Bf6+ Kh6
                7     4.43  -1.74   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qe6 5. Bf6+ Kh6 6. Kg2
                7->   8.86  -1.74   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qe6 5. Bf6+ Kh6 6. Kg2
                8    15.52  -1.79   1. g3+ Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bg5 Qe6 5. Bf6+ Kh6 6. Kg2 g5
                8    29.61  -1.74   1. Rb2 Kg5 2. Rf2 Kh6 3. Bd2+ Kg7 4.
                                    Bf4 Qe6 5. Kg3
                8    34.63  -1.66   1. Rf2 Qb8+ 2. Kh1 Qe5 3. Bd2 g5 4.
                                    Rf5 Qa1+ 5. Kh2 g4 6. hxg4 hxg4
                8->  34.97  -1.66   1. Rf2 Qb8+ 2. Kh1 Qe5 3. Bd2 g5 4.
                                    Rf5 Qa1+ 5. Kh2 g4 6. hxg4 hxg4
                9    35.27     ++   1. Rf2!!
                9    35.88  -0.66   1. Rf2 Qb8+ 2. Kh1 Qe5 3. Bd2 g5 4.
                                    Rf5 Qg3 5. Bxg5+ Qxg5 6. Rxg5 Kxg5
                9     2:03     ++   1. Rc2!!
                9     2:03   5.32   1. Rc2 Qxc2 2. Bd8+ g5 3. Ba5 Qe2 4.
                                    Bc7 Qf2 5. Bd6 Qg1+ 6. Kxg1 g4 7. hxg4
                                    Kxg4
                9->   2:03   5.32   1. Rc2 Qxc2 2. Bd8+ g5 3. Ba5 Qe2 4.
                                    Bc7 Qf2 5. Bd6 Qg1+ 6. Kxg1 g4 7. hxg4
                                    Kxg4
               10     2:04   5.23   1. Rc2 Qxc2 2. Bd8+ g5 3. Ba5 Qf2 4.
                                    Bc7 Qg1+ 5. Kxg1 g4 6. hxg4 Kxg4 7.
                                    Kf2 Kf5
               10->   5:49   5.23   1. Rc2 Qxc2 2. Bd8+ g5 3. Ba5 Qf2 4.
                                    Bc7 Qg1+ 5. Kxg1 g4 6. hxg4 Kxg4 7.
                                    Kf2 Kf5
               11     5:51   5.45   1. Rc2 Qxc2 2. Bd8+ g5 3. Ba5 Qf2 4.
                                    Bc7 Qg1+ 5. Kxg1 g4 6. hxg4 Kxg4 7.
                                    Kf2 Kf5 8. Bd6
              time: 10:00  cpu:199%  mat:-1  n:148236993  nps:246913
              ext-> checks:11681254 recaps:634070 pawns:248794 1rep:4894127
              predicted:0  nodes:148236993  evals:5607957
              endgame tablebase-> probes done: 160638  successful: 160638
              hashing-> trans/ref:39%  pawn:4%  used:w99% b99%

White(1): Rc2
              time used:  10:00

In the second example the *modified* crafty needs only 123 sec to find the win.
The original crafty will not find a win in 100 years.

Kind regards
Bernhard



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.