Ticket #75 (closed defect: fixed)

Opened 3 years ago

Last modified 17 months ago

Generate cut move reasons for cutting moves found during find_connections()

Reported by: arend Owned by: arend
Priority: normal Milestone: 3.7.11
Component: source Version:
Severity: normal Keywords:
Cc: patch: yes

Description (last modified by arend) (diff)

When the dragons are built via find_connections(), this is mostly done via patterns such as the following:

Pattern CC503

O
.
O

:+,C

c
a
b

;!xcut(a) && !oplay_disconnect(b,c)

However, so far we throw away the information in case a cutting move is found. This patch changes that by introducing a disconnect_helper(): a wrapper around disconnect() that reports back in case a cutting move is found. The cutting moves are stored in a list in dragon.c, and later CUT_MOVE reasons are generated where appropriate.

The breakage is as follows:

trevorb:220     FAIL G1 [J3]            Cut move reasons misevalued
global:16       FAIL Q11 [O10]          This is ok.
13x13:35        PASS D2 [D2]            This is good though lucky.
nngs3:330       FAIL F5 [P12|Q11]       Very good, F5 most urgent.
nngs4:260       FAIL G9 [A4]            G9 is ok, increases aji in sente.
nngs4:630       FAIL C5 [B6]            Bad, Connection misread.
nngs4:870       FAIL H9 [C3|C4|D3]      Very bad, H9 doesn't do anything.
olympiad2004:3  PASS P5 [!Q10]          Good.
Total nodes: 1690527606 3283875 12582021
Total time: 7647.19 (14078.61)

Attachments

arend_7_9.4.diff (6.6 kB) - added by arend 3 years ago.
arend_7_9.4a.diff (6.8 kB) - added by arend 3 years ago.
Removed unnecessary optimization pointed out by Nando.

Regression Results

Attachment Rev. PASS FAIL Nodes Status
arend_7_9.4.diff 2381 4 6 +0.71% +0.11% +0.96% details
arend_7_9.4a.diff 2381 4 6 +0.71% +0.11% +0.96% details

Change History

Changed 3 years ago by arend

Changed 3 years ago by nando

Two comments.

First a nitpick: I would have found more logical to implement this feature as part of find_cuts(). Was it easier this way ?

Otherwise, it took me more than an instant to understand the reason behind those lines in disconnect_helper()

  if (dragon[apos].origin == dragon[bpos].origin) 
    return 1; 

Am I correct that it's just an optimization ? If yes, there should probably be some comment in the source code.

Changed 3 years ago by arend

You are of course right about the optimization, I should add a comment or throw it out.

About find_cuts(): The name of this function is a little misleading, since it is actually trying to find intransitivities. Whereas find_connections() is the place where we test whether pairs of strings are connected. When testing this, we automatically find out about cuttig moves.

Changed 3 years ago by arend

Removed unnecessary optimization pointed out by Nando.

Changed 3 years ago by arend

  • description modified (diff)

Changed 3 years ago by arend

  • owner changed from gnugo to arend

Changed 2 years ago by gunnar

  • milestone changed from 3.7.9 to 3.7.10

Changed 2 years ago by arend

  • milestone changed from 3.7.10 to 3.7.11

Changed 17 months ago by arend

Analysis of the breakage as of r2381:

trevorb:220     FAIL G1 [J3]            bad, move evaluation problems
global:16       FAIL Q11 [O10]          ok
13x13:35        PASS D2 [D2]            good
nngs3:330       FAIL F5 [P12|Q11]       improved valuation of F5, very good
nngs3:490       PASS P15 [P15]          VERY good
ninestones:490  FAIL S10 [R10]          ok; cut move reason for r10 is missing
ninestones:790  FAIL A3 [B1]            random (semeai misread)
arend2:210      PASS K2 [K2]            very good
thrash:23       PASS D7 [A5|D7]         random
gifu03:507      FAIL G16 [G13]          I don't understand what is happening here (breakin problem)
4 PASS
6 FAIL
Total nodes: 1709420526 3340006 12430447 (+0.71% +0.11% +0.96%)

It seems the patch is worth applying.

Changed 17 months ago by gunnar

Looks good enough.

Changed 17 months ago by arend

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.