gnugo-devel
[Top][All Lists]
Advanced

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

Re: [gnugo-devel] New owl pattern.


From: Gunnar Farneback
Subject: Re: [gnugo-devel] New owl pattern.
Date: Sat, 06 Oct 2001 15:19:17 +0200
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)

Trevor wrote:
> This OWL pattern solves the following (new) test case:
> 
> loadsgf games/trevor/trevor_32.sgf
> 320 gg_genmove black
> #? [J2]*
> 
> (SGF file contents at end of this e-mail.

I've added these to CVS. Btw, I see there is a trevor_31.sgf but no
corresponding test case. Is this as expected?

> I have two questions:
> GnuGo 3.1.8 claims:
> Move at J2 strategically or tactically unsafe
> Move at J3 owl-defends G5
> How does it determine that J2 is unsafe?
> 
> After applying the following pattern, GnuGo now decides:
> Move at J2 owl-defends G5
> Move at J3 strategically or tactically unsafe
> Now, why did J3 become unsafe?

Certain modules can suggest moves that are ineffective, e.g. tactical
defenses which still leave the stones dead or connections of two dead
dragons into a bigger but still dead dragon. To decide whether such
moves are good the owl code is called (owl_does_defend() and
owl_connection_defends()) from examine_move_safety(). This information
is used in a couple of places, in particular to decide whether the
move should give influence when trying to decide the change in
territory and influence areas. The latter is important to know also
for other kinds of moves. The principle is that all moves are unsafe
until we find evidence that they are not. The best way to determine
this is by calling the owl code, but that's too expensive to do
everywhere. Instead examine_move_safety() uses a lot of heuristics to
guess the move safety, e.g. that a move with the BLOCK_TERRITORY move
reason is safe.

In the listing of moves, moves completely without move reasons are
ignored. There seems however to be some move reason which isn't listed
although it should be (probably some kind of "threaten to do
something" move reason), and which is not assumed to imply move
safety. Thus the mention of "strategically or tactically unsafe" moves
for no apparent reason.

So the explanation why J3 became unsafe when the owl defense was moved
is that owl defense is a move reason which implies move safety. Since
J3 no longer has that move reason it's by default assumed to be
unsafe.

> 
> Here's the pattern (added to owl_defendpats.db):
> 
> Pattern Dtrevor
> 
> OOX|          corner tesuji
> O.O|
> O..|
> O.*|
> ...|
> ---+
> 
> :8,-,value(50)
> 
> 
> Now, I don't think we'd want to add it as is, but probably make
> it a bit more generic, and I don't know about the value either.
> Besides, it has a silly name!

The value looks okay. It needs to be higher than 45 by which J3 is
proposed so 50 should work. From this list in owl_defendpats.db

  # Dxx   Expanding moves on the fourth line
  # D1xx  Expanding moves on the third line
  # D2xx  Expanding moves on the second line
  # D3xx  Expanding moves in the center
  # D4xx  Expanding moves in the corner
  # D5xx  Defend one worm of the dragon
  # D6xx  Make eyeshape on the edge
  # D7xx  Make eyeshape in the center
  # D8xx  Make eyeshape in the corner
  # D9xx  Prevent intrusion
  # D10xx Prevent a cut
  # D11xx Attack a defect in the perimeter
  # D12xx Kikashi
  # D13xx Escape
  # D14xx Ko
  
we can see that the pattern should be named D8xx something so we add
it at the end of those patterns, which would be D833. (At least
relative to my owl_defendpats.db, but I'm unsure whether the last
patterns there have been submitted.) The right amount of generality
might be something like

?O?|          corner tesuji
O.O|
O..|
O.*|
...|
---+

:8,-,value(50)

?O?|
O.O|
O..|
O.*|
...|
---+

;lib(a)>1

/Gunnar



reply via email to

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