Ticket #1 (new enhancement)

Opened 3 years ago

Last modified 2 years ago

splee_5_5.1 - break_chain3() revisions

Reported by: gunnar Assigned to: gnugo
Priority: normal Milestone: 3.8
Component: source Version:
Severity: normal Keywords:
Cc: patch: 1

Description

This is an ancient patch by SP Lee, most recently revised in http://lists.gnu.org/archive/html/gnugo-devel/2004-09/msg00242.html

Finally I had time for my patch 5.5.1b which has been pending for long
time. I have minimized the modification so that the tuning is minimum.
The original break_chain3 is to find the chain with 3 liberties and
check the escape potentials through all the 3 liberties. Suppose a, b
and c are the resulting liberties of the chain after playing a stone in
turn on the 3 liberties, sorted in decending order. The original
function break_chain3_moves only adds break chain moves if b is less
than 4 (a>=b, b>=c).

My patch changes the above constraint to b less or equal to 4 and c<4.
Furthermore I have also added some constraints to let the chain breaking
stone not easy to be captured, unless it's a single stone.

Regression changes:

./regress.sh . arb.tst
203 unexpected FAIL: Correct 'T7', got 'N3'
./regress.sh . nngs.tst
370 unexpected PASS!
371 unexpected PASS!
./regress.sh . global.tst
22 unexpected FAIL: Correct 'F2', got 'J6'
./regress.sh . 13x13.tst
39 unexpected FAIL: Correct 'H4|J4', got 'J5'
./regress.sh . owl1.tst
263 unexpected PASS!
./regress.sh . nngs4.tst
420 unexpected FAIL: Correct 'G6', got 'F4'
./regress.sh . ninestones.tst
370 unexpected PASS!
./regress.sh . 9x9.tst
210 unexpected PASS!

Totally 4 fails and 5 passes. However, the passes are more impressive
than fails, refer to the comments in the .tst file:

# W misses break-chain (I think!?!) -tm
loadsgf games/nngs/Lazarus-gnugo-3.1.17-200112301450.sgf 82
371 attack R5
#? [0]*

# Extremely bad misread. (Made GNU Go play at L9 with the last move
before
# that position.)
loadsgf games/wing-yuhiko-gnugo.sgf 115
263 owl_defend M13
#? [1 R11]*

On the other hand, most of the regression fails are debatable. I'll put
the detailed explaination below.

arb:203

12 . O . . O . . . O . . O O O O O O . O 12
11 O . . . . O . . . . . . . . . O X O . 11
10 X O O + O X O O . + . . . . . O X X O 10
 9 X X O . O X X O . . . . O . O O X . X 9
 8 . X O O O X . X O O . . O O X O X . X 8
 7 . X X X X . . X X . O O X X . X . X . 7
 6 . . . . X X X . . X X X O X X X X O O 6
 5 . . X . . O . . . . X O O O O O O X . 5
 4 . . . X . . X . . X . X X X X O X X X 4
 3 . . . . . X O . X . . X . O O O O X . 3
 2 . . . . . . X . . O O . X O . O O O X 2
 1 . . . . . . . . . . . . X O X . O X . 1
   A B C D E F G H J K L M N O P Q R S T

This is a complicated situation with up to 6 ko's in the lower right
corner. I don't think gnugo can really handle this situation until some
time in the far future. T7 is a good move in that it makes the black
alive for sure and let white not easy to live. However, black is also
not dead even playing on N3. For example, B:N3,W:T1,B:T7,W:T3,B:T5. Or
B:N3,W:P7,B:R7,W:S8,B:T11. Both before and after patch, the ko_depth is
reached during tactical reading (attack n6). Surprisingly, the reading
code after patch generates less variations in this situation.

global:22

After the patch an extra tactical attack move is generated during owl
analysis, resulting in a similar situation as I mentioned in
http://lists.gnu.org/archive/html/gnugo-devel/2004-09/msg00238.html. In
another word, this patch reveals another weak point of gnugo.

13x13:39

