[Welcome to Sensei's Library!]

StartingPoints
ReferenceSection
About


Referenced by
ComputerGoProgram...

 

Kosh
PageType: HomePage     Keywords: Software

Jack Ha,

Kosh 6k on KGS

I'm a 24 year old student of computer science. My final assignment is about computer go, so all comments or ideas are welcome. I'm interested in search trees and learning algorithms for local situations. The goal is to find a(n) (optimal?) solution, as fast as possible (= minimum iterations). Maybe this can be expanded to life/death problems later.

Everything will be done in [ext] Python, a quite flexible high level programming language.

Feel free to add text to this page.


My work so far

There are mainly 2 parts which are important:

  • the move suggester/evaluator
  • search strategy

The move suggester is a kind of filter that filters 'good' moves according to some rules. These rules will be obtained automatically, but now they are still hand coded. Actually there are only 2 rules now: 1 liberty -> try that move, 2 liberties -> try both. Other rulesets are also used for testing.

Proof Number search is implemented and working :)

A simple multigoal searcher has been implemented. It WORKS! (see bottom illustration). The ruleset used: try all liberties of groups with 3 libs or less.

Future plans

Better move suggester

  • Group reduction before search
  • Automatic rule generation

Life&Death

  • Look for eyes and possible eyes

Results so far

Proof Number search is working well, but the overall performance is still a little low. The move suggester/evaluator is still quite simple at this moment. With a little lookahead and smart pattern matching, the search will be a lot faster.

test problems:

[Diagram]

searching capture (4, 4) It: [100] , PN(root): 7 It: [200] , PN(root): 5 Proof Number search iterations: 223 PNtree size: 978 solution found: [(4, 3), (5, 4), (6, 4), (5, 3), (5, 2), (6, 3), (7, 3), (6, 2),

 (6, 1), (7, 2), (7, 1), (8, 2), (8, 1), (3, 3), (8, 3)]

[Diagram]
sequence


[Diagram]

searching capture (1, 2) Proof Number search iterations: 7 PNtree size: 13 solution found: [(1, 1), (0, 2), (0, 1), (0, 3), (0, 4)]


[Diagram]
sequence


[Diagram]

searching capture (4, 4) It: [100] , PN(root): 5 Proof Number search iterations: 180 PNtree size: 583 solution found: [(5, 4), (4, 3), (4, 2), (5, 3), (6, 3), (5, 2), (5, 1), (6, 2),

 (7, 2), (6, 1), (7, 1), (6, 0), (7, 0), (6, 4), (5, 0)]

[Diagram]
sequence


[Diagram]

searching capture (5, 6) Proof Number search iterations: 49 PNtree size: 156 solution found: [(6, 8), (2, 8), (4, 8)]


[Diagram]
sequence


[Diagram]

searching capture (4, 1) It: [100] , PN(root): 6 It: [200] , PN(root): 9 It: [300] , PN(root): 14 It: [400] , PN(root): 24 It: [500] , PN(root): 36 It: [600] , PN(root): 32 It: [700] , PN(root): 31 It: [800] , PN(root): 24 Proof Number search iterations: 833 PNtree size: 4502 no solution found



[Diagram]

searching capture [(2, 4), (3, 6)]

PNtree size: 16216 solution: [(2, 6), (2, 5), (1, 6), (3, 5), (3, 7), (0, 6), (1, 5)] iterations: 2598


[Diagram]
sequence

time pnsearch: 15.4720000029 ( 0.00595535027054 ) time executed: 15.5820000172

Problems

As you can see the net capture test isn't optimal. Tests use a quite large tree and a lot of search iterations! This should be solved by the better move suggester/evaluator. Also in general it must find sequences a lot faster. A matter of the move suggester/evaluator too.



This is a copy of the living page "Kosh" at Sensei's Library.
(OC) 2004 the Authors, published under the OpenContent License V1.0.