Test position, Compliments of LC0

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

Moderators: hgm, Rebel, chrisw

Dann Corbit
Posts: 12538
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Test position, Compliments of LC0

Post by Dann Corbit »

AdminX wrote: Thu Aug 30, 2018 2:38 pm I enjoyed these Lc0 moves also.

[d]3r3k/1p4p1/4bq1p/1PQ2p2/2P1pP2/p5P1/PbRBB1KP/8 b - - 0 37

37. ... Rd3!
{snip}
On the first position, SF seems to vacillate over various choices when I analyze.

Code: Select all

Searching: 3r3k/1p4p1/4bq1p/1PQ2p2/2P1pP2/p5P1/PbRBB1KP/8 b - - 0 1
infinite: 0 time: 0 increment: 0 moves to go: 0

 1   +1.30   00:00    3825  Rd4 
 2   +0.52   00:00   39425  Rd4 Qc7 Rd7 Qc5 
 3   +0.26   00:00   59283  Rc8 Qb6 Qf7 Bb4 
 4   +0.33   00:00   78323  Qd4 Be3 Qxc5 Bxc5 
 5   +0.25   00:00   98112  Qd4 Qxd4 Bxd4 Bb4 Bb2 
 6   +0.31   00:00  126231  Qd4 Be3 Qxc5 Bxc5 Kg8 Be3 Kf7 
 7   +0.31   00:00  157696  Kh7 Qa7 Rd7 Be3 Qd8 Qa4 Qe7 
 8   +0.34   00:00  202829  Qd4 Qxd4 Bxd4 Ba5 Ra8 Be1 Bb2 Bf2 
 9   +0.29   00:00  231550  Qd4 Qxd4 Bxd4 Ba5 Ra8 Be1 Bb2 Bc3 Bxc3 Rxc3 Kh7 c5 
