Zugzwang

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

lech
Posts: 1175
Joined: Sun Feb 14, 2010 10:02 pm

Zugzwang

Post by lech »

There are two possibilities to win a zugzwang position.

The first by a null move:
[d]8/8/8/8/1kB1q3/8/1PRb4/1K6 b - -
e.g. 1... Qh1+ 2.Ka2 Qa8+ 3.Kb1 Qe4 4.Bf7 Qf3 5.Rxd2 Qf1+ and 6... Qxf7 -+

The second by a longer way:
Richard Reti 1928
[d]4kr2/5p1K/3p1Q2/1p4P1/4P3/1PP5/7b/8 w - -
1.Kg7 ? Be5 =
1.Kh6 Be5 2.Kg7 Bh2 3.c4 bc4 4.e5 Bxe5 5.bxc4 +-

It is not good, if an engine is not able to solve both the positions.
It means that this engine will not find the solution in much more zugzwang positions.
Check your liked engines! :D
User avatar
Ajedrecista
Posts: 2223
Joined: Wed Jul 13, 2011 9:04 pm
Location: Madrid, Spain.

Re: Zugzwang.

Post by Ajedrecista »

Hello:
lech wrote:There are two possibilities to win a zugzwang position.

The first by a null move:
[d]8/8/8/8/1kB1q3/8/1PRb4/1K6 b - -
e.g. 1... Qh1+ 2.Ka2 Qa8+ 3.Kb1 Qe4 4.Bf7 Qf3 5.Rxd2 Qf1+ and 6... Qxf7 -+

The second by a longer way:
Richard Reti 1928
[d]4kr2/5p1K/3p1Q2/1p4P1/4P3/1PP5/7b/8 w - -
1.Kg7 ? Be5 =
1.Kh6 Be5 2.Kg7 Bh2 3.c4 bc4 4.e5 Bxe5 5.bxc4 +-

It is not good, if an engine is not able to solve both the positions.
It means that this engine will not find the solution in much more zugzwang positions.
Check your liked engines! :D
I gave a try to Houdini 1.5a w32, Critter 1.4 w32 and StockFish 2.2.2 JA w32; Intel i5-760 (four cores) at 2.8 GHz:

[d]8/8/8/8/1kB1q3/8/1PRb4/1K6 b - -

Code: Select all

Houdini 1.5a w32 (128 MB of hash; without TBs):

info multipv 1 depth 31 seldepth 68 score cp 433  time 113630 nodes 1374767421 n
ps 12098000 tbhits 0 hashfull 1000 pv d2g5 c4e2 g5f6 e2c4 b4a5 c4g8 f6h8 g8b3 a5
b6 b1a2 e4a8 a2b1 a8h1 c2c1 h1e4 b1a2 e4e2 c1c2 e2d3 c2c4 d3d2 c4c2 d2a5 a2b1 a5
f5 b3c4 f5e4 c4e2 h8e5 e2c4 e5d4 c4e2 b6a5 e2c4 d4e5 c4e6 e5h8 e6b3 a5b6
bestmove d2g5 ponder c4e2

Code: Select all

Critter 1.4 w32 (64 MB of hash; without TBs):

30/52  00:55 559683057 10082199  +4.52 Bf4 Be2 Be5 Bc4 Ka5 Bb3 Kb6 Ka2 Ka7 Rc4 Q
e1 Rc2 Qa5+ Kb1 Qb4 Bc4 Qa4 Be2 Kb8 Rd2 Qe4+ Rc2 Qe3 Bc4 Qe1+ Ka2 Qb4 Bb3 Qb7 Bc
4 Qe4 Bb3 Qa8+ Kb1 Qe4 Bc4 Ka7 Ba2 Kb6 Bb3 Qd3 Ka2 Bf6 Rc4 Qe2 Rc2 Qa6+ Kb1 Qf1+
 Ka2 Qa6+
stop
bestmove Bf4 ponder Be2

time: 101193 nodes: 1054876679 evals: 541361421 knps: 10424
phash: 99.85% evalcache: 36.86% lazy: 25.19% eg_recog: 53002157
splits: 279741

Code: Select all

StockFish 2.2.2 JA w32 (32 MB of hash):

