Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Forced moves

Author: Eelco de Groot

Date: 21:11:45 07/31/99

Go up one level in this thread


Hello everybody,

I didn't follow the discussion very well, but just for comparison's sake results
with Rebel ECTool, more or less Rebel 10, 386 at 33 MHz,about 3k nps;

Rebel Engine for ECTool. (c) Ed Schröder

Engine version   :  REBEL 9
Hash table size  :  4 Mb
Analysis mode   :  Analyzing next move
Refresh interval : 1000 ms

Game begin

00:00  02.00  3.63  Qe6xb6 e5-e4
00:02  03.00  3.79  Qe6xb6 Rf8-c8 Qb6-e3 Qe1xe3 Bc1xe3 Rc8-c2
00:03  04.00  3.44  Qe6xb6 Rf8-f1 Qb6-d8+ Kh8-h7 Qd8-d3+ e5-e4
00:05  05.00  3.44  Qe6xb6 Rf8-f1 Qb6-d8+ Kh8-h7 Qd8-d3+ e5-e4
00:13  06.00  -0.67  Qe6xb6 Rf8-f1 Qb6-d8+ Kh8-h7 Qd8-d3+ e5-e4 Qd3xf1
00:37  06.05  -0.39  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Qg6xb6 Qa1xa2
01:15  07.00  -0.39  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Qg6xb6 Qa1xa2
01:57  08.00  -0.46  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Qg6xb6 Qa1xa2 g2-g3
03:05  09.00  -0.46  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Qg6xb6 Qa1xa2 g2-g3
04:32  10.00  0.00  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Bh6xg7+ Rg8xg7 Qg6-h5+
07:19  11.00  0.00  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Bh6-f4 Rg8-b8 Bf4xe5
15:06  12.00  0.00  Bc1xh6 Qe1xa1 Qe6-g6 Rf8-g8 Bh6-f4 Rg8-b8 Bf4xe5

Sorry, no pictures or diagrams to go with this. But Crafty's diagrams look
wonderful over here!

Eelco.

On July 31, 1999 at 18:06:30, Peter McKenzie wrote:

