Heikki Levanto wrote:This subject interests me a lot at the moment; as it would be off-topic I started a new thread.Anyway, in any given go position, there are a small number of reasonable moves that can be considered, and a great number of totally stupid moves that no human would even consider. Any go program must be able to discard the 90% of rubbish moves quickly. Here a simple move evaluation could make sense. (especially since the same move may be totally irrelevant or the best possible, depending if there is anything more valuable around...)
What rules are there for vetoing moves? I'm interested at two levels:
1. Proveably bad moves
2. Pro level at 99.9%
By pro level I mean an algorithm (or database) that would veto moves in a board position and at 99.9% of the time it wouldn't veto the move the pro played. I'm more interested in type 1 as I'm interested in solving endgames, but type 2 is more useful for a general purpose playing program.
As an example of type 1, in a three-in-a-row, the end points are always bad moves:
?####
#abc# ("?" and rest of board are "don't care")
####?
'a' and 'c' can always be vetoed. Whether 'b' is a good move for either side depends on the surrounding situation (specifically, if the black chain can make an eye somewhere else or not).
I think I can generalize to this position:
##a
xy# x and y are empty points.
##b
'y' is always a bad move, by either side, assuming neither 'a' nor 'b' is a white stone. (it also works if 'a' is white but 'b' is a black eye or otherwise protected, and vice versa).
What other positions are there like this? Has anyone made a list, or done research on this?
Darren
P.S. It gets more complicated when allowing for ko threats; however in the above example even if 'x' and 'y' could act together as a ko threat, 'x' would always be at least as good as 'y' as the first move, so 'y' can still be vetoed.