info depth 31 seldepth 69 score cp 727 nodes 898873703 nps 9551410 time 94109 mu
ltipv 1 pv e4h1 b1a2 h1a8 a2b1 a8e4 c4f7 e4f3 c2d2 f3f1 b1c2 f1f7 d2d4 b4b5 b2b3
 f7h7 c2b2 h7h8 b2c3 h8e5 c3d3 e5f6 d4e4 f6b2 b3b4
info depth 32 currmove e4h1 currmovenumber 1
========================================================================

[d]4kr2/5p1K/3p1Q2/1p4P1/4P3/1PP5/7b/8 w - -

Code: Select all

Houdini 1.5a w32 (128 MB of hash; without TBs):

info multipv 1 depth 27 seldepth 67 score cp 350  time 121310 nodes 1137077848 n
ps 9373000 tbhits 0 hashfull 1000 pv h7h6 f8g8 h6h5 h2e5 f6f1 e8f8 b3b4 f7f6 g5f
6 f8f7 f1b5 f7f6 b5f1 f6e7 f1c4 g8g2 c4c7 e7e6 c7c8 e6e7 c3c4 g2h2 h5g4 h2g2 g4f
3 g2g3 f3f2 g3a3 b4b5 a3b3 c8b7 e7e6 b7d5 e6f6 f2e2 b3b2 e2f3 b2b3 f3f2 b3b4 d5d
3 f6e7 f2f3 b4b2 d3e3 b2h2 e3a7 e7e6 b5b6 h2h3 f3e2
bestmove h7h6 ponder f8g8

Code: Select all

Critter 1.4 w32 (64 MB of hash; without TBs):

27/65  01:44 968399459 9237984  +3.42 Kh6 Rg8 Kh5 Be5 Qf1 Ke7 Qxb5 Rh8+ Kg4 Rh2
Qb6 Ke6 Qd8 Rh8 Qc7 Rh2 b4 Rg2+ Kf3 Rxg5 c4 Rg3+ Kf2 f6 Qd8 Kf7 Qd7+ Kg6 Qe6 Kg7
 b5 Ra3 Qd5 Rb3 Ke2 Rb4 Kf3 Rb3+ Kg4 Rg3+ Kf5 Rf3+ Ke6
stop
bestmove Kh6 ponder Rg8

time: 110222 nodes: 1014481832 evals: 612194933 knps: 9203
phash: 90.93% evalcache: 22.30% lazy: 31.31% eg_recog: 8190749
splits: 150375

Code: Select all

StockFish 2.2.2 JA w32 (32 MB of hash):

info depth 40 seldepth 38 score cp 0 nodes 941236802 nps 9125728 time 103141 mul
tipv 1 pv g5g6 h2e5 f6e5 d6e5 g6g7 f7f5 e4f5 e8f7 g7f8q f7f8 c3c4 b5c4 b3c4 e5e4
 c4c5 e4e3 c5c6 f8e8 h7g7 e3e2 f5f6 e2e1q f6f7 e8d8 f7f8q d8c7 f8c5 e1g3 g7f6 g3
f3 f6g5 f3c6 c5c6 c7c6
info depth 41 currmove g5g6 currmovenumber 1
SF is unable of solve Réti's study with more than 9.41e+8 searched nodes. I hope no typos when I introduce the FEN strings in the engines (ran in console mode).

Regards from Spain.

Ajedrecista.
lech
Posts: 1175
Joined: Sun Feb 14, 2010 10:02 pm

Re: Zugzwang.

Post by lech »

Ajedrecista wrote:Hello:
lech wrote:There are two possibilities to win a zugzwang position.

The first by a null move:
[d]8/8/8/8/1kB1q3/8/1PRb4/1K6 b - -
e.g. 1... Qh1+ 2.Ka2 Qa8+ 3.Kb1 Qe4 4.Bf7 Qf3 5.Rxd2 Qf1+ and 6... Qxf7 -+

The second by a longer way:
Richard Reti 1928
[d]4kr2/5p1K/3p1Q2/1p4P1/4P3/1PP5/7b/8 w - -
1.Kg7 ? Be5 =
1.Kh6 Be5 2.Kg7 Bh2 3.c4 bc4 4.e5 Bxe5 5.bxc4 +-

