200 likes | 212 Views
Explore the application of proof numbers in Tsume-Go solvers, challenges faced, current status, unresolved issues, and future research directions. Discuss proof and disproof numbers, computational methods, and experimental results.
E N D
Applying proof numbers to Life and Death: First Result Akihiro Kishimoto Kishi@cs.ualberta.ca
Outline • Introduction • Current Status of my Tsume-Go solver • Experiments • Issues to be resolved • Conclusions
Research Direction • Go is hard to do a brute-force search • Still we need a search to prove the safety of stones Need a “smarter” search algorithm • Proof and disproof numbers are successful in tsume-shogi solvers • Why not apply this method to tsume-go solvers?
Current Status • Writing a tsumego solver for Explorer • Proof numbers as a threshold as well as an evaluation [Seo:95] • Disproof numbers for dynamic ordering at AND nodes • Garbage collection scheme [Nagai:99]
What I haven’t done • Handle Ko and Seki • E.g. Seki causes an issue (c.f. GHI problem) • Enhancements • Most important part to go up performance
Variable depth-first search [Seo:95] Proof number [Allis:94] as a threshold Transposition table Proof Numbers • Proof Number 2 3 2 1 1 1 1 1 pn OR node pn AND node
Proof Numbers: How to Compute? pn(n): minimal number of leaf nodes to prove n • Terminal Node: • OR: pn(n) = Inf • AND: pn(n) = 0 • Leaf (Unknown) Node: • pn(n) = 1 • Internal node: • OR: pn(n) = min (pn(n1), …, pn(nk)) n1…nk:children • AND: pn(n) = pn(n1) + …. + pn (nk) n1… nk: children
Dual notion of proof numbers pn(n): minimal number of leaf nodes to prove n dn(n): minimal number of leaf nodes to disprove n Disproof Numbers • Disproof Number 2 3 2 1 1 1 1 1 pn OR node pn AND node
Disproof Numbers:How to Compute? • Terminal Node: • OR: dn(n) = 0 • AND: dn(n) = Inf • Leaf (Unknown) Node: • dn(n) = 1 • Internal node: • OR: dn(n) = dn(n1)+ … +dn(nk)) n1… nk: children • AND: dn(n) = min(dn(n1) ,…. ,dn (nk)) n1… nk: children
Transposition table can’t save all the nodes Some information must be discarded Want to keep more important information SmallTreeGC [Nagai:99] Garbage Collection Scheme 0 0 0 Small tree Large tree
Garbage Collection Scheme (cont’d) • Keep an entry to count the size of subtree • Discard TT entries with small subtrees • Continue 2 until TT has enough empty entries • e.g. 60 % of entries are thrown out
Experimental Results • Pick up 5 problems from Thomas Wolf’s collection (lv1) • Problems solved: 3
Experimental Results (cont’d) Unsolved 10,775 nodes Depth=13 Unsolved 58,653 nodes Depth=8 157,653 nodes
What happens? • (Show the search space) • Weak heuristic to kill stones • pass is weird • Stable branching factor? • Slow
Not Research Issue but Important! • # of nodes expanded per second is slow and unstable (1,000 – 10,000 nodes/sec on leedale) • Case: 4,000 nodes / sec % cumulative 33.81 0.47 List::LongContains 10.79 0.62 TsumeGoTask::NuMovesToAdd 8.63 0.74 TsumeGoTask::CheckAdj 7.91 0.85 kHash::initTable 6.47 0.94 List::Append(int)
Not Research Issuebut Important (cont’d) • Case: 1,000 nodes/ sec % cumulative 55.42 3.07 List::LongContains 16.25 3.97 TsumeGoTask::NuMovesToAdd 8.12 4.42 List::Append(int) 3.07 4.59 TsumeGoTask::GenMoves 2.53 4.73 GoBoard::AdjacentBlocks
(c.f. GHI Problem) [Breuker:98] Duplicate TT entries to save results [Nagai:02] Specific method to df-pn Things to be Implemented: (Dis)proof with Cyclic Positions A E B D Proof? Disproof? C
Proof Set Search [Mueller:2002] Keep a set rather than numbers for (dis)proof [Nagai: 2002] Keep track of ancestors of a node with more than one parents Overestimation of Proof and Disproof Numbers Example 2 pn = 1!! 1 1 1 1 1 AND node OR node
Conclusions • Are proof and disproof numbers effective? • Too early to conclude • Need lots of enhancements • Evaluation functions • Simulation • Position decomposition • …
Near Future Work • Incorporate Martin’s one-eye evaluation function • Handle Ko [Wolf] and Seki • Convert Seo’s algorithm into df-pn • Df-pn doesn’t work well at present…. • Faster implementation