[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gnugo-devel] Scoring pb + GTP questions
From: |
Gunnar Farneback |
Subject: |
Re: [gnugo-devel] Scoring pb + GTP questions |
Date: |
Wed, 10 Dec 2003 13:58:20 +0100 |
User-agent: |
EMH/1.14.1 SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.3 Emacs/20.7 (sparc-sun-solaris2.7) (with unibyte mode) |
I wrote:
> Although the black dragon in the lower right is topologically
> one-eyed, it is unconditionally alive by invincibility analysis.
> Apparently we have some bug here. Both --score estimate and --score
> final give W+115.5. Even more interesting is --score aftermath which
> returns B+9.5, somehow reaching the result that while black is alive,
> the enclosed white dragon only lives in seki, with O4, P4, and R3 as
> dame points. I'll investigate this.
All scoring modes give the correct result after applying the appended
patch.
- computation of safety and status values in make_dragons() revised to
more robustly handle invincible dragons
/Gunnar
--- dragon.c.orig 2003-12-10 13:47:23.000000000 +0100
+++ dragon.c 2003-12-10 13:48:21.000000000 +0100
@@ -520,12 +520,18 @@
dragon2[d].safety = TACTICALLY_DEAD;
else if (0) /* Seki is detected by the call to semeai() below. */
dragon2[d].safety = ALIVE_IN_SEKI;
+ else if (dragon_invincible(origin)) {
+ dragon2[d].safety = INVINCIBLE;
+ /* Sometimes the owl analysis may have misevaluated invincible
+ * dragons, typically if they live by topologically false eyes.
+ * Therefore we also set the status here.
+ */
+ DRAGON(d).status = ALIVE;
+ }
else if (dragon2[d].owl_status == DEAD)
dragon2[d].safety = DEAD;
else if (dragon2[d].owl_status == CRITICAL)
dragon2[d].safety = CRITICAL;
- else if (dragon_invincible(origin))
- dragon2[d].safety = INVINCIBLE;
else if (true_genus >= 6 || dragon2[d].moyo_size > 20)
dragon2[d].safety = STRONGLY_ALIVE;
else