10   +0.45   00:00  277143  Qd4 Qxd4 Bxd4 Bb4 Bb2 Kf2 Kh7 Be7 Rc8 Ke3 Kg6 
11   +0.28   00:00  398806  Qd4 Qxd4 Bxd4 Ba5 Rc8 Bb4 Bb2 Bc3 Bxc3 Rxc3 Ra8 
12   +0.15   00:00  536500  Qd4 Qxd4 Rxd4 Kf2 Rd8 Ba5 Bd4+ Kg2 Ra8 Bb4 b6 Rd2 Ra4 Be7 
13   +0.24   00:00  694127  Qd4 Qxd4 Bxd4 Ba5 Ra8 Bb4 Kg8 c5 Ra4 Bd2 Bb3 axb3 a2 bxa4 a1=Q c6 bxc6 
14   +0.37   00:00  777409  Qd4 Qxd4 Bxd4 Ba5 Ra8 Bb4 Kg8 c5 Ra4 Bd2 Bb3 axb3 a2 bxa4 a1=Q c6 bxc6 Rxc6 Kf7 
15   +0.10   00:00   1653K  Kh7 Bb4 Ra8 Qc7 Qf7 Qxf7 Bxf7 c5 Bb3 Rd2 Rc8 Bxa3 Bxa3 axb3 Bxc5 Rd5 Kg6 g4 
16   +0.22   00:00   2028K  Kh7 Qb6 Rd7 Be3 Qf7 Qc5 Rd8 Qb4 Rb8 Qa5 Rc8 Qb4 Qf8 Qxf8 Rxf8 Kf2 Rd8 Rd2 Rc8 
17   +0.32   00:00   3136K  Kh7 Qb6 Rd7 Be3 Qf7 Qc5 Rd8 Qb4 Ra8 Bc5 Rc8 Be3 Qf8 Qxf8 Rxf8 Kf2 Rd8 Rd2 Rc8 h3 Bxc4 Rc2 Be6 
18   +0.39   00:00   5383K  Qd4 Qxd4 Bxd4 Bb4 Bb2 Ba5 Ra8 Bd2 Kh7 Kf2 Kg6 Be3 Ra4 Bc5 Kf6 Be3 Kf7 Rd2 Bxc4 Rd7+ Ke6 Rxb7 Bxa2 
19   +0.33   00:00   5658K  Qd4 Qxd4 Bxd4 Bb4 Bb2 Bc5 Kh7 Be3 Bf7 h3 Kg6 g4 Kf6 Kf2 Rc8 gxf5 h5 Bb6 Kxf5 Ke3 
20   +0.24   00:00   8215K  Qd4 Qxd4 Bxd4 Bb4 Bb2 Bc5 Kg8 Kf2 Kf7 Bb6 Ra8 Be3 Ke7 Bc5+ Kf6 Be3 Kf7 h3 Ke7 Bc5+ Kf6 Be3 Rc8 Bc1 Bxc1 
21   +0.34   00:00   8505K  Qd4 Qxd4 Bxd4 Bb4 Bb2 Bc5 Kg8 Kf2 Kf7 Bb6 Ra8 Be3 g6 Bc1 Ra4 Bd2 Ke7 Be3 Kf6 Bc5 Ra8 Be3 Rc8 Bc1 
22   +0.14   00:01  12406K  Qd4 Bb4 Qxc5 Bxc5 Kg8 Bb6 Ra8 h3 Kf7 Kf2 Kf6 g4 g6 Ke3 Ra4 Kf2 Kg7 Ke3 Kf7 Bc5 Kf6 Bb6 Ke7 Bc5+ Kf7 Kf2 g5 Be3 
23   +0.17   00:01  18098K  Kh7 Qb6 Rd7 Be3 Qf7 Qc5 Rd3 Kf2 Rd8 Qb4 Qf6 Kg2 Rd7 Qa5 Rd3 Bc5 Qf7 Qb4 g5 fxg5 hxg5 Bxd3 exd3 Rxb2 
24   +0.21   00:02  24149K  Kh7 Qb6 Rd7 Qc5 Rd3 Bb4 Qd8 Qe7 Qxe7 Bxe7 b6 Kf1 Rd7 Bb4 g5 Rd2 Rc7 Bd6 Ra7 Rd1 Kg6 Kf2 Ra4 c5 Bd4+ Rxd4 Rxd4 Ke3 Rxd6 cxd6 Bxa2 
25   +0.34   00:03  40393K  Kh7 Qb6 Rd7 Be3 Qf7 Qc5 Rd3 Kf2 Qd7 Kg2 Bc3 Kf2 Bf6 Bxd3 Qxd3 Rd2 Qb1 Kg2 Bb2 Qb4 Qxa2 Bd4 Qxc4 Qxc4 Bxc4 Bxb2 e3 Rc2 Bd3 Bxa3 Bxc2 Kf3 Bd3 Kxe3 Bxb5 Bb2 Bc6 Bc3 b5 
26   +0.11   00:08  90843K  Qf7 Qe3 Rc8 Qb3 Kh7 Qb4 Rd8 Bc3 g5 Bd2 Qg7 Be3 g4 Qc5 Qf7 Qb4 h5 Qc5 Rd7 Qb6 Kg6 Kf2 Kg7 Kg2 Kh7 Qc5 Kg6 Qb6 
27   +0.14   00:10 114005K  Rd3 Qb6 Rd7 Qc5 Qf7 Ba5 Rd3 Qc7 Kg8 Qxf7+ Kxf7 Kf2 g5 Bd2 g4 Bc1 Ke7 Bxd3 exd3 Bxb2 dxc2 Bxa3+ Kd7 c5 Bxa2 Ke3 Bc4 b6 Bd5 Kd2 Be4 Bb2 Kc6 Bd4 
28   +0.14   00:10 116717K  Rd3 Qb6 Rd7 Qc5 Qf7 Ba5 Rd3 Qc7 Kg8 Qxf7+ Kxf7 Kf2 g5 Bd2 g4 Ke1 Ke7 Ba5 Ke8 Bb6 Kd7 Kf2 Ke7 Ke1 Kf6 Bxd3 exd3 Rxb2 axb2 Bd4+ Kg6 Bxb2 Bxc4 
29   +0.19   00:11 120977K  Rd3 Qb6 Rd7 Qc5 Qf7 Bb4 Rd3 Qf8+ Qxf8 Bxf8 Kg8 Bc5 g5 Kf2 g4 Be3 Kf7 Bc1 Ke7 Bxd3 exd3 Bxb2 dxc2 Bxa3+ Kd7 c5 Bxa2 Ke3 Bc4 b6 Bd5 Kd2 Be4 
30   +0.10   00:16 174207K  Rd3 Ba5 Qf7 Qc7 Kg8 Qxf7+ Kxf7 Bd2 Rd8 Be3 Ra8 Kf2 Ra4 h3 g6 Bc5 Ra8 Be3 h5 Bc5 Rc8 Be3 Ke7 Bb6 Kf6 Be3 Ra8 Rd2 Ke7 Bb6 Ra4 Rc2 Kd6 Ke3 
31   +0.17   00:33 355192K  Qf7 Bb4 Rd3 h3 Kh7 Kh2 Bd4 Qe7 Qxe7 Bxe7 Bb2 Kg2 g6 Bb4 Rd8 Bc5 Kg7 Kf2 g5 Bb6 Ra8 Ke3 gxf4+ Kxf4 Kf6 g4 Be5+ Ke3 Kg5 gxf5 Bxf5 c5 Bf4+ Kd4 e3 Rc1 Be6 c6 bxc6 Rxc6 
32   +0.19   00:39 418990K  Qf7 Qb4 Qc7 Be3 Kh7 Rd2 Rc8 Rc2 Qf7 Bd2 Qd7 Be3 Qc7 Bf2 Qf7 Bb6 Rb8 Kf2 Re8 Kg2 Rc8 h3 Rb8 Be3 Qf6 Qc5 Rd8 Qb6 Rd3 Bxd3 exd3 Rd2 
33   +0.19   01:00 655894K  Rc8 Qd6 Kh7 Bb4 Ra8 Qc7 Qf7 Qxf7 Bxf7 Bc5 g5 Kf2 Be6 Bb6 Kg7 Ke3 Kg6 Bd4 Ra4 Bb6 Rb4 Bc5 Rb3+ Kf2 Rd3 Be3 g4 Bc1 Bd4+ Kg2 b6 Bd2 h5 Bxd3 exd3 Rc1 Bb2 Rd1 
34   +0.21   01:08 736888K  Rc8 Qd6 Rd8 Qc5 Kh7 Bb4 Ra8 Qc7 Qf7 Qxf7 Bxf7 Bc5 Be6 Kf2 Kg6 Bb6 Kf6 Rd2 Ke7 Be3 Kf7 h3 g6 Rc2 Kf6 g4 Rd8 Bb6 Rd3 Bxd3 exd3 Rxb2 axb2 Bd4+ Kf7 Bxb2 Bxc4 Ke3 fxg4 hxg4 
35   +0.17   01:18 845958K  Rc8 Qd6 Rd8 Qc5 Rd3 Bb4 Qf7 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Kf7 c5 Rd4 c6 bxc6 Bc5 Rd8 bxc6 Rc8 Bd6 Bxa2 Ba6 Ra8 Bb7 Re8 Bxa3 Bxa3 Rxa2 Bd6 Kf2 Bc7 Ba6 Rd8 Bc4+ Ke7 Ke2 Kd6 Rc2 Rb8 Ra2 Bb6 Rd2+ Kxc6 Be6 
36   +0.13   01:40   1091M  Rc8 Qb4 Rd8 Qc5 Rd3 Bb4 Qf7 Qf8+ Qxf8 Bxf8 Kh7 Bb4 g5 Kf1 Rd4 Bd2 g4 Ke1 Rd8 Bc3 Bxc3+ Rxc3 Ra8 Rc2 Kg7 Kd2 b6 c5 bxc5 Bc4 Kf6 Bxe6 Kxe6 Rxc5 Rd8+ Ke3 Rd3+ Ke2 Rd5 Rc6+ Kd7 Ke3 Rxb5 Ra6 Rc5 Rxa3 Kc6 Ra6+ Kd5 
37   +0.22   02:03   1350M  Qf7 Qb4 Qf6 Qc5 Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kh7 Be7 Rd7 Bc5 g5 Be3 Kg6 Kf2 Kf6 Rd2 Rc7 Bb6 Rc8 Rd8 gxf4 gxf4 Rxd8 Bxd8+ Kf7 Bb6 Ke7 Bc5+ Kd7 h3 Bf7 h4 h5 Bf1 Bg8 Be2 Be6 Ke3 Bc1+ Kd4 Bxf4 
38   +0.22   02:22   1560M  Qf7 Qb4 Qf6 Qc5 Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kh7 Be7 Rd7 Bc5 g5 Be3 Kg6 Kf2 Kf6 Rd2 Rc7 Bb6 Rc8 Rd8 gxf4 gxf4 Rxd8 Bxd8+ Kf7 Bb6 Ke7 Bc5+ Kd7 h3 Bf7 h4 h5 Bf1 Bg8 Be2 Be6 Ke3 Bc1+ Kd4 Bxf4 Bxa3 Bg3 Bxh5 Bxh4 Be2 
39   +0.21   03:35   2368M  Rd3 Bb4 Qf7 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Kf2 Kf7 Bd2 Ra8 Be3 Ra4 Bb6 g5 Ke3 Rb4 Kd2 g4 Bc5 Ra4 Ke3 Kg7 Be7 Kg6 Bf8 h5 Bd6 Kf6 Bc7 Ra8 c5 Ra4 c6 bxc6 bxc6 Bd4+ Kd2 Rb4 Bd6 Rb2 
40   +0.22   03:49   2519M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Kf2 Kf7 Bd2 Ra8 Be3 Ra4 Bb6 g5 Ke3 Rb4 Kd2 Kg7 Bc5 Ra4 Ke3 g4 Bb6 Kf6 Bd8+ Kf7 Bc7 h5 Bb6 Kf6 Bd8+ Kg6 Be7 Kf7 Bc5 Ra8 Bd4 Bxd4+ Kxd4 b6 Ke5 Rd8 
41   +0.14   05:08   3387M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bd2 Kf7 Kf2 g6 Be3 Ra8 Bb6 Ra4 Ke3 g5 Bh5+ Kg7 Be2 g4 Bc7 Kf6 Bd8+ Kf7 Bc7 Ke7 Bb6 h5 Bc5+ Kf7 Bd6 Bf6 Bc5 Bg7 Rd2 Bb2 Rd6 Bxc4 Rd7+ Kf6 
42   +0.21   05:37   3709M  Rd3 Bb4 Qf7 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bd2 Kf7 Kf2 Ra8 Be3 g6 Rd2 Ra4 Rc2 Kf6 Bb6 g5 Ke3 Kf7 Bc7 Bf6 Bd6 g4 Bc5 Ke8 Kf2 h5 Ke3 Kf7 Bd6 Bb2 Be5 Bxe5 fxe5 Rb4 Rc3 h4 c5 Bxa2 Rxa3 
43   +0.14   05:58   3946M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bd2 Ra8 Kf2 Kf7 Be3 g6 Rd2 Ra4 Rc2 Kf6 Bb6 g5 Ke3 Kf7 Bc7 Bf6 Bd6 g4 Bc5 Bb2 Bd6 Kf6 Bf8 Kg6 Bc5 h5 Bd4 Kf7 Bc5 Bf6 Bd6 h4 gxh4 Kg6 Bc5 
44   +0.14   08:36   5715M  Kh7 Bb4 Ra8 Qc7 Qf7 Qxf7 Bxf7 Bc5 g5 Be3 g4 Kf2 Ra4 Bc5 Kg6 Ke3 Kf6 Bf8 h5 Bc5 Ke6 Bb6 Ke7 Bc5+ Kd8 Bd6 Kd7 Be5 Bxe5 fxe5 Rb4 Rc3 h4 c5 Bxa2 Rxa3 Bd5 c6+ bxc6 bxc6+ Bxc6 gxh4 Bb7 h5 Rb2 Ra7 Ke6 h6 
45   +0.19   10:56   7274M  Rc8 Qb4 Qd4 Qe7 Qd7 Bb4 Qxe7 Bxe7 Kg8 Kf2 Kf7 Bd6 g5 Ke3 Kf6 Bb4 g4 Ba5 h5 Bb6 Ra8 Bf1 Ra4 Be2 Bf7 Bd8+ Ke6 Bb6 Ke7 Bf1 Be6 Bc5+ Kf6 Be2 Ra8 Bb6 Kg6 Bd4 Ra4 Bc5 Bf7 Be7 Ra8 Bd6 Kf6 Bc7 Rc8 Bb6 
46   +0.15   13:31   9007M  Rc8 Qd6 Rd8 Qc5 Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bb6 Kf7 Kf2 Bd7 Rd2 Ke7 Be3 Be6 Rc2 Rd8 Bc5+ Kf7 Bb6 Rd7 Be3 Ke7 Bc5+ Ke8 Be3 Rd8 Rd2 Rc8 Rc2 Ke7 Bd2 Rd8 Ba5 Rd3 Bb4+ Kd8 Ba5+ Ke8 Bb4 g5 Bxd3 exd3 Rd2 Bxc4 fxg5 
47   +0.10   15:10  10103M  Rc8 Qd6 Rd8 Qc5 Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bb6 Kf7 Kf2 Bd7 Rd2 Ke7 Be3 Be6 Rc2 Rd8 Bc5+ Kf7 Bb6 Rd3 Be3 g6 Bc1 Bd4+ Kg2 Ke8 Bxd3 exd3 Rd2 Bxc4 Bxa3 Bc3 Rd1 d2 Kf2 Bxa2 Bb2 Bb4 Ke3 Bb3 Rxd2 Bxd2+ Kxd2 Bc4 b6 Ke7 Be5 
48   +0.14   20:59  14079M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bb6 Kf7 Kf2 Bd7 Rd2 Ke7 Be3 Be6 Rc2 Rd8 Bc5+ Kf7 Bb6 Rd7 Be3 Ke7 Bc5+ Ke8 Be3 Rd8 Ke1 Ke7 Bb6 Rd3 Ba5 Ke8 Bb4 Kd8 Bxd3 exd3 Rg2 Bxc4 Kd2 Bxb5 g4 Bc4 gxf5 Bxa2 Rg1 Bc4 Bc3 Bxc3+ Kxc3 
49   +0.20   21:23  14348M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bb6 Kf7 Kf2 Bd7 Rd2 Ke7 Be3 Be6 Rc2 Rd8 Bc5+ Kf7 Bb6 Rd7 Be3 Ke7 Bc5+ Ke8 Be3 Rd8 Rd2 Rc8 Rc2 Ke7 Bb6 Bd7 Rd2 g6 Be3 Be6 Rc2 Rd8 Rd2 Rg8 Bc5+ Kf7 Be3 Ra8 Rd6 Rc8 Rb6 Rc7 Rd6 Ke7 
50   +0.20   23:18  15671M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Ba5 Rc8 Bb6 Kf7 Kf2 Bd7 Rd2 Ke7 Be3 Be6 Rc2 Rd8 Bc5+ Kf7 Bb6 Rd7 Be3 Ke7 Bc5+ Ke8 Be3 Rd8 Rd2 Rc8 Rc2 Ke7 Bb6 Bd7 Rd2 g6 Be3 Be6 Rc2 Rd8 Rd2 Rg8 Bc5+ Kf6 Bb6 g5 Rd6 Rc8 Rd8 Rxd8 Bxd8+ Kf7 Bb6 gxf4 gxf4 Ke7 
51   +0.19   26:40  17925M  Rd3 Bb4 Qd8 Qf8+ Qxf8 Bxf8 Kg8 Bb4 Rd8 Kf2 Kf7 Bd2 g6 Be3 Ke7 Rd2 Rg8 Bc5+ Kf7 Be3 g5 Rd6 gxf4 gxf4 Rc8 Rb6 Rc7 Rd6 Ke7 Rd2 Rc8 Rc2 Rh8 Bc5+ Kf6 Be3 Rd8 Rd2 Rc8 Rc2 Ke7 Bd2 Rd8 Bb4+ Kf7 Bc5 Kf6 Bb6 Rd3 Be3 Ke7 Bc5+ Kd7 Bb6 Rh3 Kg2 Rc3 Rd2+ Ke8 
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
chrisw
Posts: 4313
Joined: Tue Apr 03, 2012 4:28 pm

