20
Applying proof numbers to Life and Death: First Result Akihiro Kishimoto [email protected]

Applying proof numbers to Life and Death: First Result

  • Upload
    gasha

  • View
    32

  • Download
    0

Embed Size (px)

DESCRIPTION

Applying proof numbers to Life and Death: First Result. Akihiro Kishimoto [email protected]. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Applying proof numbers to Life and Death: First Result

Applying proof numbers to Life and Death: First Result

Akihiro Kishimoto

[email protected]

Page 2: Applying proof numbers to Life and Death: First Result

Outline

• Introduction

• Current Status of my Tsume-Go solver

• Experiments

• Issues to be resolved

• Conclusions

Page 3: Applying proof numbers to Life and Death: First Result

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?

Page 4: Applying proof numbers to Life and Death: First Result

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]

Page 5: Applying proof numbers to Life and Death: First Result

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

Page 6: Applying proof numbers to Life and Death: First Result

Proof Numbers

• Variable depth-first search [Seo:95]– Proof number

[Allis:94] as a threshold

– Transposition table

• Proof Number

3 2

2

11 1 1

pn pnOR node AND node

1

Page 7: Applying proof numbers to Life and Death: First Result

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

Page 8: Applying proof numbers to Life and Death: First Result

Disproof Numbers

• 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 Number

pn pnOR node AND node

2

3 2

1 1 1 1 1

Page 9: Applying proof numbers to Life and Death: First Result

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

Page 10: Applying proof numbers to Life and Death: First Result

Garbage Collection Scheme

• Transposition table can’t save all the nodes– Some information must

be discarded

– Want to keep more important information

• SmallTreeGC

[Nagai:99]

0

Small tree

Large tree

0 0

Page 11: Applying proof numbers to Life and Death: First Result

Garbage Collection Scheme (cont’d)

1. Keep an entry to count the size of subtree

2. Discard TT entries with small subtrees

3. Continue 2 until TT has enough empty entries

• e.g. 60 % of entries are thrown out

Page 12: Applying proof numbers to Life and Death: First Result

Experimental Results

• Pick up 5 problems from Thomas Wolf’s collection (lv1)

• Problems solved: 3

Page 13: Applying proof numbers to Life and Death: First Result

Experimental Results (cont’d)

58,653 nodes

Depth=8

10,775 nodes

Depth=13Unsolved

Unsolved

157,653 nodes

Page 14: Applying proof numbers to Life and Death: First Result

What happens?

• (Show the search space)– Weak heuristic to kill stones

• pass is weird

– Stable branching factor?– Slow

Page 15: Applying proof numbers to Life and Death: First Result

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)

Page 16: Applying proof numbers to Life and Death: First Result

Not Research Issuebut Important (cont’d)

• Case: 1,000 nodes/ sec

% cumulative 55.42 3.07 List::LongContains16.25 3.97 TsumeGoTask::NuMovesToAdd8.12 4.42 List::Append(int)3.07 4.59 TsumeGoTask::GenMoves2.53 4.73 GoBoard::AdjacentBlocks

Page 17: Applying proof numbers to Life and Death: First Result

Things to be Implemented: (Dis)proof with Cyclic Positions

• (c.f. GHI Problem) • [Breuker:98]– Duplicate TT entries to

save results

• [Nagai:02]– Specific method to df-

pnB

A

Proof?Disproof?C

D

E

Page 18: Applying proof numbers to Life and Death: First Result

Overestimation of Proof and Disproof Numbers

• 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

Example

1 1

1

2

1 1

AND node OR node

pn = 1!!

Page 19: Applying proof numbers to Life and Death: First Result

Conclusions

• Are proof and disproof numbers effective?– Too early to conclude– Need lots of enhancements

• Evaluation functions

• Simulation

• Position decomposition

• …

Page 20: Applying proof numbers to Life and Death: First Result

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