>On July 31, 1999 at 12:55:54, Robert Hyatt wrote:
>
>>On July 31, 1999 at 12:34:34, Robert Hyatt wrote:
>>
>>>On July 31, 1999 at 03:08:42, Ed Schröder wrote:
>>>
>>>>>This is easy to test.
>>>>>
>>>>>My hypothesis:  simple search is not good enough to discover that all moves
>>>>>but one lead to mate, in any positions except for those near the point where a
>>>>>game is already over (one side is mating the other).
>>>>>
>>>>>Ed's:  A simple search is good enough to discern forcing moves.
>>>>>
>>>>>How about someone looking for positions where all moves but one lead to a
>>>>>forced mate...  IE one move must _not_ get mated, while all the rest do.
>>>>>Then we decide whether the short search of Rebel can see this or not.
>>>>>
>>>>>Then we decide how often this kind of position occurs, and how often (when it
>>>>>does) is a shallow search enough to recognize the forced nature.
>>>>>
>>>>>I don't think (a) it will work very well; (b) that it is worth the effort to
>>>>>search with alpha=-inf, beta=+inf for every root move; (c) that by the time
>>>>>this might have a chance of identifying a forcing move, the game is already
>>>>>over and saving time is pointless...
>>>>>
>>>>>My opinion, of course...
>>>>
>>>>How about going one step further. Some years ago I did an experiment.
>>>>Search the first iteration without A/B, then:
>>>>
>>>>if (best_score - second_best_score > margin_one) limit time control.
>>>>if (best_score - second_best_score > margin_two) limit time control even more.
>>>>
>>>>etc.
>>>>
>>>>Also I tried this for the second iteration as well. Results were not bad at all
>>>>as it also catches forced moves that aren't recaptures and escapes from
>>>>checks. Moves sequences like 1..g5 2.Bg3 were also discovered and
>>>>2.Bg3 was played very fast. I also remember a case 1.a7 Ra8 preventing
>>>>the pawn to promote. Since 1..Ra8 was the only move 1..Ra8 was played
>>>>instantly.
>>>>
>>>
>>>
>>>that's an easy one to break.  Take the position Cray Blitz vs Belle (I will
>>>try to find the FEN but it is in one of the test suites (Bxh6 is a draw, Qxb6
>>>loses).
>>>
>>>I'll bet you that you discover that Qxb6 is +3 better than any other move with
>>>a 1 ply search.  And a 2 ply search...  and a 3, 4, 5 and 6 ply search...  and
>>>beyond... until you finally see that it loses badly.
>>>
>>>Using your approach will get you killed there.  Care to guess how I know?  I
>>>was there.  I used a scheme almost exactly like yours in 1980 or so, and it
>>>made that very same mistake in that very same game, and lost quickly...  A 2
>>>minute search would have shown Bxh6 drew and Qxb6 lost.  But CB assumed that
>>>"Qxb6 was 'easy'"
>>>
>>>
>>>
>>>
>>>>Note that Q-search in Rebel's first and second iteration were limited to 6 and
>>>>8 plies to prevent the search to explode when A/B is not active. I also do
>>>>check extensions in Q-search to discover mates which catches the most
>>>>important ones but not all of course.
>>>>
>>>>Ed Schroder
>>
>>
>>Here is the position:
>>
>>5r1k/6p/1n2Q2p/4p//7P/PP4PK/R1B1q/ w
>
>Thanks for posting this position Bob.  By the way, here is the position in a
>more standard format (well, a format that my program can input anyway):
>
>5r1k/6p1/1n2Q2p/4p3/8/7P/PP4PK/R1B1q3 w - -
>
>LambChop would also suggest that Qxb6 is 'forced' (by Ed's suggestion) after a 1
>ply search.  Of course, in such positions you should still spend some time
>searching because they are not certanties by any means.
>
>In this particular position, most programs wouldn't be 'burnt' because they
>would see that Qxb6 is bad after just a few seconds.  LambChop (which uses
>nullmove) discards Qxb6 at depth 7.  I believe Crafty has a problem here because
>it doesn't do any checks in the q-srch.
>
>Personally, I'm still uncomfortable with Ed's idea because I'm sure there are
>many deeper sacrifices that would cause problems.  But the trade off might be
>worth it, who knows?
>
>>
>>the position in ascii:
>>
>>       +---+---+---+---+---+---+---+---+
>>    8  |   |   |   |   |   | *R|   | *K|
>>       +---+---+---+---+---+---+---+---+
>>    7  |   |   |   |   |   |   | *P|   |
>>       +---+---+---+---+---+---+---+---+
>>    6  |   | *N|   |   | Q |   |   | *P|
>>       +---+---+---+---+---+---+---+---+
>>    5  |   |   |   |   | *P|   |   |   |
>>       +---+---+---+---+---+---+---+---+
>>    4  |   |   |   |   |   |   |   |   |
>>       +---+---+---+---+---+---+---+---+
>>    3  |   |   |   |   |   |   |   | P |
>>       +---+---+---+---+---+---+---+---+
>>    2  | P | P |   |   |   |   | P | K |
>>       +---+---+---+---+---+---+---+---+
>>    1  | R |   | B |   | *Q|   |   |   |
>>       +---+---+---+---+---+---+---+---+
>>         a   b   c   d   e   f   g   h
>>
>>
>>and my search results (PII/300 notebook):
>>
>>(early iterations like Qxb6 a lot, scores over +4.)
>>                8     8.27   0.26   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. b4 e3
>>                8->   9.56   0.26   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. b4 e3
>>                9    10.54   0.57   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. b4 e3 6. b5
>>                9->  12.16   0.57   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. b4 e3 6. b5
>>               10    13.17     --   1. Qxb6
>>               10    43.47   0.00   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. Kg3 Qe1+ 6. Kh2 Qf1
>>               10->  51.88   0.00   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. Kg3 Qe1+ 6. Kh2 Qf1
>>               11    54.47     --   1. Qxb6
>>               11     1:47  -2.58   1. Qxb6 Rf1 2. Qd8+ Kh7 3. Qd3+ e4
>>                                    4. Qxf1 Qxf1 5. a4 e3 6. Ra2 Qxc1 7.
>>                                    b4 Kg6
>>               11     2:12   0.00   1. Bxh6 Qxa1 2. Qxe5 Rf6 3. Bg5 Rf2
>>                                    4. Qe8+ Kh7 5. Qh5+ Kg8 6. Qe8+ Kh7
>>
>>As I mentioned, this is from Cray Blitz vs Belle, 1981 ACM NACC tournament.
>>
>>Bob



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.