Re: Test position, Compliments of LC0

Post by chrisw »

zullil wrote: Thu Aug 30, 2018 11:54 pm
Jouni wrote: Thu Aug 30, 2018 10:12 pm Much faster solution with Houdini 6 tactical FiftyMoveDistance=30
Sure, but that's just cheating. :wink:
No it's not, it's the beginnings of an algorithmic solution to the problem. There are two ways

a) search using a null move variant, the come-and-get-me algorithm: the "losing" side just lets the "winning" side move continuously, if winning side can't safely push a pawn or safely capture anything within about 8 moves, maybe fewer, it's probably drawn, if winning side actually can't push a pawn or make a capture, safe or not, it's definitely drawn. Null-move is usually winning side side allows losing side to move, this is the same idea, inverted. Have eight moves, dear "winner". Oh, you can't actually do anything. Draw?

b) using same idea, only in evaluation. Make a bitmap of where "winning" can move each piece, if he has 6 to 8 free moves. Intersect with opponent occupied. Zero=draw. Make a bitmap of where "winning" can move each piece "safely", if no intersect, probably draw. NB include pawn pushes. If you understand bitmaps you'll be able to imagine up some quite straightforward code to do the necessary sliding tricks.

Not difficult to do. Well, I did an evaluator for it last year. The definite draw works well, the probable draw is subject to false positives, but is "probably" not intractable, or else it could function as a search guide. It does take calculation time, so, sensibly, needs an invoke-decider to trigger it.