It is not good, if an engine is not able to solve both the positions.
It means that this engine will not find the solution in much more zugzwang positions.
Check your liked engines! :D
I gave a try to Houdini 1.5a w32, Critter 1.4 w32 and StockFish 2.2.2 JA w32; Intel i5-760 (four cores) at 2.8 GHz:

[d]8/8/8/8/1kB1q3/8/1PRb4/1K6 b - -

Code: Select all

Houdini 1.5a w32 (128 MB of hash; without TBs):

info multipv 1 depth 31 seldepth 68 score cp 433  time 113630 nodes 1374767421 n
ps 12098000 tbhits 0 hashfull 1000 pv d2g5 c4e2 g5f6 e2c4 b4a5 c4g8 f6h8 g8b3 a5
b6 b1a2 e4a8 a2b1 a8h1 c2c1 h1e4 b1a2 e4e2 c1c2 e2d3 c2c4 d3d2 c4c2 d2a5 a2b1 a5
f5 b3c4 f5e4 c4e2 h8e5 e2c4 e5d4 c4e2 b6a5 e2c4 d4e5 c4e6 e5h8 e6b3 a5b6
bestmove d2g5 ponder c4e2

Code: Select all

Critter 1.4 w32 (64 MB of hash; without TBs):

30/52  00:55 559683057 10082199  +4.52 Bf4 Be2 Be5 Bc4 Ka5 Bb3 Kb6 Ka2 Ka7 Rc4 Q
e1 Rc2 Qa5+ Kb1 Qb4 Bc4 Qa4 Be2 Kb8 Rd2 Qe4+ Rc2 Qe3 Bc4 Qe1+ Ka2 Qb4 Bb3 Qb7 Bc
4 Qe4 Bb3 Qa8+ Kb1 Qe4 Bc4 Ka7 Ba2 Kb6 Bb3 Qd3 Ka2 Bf6 Rc4 Qe2 Rc2 Qa6+ Kb1 Qf1+
 Ka2 Qa6+
stop
bestmove Bf4 ponder Be2

time: 101193 nodes: 1054876679 evals: 541361421 knps: 10424
phash: 99.85% evalcache: 36.86% lazy: 25.19% eg_recog: 53002157
splits: 279741

Code: Select all

StockFish 2.2.2 JA w32 (32 MB of hash):

info depth 31 seldepth 69 score cp 727 nodes 898873703 nps 9551410 time 94109 mu
ltipv 1 pv e4h1 b1a2 h1a8 a2b1 a8e4 c4f7 e4f3 c2d2 f3f1 b1c2 f1f7 d2d4 b4b5 b2b3
 f7h7 c2b2 h7h8 b2c3 h8e5 c3d3 e5f6 d4e4 f6b2 b3b4
info depth 32 currmove e4h1 currmovenumber 1
========================================================================

[d]4kr2/5p1K/3p1Q2/1p4P1/4P3/1PP5/7b/8 w - -

Code: Select all

Houdini 1.5a w32 (128 MB of hash; without TBs):

info multipv 1 depth 27 seldepth 67 score cp 350  time 121310 nodes 1137077848 n
ps 9373000 tbhits 0 hashfull 1000 pv h7h6 f8g8 h6h5 h2e5 f6f1 e8f8 b3b4 f7f6 g5f
6 f8f7 f1b5 f7f6 b5f1 f6e7 f1c4 g8g2 c4c7 e7e6 c7c8 e6e7 c3c4 g2h2 h5g4 h2g2 g4f
3 g2g3 f3f2 g3a3 b4b5 a3b3 c8b7 e7e6 b7d5 e6f6 f2e2 b3b2 e2f3 b2b3 f3f2 b3b4 d5d
3 f6e7 f2f3 b4b2 d3e3 b2h2 e3a7 e7e6 b5b6 h2h3 f3e2
bestmove h7h6 ponder f8g8

Code: Select all

Critter 1.4 w32 (64 MB of hash; without TBs):

