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

Re: [computer-go] double threats



Is it really necessary to do three searches?
 
For tactical searches in Goliath I do two searches, similar to yours. However the result can be dead or stable or stable-with-ko in the first search, and in the second search dead, stable or dead-with-ko. (In both searches the result is 'ko', the different meaning is implicit.)
 
I think I save out on the third search by detecting a ko-capture and returning ko as a result as long as it doesn't find another move that works outright. Or is this not entirely correct?
 
With respect to evaluating uncertain statuses of double-threats: I've found that this is a hard problem to solve. And it's actually a problem that appears in more forms in other areas as well. The general approach should be to make a best static guess of the result and then improve the result by lookahead. Take the average of the result when B moves first with when W moves first. This is aplicable not only to double-threat situations, but in any situation where the static evaluation is not completely accurate. But of course at some point the estimate must be used in end-leafs.
 
The important thing to realise is: no matter how you try, a competely accurate static evaluation is not possible. It will always be an estimate with a certain degree of inaccuracy.
 


David Fotland <fotland@xxxxxxxxxxxxxxxxx> wrote:


I do multiple searches of each string. Each search returns only stable or
dead. Each
search gets a parameter that says which side wins kos, and which side must
respond to threats
against nearby groups. Stable means 5 liberties, two eyes, simple seki, or
out of nodes. At the
strongest level, each search is allocated 150 unforced nodes. An unforced
node is a node where the
move generator generates more than one move.

Say the color of the string in question is W, and the enemy is B.

First I do a search with W to move first, W wins all kos, and B must answer
all nearby threats. If the
search returns dead, then the group is dead.

If the group is not dead, I repeat the search, with B to move first, B wins
all kos, and W must answer nearby
threats.

If this search returns stable, then W is stable.

Oth erwise, I repeat the search with B to move first, W wins all kos, and B
must answer nearby threats.
If this third search finds the group is dead, then it is unsettled, else it
is a ko or possible unsettled, and
needs full board quiescence search.

The move generator is optimized to only generate threats against nearby
strings when they will be needed.

This way I handle the problem of interacting tactical searches while only
doing single string searches.

I tried several variations on saving the bigger string or the most
important string many years ago, but there
were always problems. Recognizing the situation and deferring it to the
global search seems to work best.
This situation gives one side a choice, so you need to try both options
with full board evaluation.

David

At 12:38 PM 1/8/2004 +0900, you wrote:
> >> > Let's say that two blocks are threatened and the defender may choose
> >& gt; > which block he wants to give up. Then the block tactician might treat
> >> > the two blocks as "half-DEAD" or it might treat the bigger (or
> >> > "more important") block as ALIVE and the smaller one as DEAD.
>
>Interesting thread - I'd not found a good solution to this issue, so have
>mostly ignored it. Assuming the defender always defends the bigger chain
>is an interesting idea.
>
>>Many Faces marks them both as unsettled, but a special kind of
>>unsettled. The tactical search result can be
>>Stable - seki, 2 eyes, or 5 liberties even if opponent moves first
>>unsettled - captured or lives depending on who moves first
>>ko - capture depends on a ko
>>possible unsettled - two groups are involved in fight and the opponent
>>decides which one lives
>>dead - captured even if this side moves first
>
>Do you pass the 5th state up th rough the tactical search tree? Or do you
>only treat it as special at the root node?
>
>If you pass it up through the tree, how do you order it to decide which
>information to pass up if you have one move leads to unsettled, and one
>move leads to special unsettled?
>
>Darren
>
>_______________________________________________
>computer-go mailing list
>computer-go@xxxxxxxxxxxxxxxxx
>http://computer-go.org/mailman/listinfo/computer-go


_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://computer-go.org/mailman/listinfo/computer-go
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://computer-go.org/mailman/listinfo/computer-go