8 . . . . . . . . . . . . . 8
7 . . . + . . + . . + X . . 7
6 . . . X . X X X . . . X . 6
5 . . . . . X O O . . O O X 5
4 . . X + O O X . . O . . O 4
3 . X . O . . . X X O . . . 3
2 . . O . . . . X O O . . . 2
1 . . . . . . . . . . . . . 1
  A B C D E F G H J K L M N

The move J5 is clearly better than H4 or J4, in my opinion. The black
group on lower side has no chance to live.

nngs4: 420

12 . . X O . . . . . . . . . . . . O . . 12
11 . . X O . . . . . . . . . . . . O X . 11
10 . . X X . X . . . + . . . . . + X . . 10
 9 . . . . . . . X . . . . . . . . . . . 9
 8 . . . . . O O X . . . . . . . . . . . 8
 7 . . X . X O X O O . . . . . . . . . . 7
 6 . . . . O X . X . O X . . . X . X . . 6
 5 . . . O . X . . X O . . . . . . . . . 5
 4 . . . + O . O . X + O . . . . O . X . 4
 3 . . O . . . . . . . . . . O . O X . . 3
 2 . . . . . . . . . . . . . . . . . . . 2
 1 . . . . . . . . . . . . . . . . . . . 1
   A B C D E F G H J K L M N O P Q R S T

G6 makes an ineffient shape of black. Although black can then catch 3
white stones, the black group doesn't have 2 eyes and has to catch the 3
stone in the end game. The newly generated move F4 is interesting in
that black is threatening to catch G4 (for example
B:F4,W:G6,B:G5,W:G7,B:F3), which is larger than the 3 white stones. I
don't think there is any misreading here.

Any comments and suggestions are welcome.

Attachments

splee_5_5.1c.diff (3.3 kB) - added by gunnar on 06/05/05 11:08:01.
The patch splee_5_5.1c
splee_5_5.1d.diff (3.3 kB) - added by arend on 02/09/06 21:53:19.
This is splee_5_5.1c rediffed to 3.7.8, with is_single ()removed (it is equivalent to !has_neighbor())
arend_7_9.16.diff (0.7 kB) - added by arend on 02/11/06 14:44:12.
Two reading testcases from splee_5_5.1d breakage

Change History

06/05/05 11:08:01 changed by gunnar

  • attachment splee_5_5.1c.diff added.

The patch splee_5_5.1c

09/25/05 22:21:38 changed by gunnar

  • type changed from defect to enhancement.

02/09/06 21:53:19 changed by arend

  • attachment splee_5_5.1d.diff added.

This is splee_5_5.1c rediffed to 3.7.8, with is_single ()removed (it is equivalent to !has_neighbor())

02/09/06 23:16:30 changed by arend

Here is a current breakage:

nngs:370        PASS P3 [!Q1]   Very good, tactical reading of R5 corrected
nngs:371        PASS 0 [0]      Same
global:22       FAIL J6 [F2]    Good
owl1:263        PASS 1 R11 [1 R11] Good
nngs4:420       FAIL F4 [G6]    Bad.
auto_handtalk:3 FAIL 1 T15 [2 T15]      Bad.
olympiad2004:112 PASS T14 [T14] Good.
ninestones:370  pass            Bad, necessary break_chain3 move lost.
arion:1         fail            I don't understand what is happening
5 PASS (4 PASS, 1 pass)
4 FAIL (3 FAIL, 1 fail)
Total nodes: 1674545544 3300480 12542583 (+0.35% +0.13% +0.13%)

The problem with with nngs4:420 and auto_handtalk:3 is the same: A break_chain3 move is tried (that doesn't do anything useful), and attack3() in turn doesn't defend the neighbor string with 2 liberties; this is because backfill2_depth is only 5, whereas break_chain_depth is 7. I don't know whether this is a common problem.

02/11/06 14:44:12 changed by arend

  • attachment arend_7_9.16.diff added.

Two reading testcases from splee_5_5.1d breakage