This position would be evaluation solved in an instant, after fxg3 there's no possible way for any white piece to move to a square occupied by black, nor advance any pawn, what could be easier than that?
MikeGL
Posts: 1010
Joined: Thu Sep 01, 2011 2:49 pm

Re: Test position, Compliments of LC0

Post by MikeGL »

Looks like the ideas you've presented are sound and logical honestly.
I wonder why these were not implemented by top engines.
The idea on (a) looks good but might miss wins due to zugzwang. Let the winning side make a lot of moves, but some won games can be won with the help of zugzwang, let's say there's no weakness on the defending side but add a single tempo for the losing side and position of losing side collapses, thanks to zugzwang.
This types of win might be missed on your idea (a).
chrisw wrote: Fri Aug 31, 2018 1:46 am
zullil wrote: Thu Aug 30, 2018 11:54 pm
Jouni wrote: Thu Aug 30, 2018 10:12 pm Much faster solution with Houdini 6 tactical FiftyMoveDistance=30
Sure, but that's just cheating. :wink:
No it's not, it's the beginnings of an algorithmic solution to the problem. There are two ways

a) search using a null move variant, the come-and-get-me algorithm: the "losing" side just lets the "winning" side move continuously, if winning side can't safely push a pawn or safely capture anything within about 8 moves, maybe fewer, it's probably drawn, if winning side actually can't push a pawn or make a capture, safe or not, it's definitely drawn. Null-move is usually winning side side allows losing side to move, this is the same idea, inverted. Have eight moves, dear "winner". Oh, you can't actually do anything. Draw?

