[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Joseki libraries (was: Re: computer-go: About Viking)
On 14 Jan 01, at 17:41, David Fotland wrote:
>
> I think of Joseki as distilled useful knowledge that hundreds of pros
> have collected over several centuries. Even if I had a program of pro
> strength, I don't think I could expect that program to find joseki
> moves consistently, since I don't think that pro-strength players
> could find such moves from first principles. It's hard enough to make
> a program of amateur Dan strength. Denying it access to centuries of
> accumulated knowledge seems foolish :)
Of course! According to popular beleif a Viking was a brute villain
that did not behave properly and smashed higher civilization to
pieces just for the fun of it...
... but most of them was really just very skilled sailors and traders.
But is it not a potential problem with joseki that the program cannot
follow up properly? Might it not often be better for the program to
plod along its own sluggish simpleminded moves? Do you know
what the joseki library does for your program in strength?
> Of course your program should be prepared for any move played
against
> it, so it should have lots of general opening knowledge as well. A
> joseki library should not be used blindly, or instead of general
> opening knowledge.
>
> It seems like if you are a purist, and don't want to add explicit
> joseki knowledge to your program, you should also refuse to add
any
> pattern knowledge for move generation :) After all, Joseki moves
are
> just one more set of patterns.
You are correct. I am a purist. And the purist generates moves like
as follows :-)
Moves are generated (with patterns) for *any* point that could be a
*possible good move* (dame filler or better) . If I see a point that is
not generated and which could be a move to consider - then a
pattern is added. In a complex middle game situation my program
generates over 100 moves (from a pattern database of about 400
patterns).
The the idea is that evaluation only decides which move is the best.
My problem is that there is not time to evaluate more than perhaps
20 of them. And as a purist I refuse to add priorities to the patterns.
:-) ...
In my current implementation I have experimented with reusing the
evaluation values of the last move selection as priorities. I also skip
reevaluation of moves that only affected groups that has not been
"touched" since the move was evaluated.
There are two *major* flaws with this approach. When the fullboard
evaluaton of a move gets to slow. The program will look at perhaps
less than 10 moves at a time and then it will never have time to
evaluate all new moves that has not been evaluated even once in
the history of the game. it can then happen that it starts to play
randomly because it lack tha abilty to evaluate moves in a proper
order.
The second flaw is that skipping reevaluation probably is not very
safe in the current implementation (the true value of the move has
changed without the program thinking so). It is not a bad idea but it
does not work perfectly in my program and I guess that it very hard
to implement in any program if it has not been properly designed to
allow for this from the very start.
best purest wishes
Magnus