Ticket #153 (new defect)

Opened 1 year ago

Last modified 1 year ago

Misevaluation of cutting moves. Intransitivity in connections

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

Description (Last modified by alain)

Cutting the tail of a dragon, and capturing it is valued nearly zero, (more precisely only the value of the move without the capture).

For Black at move 178 (last chance), M12 is valued 4.2, it is worth 40.0

Move at M12 threatens to attack M14
Move at M12 expands territory
Move at M12 connects N13 and J11
  M12:   5.00 (followup) - threatens to capture M14
  M12: 2.11 - change in territory
  M12:   5.00 - total followup value, added 0.00 as territorial followup
  M12: 2.32 - added due to followup (5.00) and reverse followup values (0.00)
  M12: -0.21 - shape (shape values +1.00(1) -2.00(1), shape factor 0.952)
Move generation values M12 to 4.21
3. M12 4.22

mv 179 M11 for White is valued 0.11 !

pattern 'CC43'+3 matched at M11
Move at M11 threatens to attack O11
Move at M11 cuts L13 and J11
Move at M11 strategically or tactically unsafe
  M11:   2.92 (followup) - threatens to capture O11
  M11: not a safe move
  M11: 0.01 - change in territory
  M11:   2.92 - total followup value, added 0.00 as territorial followup
  M11: 0.10 - cut/connect dame bonus
Move generation values M11 to 0.11

Attachments

al1-ggexp-mv-178-M11.sgf (3.7 kB) - added by alain on 12/02/06 16:54:50.
mv 178 last chance to connect and prevent M11 cut (40 points)
intransivity_7_11.1.diff (1.1 kB) - added by nando on 12/20/06 16:11:12.
connect_cut_40pts.tst (293 bytes) - added by alain on 12/30/06 14:23:56.
iliya-gorbyn-w134-h10.sgf (3.1 kB) - added by alain on 12/30/06 14:24:42.

Change History

12/02/06 16:54:50 changed by alain

  • attachment al1-ggexp-mv-178-M11.sgf added.

mv 178 last chance to connect and prevent M11 cut (40 points)

12/02/06 17:03:53 changed by alain

Using GoGui? too analyse this : W M11 is worth 28 points for the estimator.

estimate_score
= W+65.2 (upper bound: 68.8, lower: 61.6)

play w M11
= 

estimate_score
= W+93.0 (upper bound: 121.4, lower: 64.5)

12/02/06 20:35:23 changed by alain

  • description changed.

12/13/06 22:35:35 changed by alain

Comment from Nando: This is intransitivity example:

  • A-B are connected
  • B-C are connected
  • A-C can be cut

WIP: Look at pattern CB3b in conn.c

12/15/06 16:51:47 changed by nando

Yup, I was thinking of this:

Pattern CB3c

O!O
.*.
.OX

:8,B

c!a
.*.
.bX

;!oplay_disconnect(b,c) 
;&& !oplay_disconnect(c,a)
;&& xplay_connect(*,a,b) != WIN

Note: the oplay_disconnect() aren't expensive per se, since they will be verified sooner or later (during amalgamation in find_connections())

It could work alone, but maybe we additionally need something like following (which would also cover intransivities found by pattern CB2b)

Pattern CC403

O.O
..x        fragile double connection 
.O?

:8,-

dbc
.ax
.e?

;xcut(a) && xcut(b) && !xplay_disconnect(c,d) && !xplay_disconnect(d,e) && xplay_connect(a,c,e) != WIN

>amalgamate_most_valuable_helper(c,d,e);

As we said in our chat on KGS, a better solution would be to algorythmically find intransivities. I tried once and failed (just too expensive). Maybe you can come up with something... In the meantime, fixing this issue with a few patterns looks acceptable to me (provided they don't break anything and aren't too expensive, of course)

12/15/06 16:54:01 changed by nando

I wish I could edit my previous comment...

I meant "... found by pattern CB3b"

(follow-up: ↓ 7 ) 12/20/06 16:09:37 changed by nando

  • patch set to 1.

I tested my proposed patterns. First with CB3c alone:

Total nodes: 1693715088(+0.1%) 3342094(+0.2%) 12606306(+0.1%)

Breakage:

nando:23        PASS 0 [0]
kgs:220         FAIL N12 [T10]
kgs:340         PASS L4 [L4]

The PASS in nando:23 is simply ok.

N12 in kgs:220 is also rather big, but probably overvalued with the patch. The more important problem I see in this testcase is the fact that S9 is still seen as an OWL defense of T9.

L4 in kgs:340 is not bad, but the move only gets better valued because of the local connection issue. The engine still doesn't see the followup(s) (saving the stones on the right)

PS: Gunnar, does the tst() macro still work ok ?

12/20/06 16:11:12 changed by nando

  • attachment intransivity_7_11.1.diff added.

(in reply to: ↑ 6 ) 12/21/06 00:30:22 changed by gunnar

Replying to nando:

PS: Gunnar, does the tst() macro still work ok ?

Now it's repaired. Thanks for noticing.

12/30/06 14:23:19 changed by alain

Another case : iliya-gorbyn-w134-h10.sgf. Just before W134 cut at H10:

Owl_attack E17: 0
owl_defend E17: WIN H10 (defense effective)

So E17 is said alive => no need to connect in H10! But once W has cut, black E17 is dead.
Some logic need to be improve, when owl_defense is connect, then the cut/connect move is worth a lot.

12/30/06 14:23:56 changed by alain

  • attachment connect_cut_40pts.tst added.

12/30/06 14:24:42 changed by alain

  • attachment iliya-gorbyn-w134-h10.sgf added.

12/31/06 15:29:46 changed by alain

  • summary changed from Misevaluation of cutting moves to Misevaluation of cutting moves. Intransitivity in connections.

Another example of intransitivity in connections:
http://files.gokgs.com/games/2006/12/29/mamago-ggexp-2.sgf move 126+