b) using same idea, only in evaluation. Make a bitmap of where "winning" can move each piece, if he has 6 to 8 free moves. Intersect with opponent occupied. Zero=draw. Make a bitmap of where "winning" can move each piece "safely", if no intersect, probably draw. NB include pawn pushes. If you understand bitmaps you'll be able to imagine up some quite straightforward code to do the necessary sliding tricks.

Not difficult to do. Well, I did an evaluator for it last year. The definite draw works well, the probable draw is subject to false positives, but is "probably" not intractable, or else it could function as a search guide. It does take calculation time, so, sensibly, needs an invoke-decider to trigger it.

This position would be evaluation solved in an instant, after fxg3 there's no possible way for any white piece to move to a square occupied by black, nor advance any pawn, what could be easier than that?
I told my wife that a husband is like a fine wine; he gets better with age. The next day, she locked me in the cellar.
lech
Posts: 1136
Joined: Sun Feb 14, 2010 10:02 pm

Re: Test position, Compliments of LC0

Post by lech »

George Tsavdaris wrote: Thu Aug 30, 2018 10:01 am
Steve Maughan wrote: Wed Aug 29, 2018 5:24 pm Houdini 6.03 Tactical does well on this position, finding Ng5 "instantly" on my XPS i9 Notebook.
How does Houdini fare in this position?
Avoid fxg3? that draws. Kd3 is an easy way to win(as also other moves).
How do engines of 2018 do on this anticomputer one?
Stockfish? Leela? My Stockfish reaches depth 76 still wanting to capture fxg3 :cry:

