gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gnugo-devel] owl attack moves and semeais


From: Arend Bayer
Subject: Re: [gnugo-devel] owl attack moves and semeais
Date: Fri, 9 Apr 2004 19:21:16 +0200 (CEST)

I hope we are getting closer. I guess we should have had this discussion
long ago :)

Gunnar wrote:

> Arend wrote:
> > Ok. Sow how about:
> >
> > - if it's tactically capturable => dead for now
> > - otherwise, if owl alive => alive, otherwise dead for now
> > - if there is a single semeai that a "dead" dragon will win, we change it's
> >   status to alive
>
> That has better chances to work, although I have a feeling there will
> pop up more complications.

> > IMO, winning a single semeai should be enough to make a dragon alive. If
> > capturing the other dragon is not sufficient to make life, the semeai
> > code shouldn't claim a win.
>
> The semeai code can handle the situation where capturing the other
> dragon would leave a dead shape. The more difficult case is of this
> type:
>
> |OOOOOOO..
> |.OO.X.O..
> |OO..X.O..
> |..XXXOOOO
> |XXXOOOXXO
> |X.OOXX.XO
> |XXXOX.XXO
> |X.OXXX..O
> |X.OXOOOOO
> |X.OOXXX.O
> |X.O.X.OOO
> |X.O.X.O.O
> +---------

> The semeai reading code will think that the big X dragon can win
> against the O dragon since it fails to understand that O can in turn
> win its semeai against the small X dragon. I think it would take quite
> a bit of work and a loss of efficiency to make the semeai reading
> consider all relevant moves. It might ultimately be the best solution,
> but I'm not sure about it.

[FWIW, I share your doubts. Anyway, we do have to try to be as good as
possible with the current reading.]

> > In other words, if the semeai code claims a dragon is still killed in a
> > semeai, and this dragon is part of multiple semeais, this opinion is as
> > unreliable as owl claim "dragon is dead" if it is involved in a semeai.
>
> Or maybe I misunderstood your proposal. Can you clarify how it would
> work out for the three dragons in the example above (or in one of the
> real test cases)?

My solution would get it partially right: The big black dragon would get
declared alive (wrong). The small white dragon would get declared alive,
since it can always win the small semeai.

> I actually think that the code in semeai.c might do a bit better than
> that. But you're welcome to prove me wrong. :-)

I see how your "take out semeais of dragons that have a neighbour that
looses all semeais" (*) helps. But now change the position slightly:

   A B C D E F G H J K L M N
13 . . . . . . . . . . . . . 13
12 . . O O O O . . . . . . . 12
11 . O O . X . O . . . . . . 11
10 O O . + X . O . . + . . . 10
 9 . . X X X O O . . . . . . 9
 8 X X X O O O . . . . . . . 8
 7 X . O O . . + . . + . X X 7
 6 X X X O . . . . . . . X . 6
 5 X . O X X X X X X X X X X 5     WHITE (O) has captured 0 stones
 4 X . O X O O O O O + . X . 4     BLACK (X) has captured 0 stones
 3 X . O O X X X . O O O X X 3
 2 X . O . X . . O O . O O O 2
 1 X . O . X . O O . O . O . 1
   A B C D E F G H J K L M N

(The lower semeai is now critical between white win and seki.) Now we get:
dragon_status
= E11: alive
G11: alive
M7: alive
C5: critical PASS PASS
E4: alive
E3: critical PASS PASS

genmove black
= D2

[N.B.: This has nothing to do with seki, I was just too lazy to create a
position on the bottom that can be won by whoever moves first.]

The attack point against C5 is D2 ("winning" the E11/C5 semeai).
My solution would at least get the status of C5 right, because it doesn't
trust an semeai attack against a dragon that can stil succeed with life
in another semeai.

So two things:
1. (*) is needed, but I have a systematic problem with it that shows in
the above position: In all other places of the engine, when considering
the effects of a black move, assuming white gets to move first everywhere
else, we __do not care what would happen anywhere else if black had the first
move there__. But the policy (*) doesn't have this property. It would really
be nice to fix this.
2. Even if this gets fixed, I suppose we do need the improvement of my
suggestion that semeai attacks don't get trusted blindly if the dragon
can still be defended via a 2nd semeai.

What do you think?

Arend





reply via email to

[Prev in Thread] Current Thread [Next in Thread]