27/65  01:44 968399459 9237984  +3.42 Kh6 Rg8 Kh5 Be5 Qf1 Ke7 Qxb5 Rh8+ Kg4 Rh2
Qb6 Ke6 Qd8 Rh8 Qc7 Rh2 b4 Rg2+ Kf3 Rxg5 c4 Rg3+ Kf2 f6 Qd8 Kf7 Qd7+ Kg6 Qe6 Kg7
 b5 Ra3 Qd5 Rb3 Ke2 Rb4 Kf3 Rb3+ Kg4 Rg3+ Kf5 Rf3+ Ke6
stop
bestmove Kh6 ponder Rg8

time: 110222 nodes: 1014481832 evals: 612194933 knps: 9203
phash: 90.93% evalcache: 22.30% lazy: 31.31% eg_recog: 8190749
splits: 150375

Code: Select all

StockFish 2.2.2 JA w32 (32 MB of hash):

info depth 40 seldepth 38 score cp 0 nodes 941236802 nps 9125728 time 103141 mul
tipv 1 pv g5g6 h2e5 f6e5 d6e5 g6g7 f7f5 e4f5 e8f7 g7f8q f7f8 c3c4 b5c4 b3c4 e5e4
 c4c5 e4e3 c5c6 f8e8 h7g7 e3e2 f5f6 e2e1q f6f7 e8d8 f7f8q d8c7 f8c5 e1g3 g7f6 g3
f3 f6g5 f3c6 c5c6 c7c6
info depth 41 currmove g5g6 currmovenumber 1
SF is unable of solve Réti's study with more than 9.41e+8 searched nodes. I hope no typos when I introduce the FEN strings in the engines (ran in console mode).

Regards from Spain.

Ajedrecista.
Thanks, but IMO Houdini and Critter don't solve the first position.
zullil
Posts: 6442
Joined: Tue Jan 09, 2007 12:31 am
Location: PA USA
Full name: Louis Zulli

Re: Zugzwang.

Post by zullil »

lech wrote:
Thanks, but IMO Houdini and Critter don't solve the first position.
I agree, they don't solve it. See how they evaluate

[d]8/8/8/8/1kB1q3/8/1PRb4/1K6 w - -

and compare with Stockfish.

[EDIT] Actually, maybe Critter is beginning to see:

Code: Select all

36/71  11:28 6935647751 10076826  -4.62 Bg8 Qe2 Ka2 Qd3 Rc4+ Kb5 Rc8 Qd7 Rb8+ Kc5 Ra8 Qc6 Ra3 Bb4 Rg3 Qa6+ Kb1 Bd2 Rg4 Qf1+ Ka2 Bf4 Bb3 Kb4 Rg6 Qf2 Rg7 Ka5 Bd1 Qd4 Rg4 Kb4 Bc2 Qc4+ Kb1 Qf1+ Ka2 Qf2 Bd1 Qd2 Bb3 Qd6 Rh4 Qa6+ Kb1 Qf6
37/71- 22:06 13679063645 10313578  -4.90 Bg8 Qe2 Ka2 Qd3 Rc4+ Kb5 Rc8 Qd7 Rb8+ Kc5 Ra8 Qc6 Ra3 Bb4 Rg3 Qa6+ Kb1 Bd2 Rg4 Qf1+ Ka2 Bf4 Bb3 Kb4 Rg6 Qf2 Rg7 Ka5 Bd1 Qd4 Rg4 Kb4 Bc2 Qc4+ Kb1 Qf1+ Ka2 Qf2 Bd1 Qd2 Bb3 Qd6 Rh4 Qa6+ Kb1 Qf6
37/75- 45:13 28552049931 10523831  -5.19 Bg8 Qe2 Ka2 Qd3 Rc4+ Kb5 Rc8 Qd7 Rb8+ Kc5 Ra8 Qc6 Ra3 Bb4 Rg3 Qa6+ Kb1 Bd2 Rg4 Qf1+ Ka2 Bf4 Bb3 Kb4 Rg6 Qf2 Rg7 Ka5 Bd1 Qd4 Rg4 Kb4 Bc2 Qc4+ Kb1 Qf1+ Ka2 Qf2 Bd1 Qd2 Bb3 Qd6 Rh4 Qa6+ Kb1 Qf6
37/84- 118:48 77416128496 10860233  -5.61 Bg8 Qe2 Ka2 Qd3 Rc4+ Kb5 Rc8 Qd7 Rb8+ Kc5 Ra8 Qc6 Ra3 Bb4 Rg3 Qa6+ Kb1 Bd2 Rg4 Qf1+ Ka2 Bf4 Bb3 Kb4 Rg6 Qf2 Rg7 Ka5 Bd1 Qd4 Rg4 Kb4 Bc2 Qc4+ Kb1 Qf1+ Ka2 Qf2 Bd1 Qd2 Bb3 Qd6 Rh4 Qa6+ Kb1 Qf6
lech
Posts: 1175
Joined: Sun Feb 14, 2010 10:02 pm