[d]2n1k3/1pPp2B1/pP1Pp3/P3Pp2/2R2Pp1/2K3np/5P1P/8 w - - 0 1
There are in chess some hidden fascinating ideas which are independent of ELO.
They are in very rare settings and need an additional code (in engines) to resolve such positions. They are not anticomputer ones ! (?)
Authors of top ELO engines are ignorating these difficult questions.
Earlier they tried to prove that it is impossible to resolve such problems. In fact, they gave some cheating tricks only.
Don't wait for more ELO or some new AI NN ideas (A0, Leela) !
It can't help !
Don't knock on the wall, try to find the door! :D
There are alpha-beta engines that can behave in quasi-intelligent way too.
Maybe, I can't be friendly, but let me be useful.
chrisw
Posts: 4313
Joined: Tue Apr 03, 2012 4:28 pm

Re: Test position, Compliments of LC0

Post by chrisw »

MikeGL wrote: Fri Aug 31, 2018 6:43 am Looks like the ideas you've presented are sound and logical honestly.
Of course
I wonder why these were not implemented by top engines.
There's a tendency to implement that which has already been implemented, one. Maybe nobody though it up, two. It consumes time, three. And possibly doesn't apply in most situations, four.
The idea on (a) looks good but might miss wins due to zugzwang. Let the winning side make a lot of moves, but some won games can be won with the help of zugzwang, let's say there's no weakness on the defending side but add a single tempo for the losing side and position of losing side collapses, thanks to zugzwang.
This types of win might be missed on your idea (a).
I've implemented (b) not (a), but I would think it could be got to function (sometimes seeing with inaccuracies is better than never knowing at all). Of course situations where white simply can't ever physically attack a black piece can't possibly be won, so it would get those right (eg the OP position).
So, what have we got, I'm thinking as I write, so maybe some erroring - inverse null move, come and get me. Where loser nulls. Winner starts off his 6-8 ply search, if winner can't capture (include checks and pawn pushes), in branch or leaf then he fails low, the loser null move fails high, in which case we now force loser to actually make a move as per normal search (check for zugswang). No reason why that can't recurse. If that move then fails high (eg finds a draw again) then ....
Alternatively if winner can capture, he fails high (although could test the capture here for non-stupidity) and the inverse null is negated.

That's no doubt algorithmicable, short draw search fitted in on node expansion if some triggers and filters passed (like big time losing, some material traded, and the easy-to-do evaluator predicts possible draw).

chrisw wrote: Fri Aug 31, 2018 1:46 am
zullil wrote: Thu Aug 30, 2018 11:54 pm
Jouni wrote: Thu Aug 30, 2018 10:12 pm Much faster solution with Houdini 6 tactical FiftyMoveDistance=30
Sure, but that's just cheating. :wink:
No it's not, it's the beginnings of an algorithmic solution to the problem. There are two ways

a) search using a null move variant, the come-and-get-me algorithm: the "losing" side just lets the "winning" side move continuously, if winning side can't safely push a pawn or safely capture anything within about 8 moves, maybe fewer, it's probably drawn, if winning side actually can't push a pawn or make a capture, safe or not, it's definitely drawn. Null-move is usually winning side side allows losing side to move, this is the same idea, inverted. Have eight moves, dear "winner". Oh, you can't actually do anything. Draw?

b) using same idea, only in evaluation. Make a bitmap of where "winning" can move each piece, if he has 6 to 8 free moves. Intersect with opponent occupied. Zero=draw. Make a bitmap of where "winning" can move each piece "safely", if no intersect, probably draw. NB include pawn pushes. If you understand bitmaps you'll be able to imagine up some quite straightforward code to do the necessary sliding tricks.