Re: Zugzwang.

Post by lech »

zullil wrote:
lech wrote:
Thanks, but IMO Houdini and Critter don't solve the first position.
I agree, they don't solve it.
This is a serious flaw. It is possible that the two best engines are not able to win an entry (zugzwang) by null-move. :shock:
All clones of Ippolit have the disadvantage. :lol:
It is a simple position, only 7-pieces. :(
lech
Posts: 1175
Joined: Sun Feb 14, 2010 10:02 pm

Re: Zugzwang.

Post by lech »

Louis, I understand that you know that you replace the starting color.
User avatar
towforce
Posts: 12985
Joined: Thu Mar 09, 2006 12:57 am
Location: Birmingham UK
Full name: Graham Laight

Re: Zugzwang.

Post by towforce »

lech wrote:This is a serious flaw. It is possible that the two best engines are not able to win an entry (zugzwang) by null-move. :shock: {snip} It is a simple position, only 7-pieces. :(
Can anyone give a concise explanation as to why engines appear to struggle with these types of positions, please?
Human chess is partly about tactics and strategy, but mostly about memory
zullil
Posts: 6442
Joined: Tue Jan 09, 2007 12:31 am
Location: PA USA
Full name: Louis Zulli

Re: Zugzwang.

Post by zullil »

lech wrote:Louis, I understand that you know that you replace the starting color.
If an engine doesn't see that the position is a loss (for White) with White to move, then it won't see the that the position is a win (for Black) with Black to move.
Vinvin
Posts: 5328
Joined: Thu Mar 09, 2006 9:40 am
Full name: Vincent Lejeune

Re: Zugzwang

Post by Vinvin »

I've one a bit harder :

[d]4k1rr/1R1R3p/8/8/8/2K5/7P/8 w k - 0 1

[Event "hard CCC 2008"]
[Site "?"]
[Date "????.??.??"]
[Round "?"]
[White "Pos"]
[Black "Long mate threats/Zugzwang"]
[Result "1-0"]
[SetUp "1"]
[FEN "4k1rr/1R1R3p/8/8/8/2K5/7P/8 w k - 0 1"]
[PlyCount "13"]

1. Rd2 Rf8 2. Kc2 h6 3. h3 h5 4. h4 Rhg8 5. Kb2 Rh8 6. Ra7 Rhg8 7. Ka2 1-0

lech wrote:There are two possibilities to win a zugzwang position.

The first by a null move:
8/8/8/8/1kB1q3/8/1PRb4/1K6 b - -
e.g. 1... Qh1+ 2.Ka2 Qa8+ 3.Kb1 Qe4 4.Bf7 Qf3 5.Rxd2 Qf1+ and 6... Qxf7 -+

The second by a longer way:
Richard Reti 1928
4kr2/5p1K/3p1Q2/1p4P1/4P3/1PP5/7b/8 w - -
1.Kg7 ? Be5 =
1.Kh6 Be5 2.Kg7 Bh2 3.c4 bc4 4.e5 Bxe5 5.bxc4 +-

It is not good, if an engine is not able to solve both the positions.
It means that this engine will not find the solution in much more zugzwang positions.
Check your liked engines! :D
lech
Posts: 1175
Joined: Sun Feb 14, 2010 10:02 pm

Re: Zugzwang

Post by lech »

Vincent gave the position of Pal Benko study (2000).
[d]4k1rr/1R1R3p/8/8/8/2K5/7P/8 w k - 0 1
It is a very difficult for people zugzwang, in fact.
Zugzwangs often occur in endgames and are an important part of the game of chess (as sacrifice).
The solution to this problem is not easy for developers. We should require that the top engines solve these positions. :?
This is very disturbing, if it is different.