Not difficult to do. Well, I did an evaluator for it last year. The definite draw works well, the probable draw is subject to false positives, but is "probably" not intractable, or else it could function as a search guide. It does take calculation time, so, sensibly, needs an invoke-decider to trigger it.

This position would be evaluation solved in an instant, after fxg3 there's no possible way for any white piece to move to a square occupied by black, nor advance any pawn, what could be easier than that?
Paloma
Posts: 1167
Joined: Thu Dec 25, 2008 9:07 pm
Full name: Herbert L

Re: Test position, Compliments of LC0

Post by Paloma »

George Tsavdaris wrote: Thu Aug 30, 2018 10:01 am How does Houdini fare in this position?
Avoid fxg3? that draws. Kd3 is an easy way to win(as also other moves).
How do engines of 2018 do on this anticomputer one?
Stockfish? Leela? My Stockfish reaches depth 76 still wanting to capture fxg3 :cry:

[d]2n1k3/1pPp2B1/pP1Pp3/P3Pp2/2R2Pp1/2K3np/5P1P/8 w - - 0 1
This is a mate in 26!
Reached with forwards/backwards
[pgn][Event "?"] [Site "?"] [Date "2018.08.30"] [Round "?"] [White "Talkchess =2&t=68310"] [Black "?"] [Result "1-0"] [Annotator "?"] [SetUp "1"] [FEN "2n1k3/1pPp2B1/pP1Pp3/P3Pp2/2R2Pp1/2K3np/5P1P/8 w - - 0 1"] [PlyCount "21"] [EventType "tourn"] 1. Kd3 {26#; Tsavdaris, How does Houdini fare in this position? Avoid fxg3? that draws. Kd3 is an easy way to win (as also other moves). How do engines of 2018 do on this anticomputer one?} (1. fxg3 $2 {Remis !}) 1... Nh5 (1... Nf1 2. Rc1 {25# (SF10)} Nxh2 3. Rh1 (3. Bf6 Kf7 4. Rh1 g3) 3... Kf7 4. Bf6 {22#} ( 4. Rxh2 {16#} Kxg7 5. Ke3 Kg6 6. f3) 4... g3 5. fxg3 Ng4 6. Kd2 h2 7. Ke2 Kg6 8. Kf3 {18#}) 2. Bh6 {24#} Kf7 3. Ke3 {23#} Kg6 4. Bg5 {22#} Kf7 5. Rc1 Kg7 $6 (5... Kg6 $1 6. f3 {20#} Ng7 7. Rg1 Kh5 8. Ke2 Kg6 9. fxg4 fxg4 10. Rxg4 {16#}) 6. f3 {19#} Kg6 7. Kf2 Ng7 8. Rg1 Ne8 (8... Kh5 9. Be7 {15#} Kg6 10. fxg4 fxg4 11. Rxg4+ Kf7 12. Rh4 Kg8 13. Bf6 Ne8 14. Rh8+ Kf7 15. Kf3 Nexd6 16. exd6) 9. fxg4 {16#} fxg4 10. Rxg4 {15#} Kg7 11. Be7+ 1-0 [/pgn]
Paloma
Posts: 1167
Joined: Thu Dec 25, 2008 9:07 pm
Full name: Herbert L

Re: Test position, Compliments of LC0

Post by Paloma »

AdminX wrote: Thu Aug 30, 2018 2:38 pm I enjoyed these Lc0 moves also.

[d]3r3k/1p4p1/4bq1p/1PQ2p2/2P1pP2/p5P1/PbRBB1KP/8 b - - 0 37
37. ... Rd3!
37... Rd3 isn't exceptionally good. Looks like remis (see score at move 41...Kh7) (37... Qf7 38. Bb4 Rd3 39. Qf8+ Qxf8 {A})
38. Bb4 Qd8 39. Qe7 Qc8 40. Qf8+ Qxf8 {A, same position} 41. Bxf8 Kh7 {-0.09/60}