コンピュータ詰碁の
探索戦略の改良
2005/02/10
近山・田浦研究室
37-46383 石井宏和
Agenda
1.
2.
背景と目的
関連研究
 Df-pn+

Bouzy’s 5/21 Algorithm
提案手法
実験と評価
まとめと今後の課題

3.
4.
5.
Depth-First Proof-Number探索
Agenda
1.
2.
背景と目的
関連研究
 Df-pn+

Bouzy’s 5/21 Algorithm
提案手法
実験と評価
まとめと今後の課題

3.
4.
5.
Depth-First Proof-Number探索
コンピュータゲームプレイヤ
ルールが単純で評価がし易い
 機械学習や並列計算などの技術を総合的に
用いる対象


人間の世界チャンピオン以上のレベルのゲーム
 オセロ,

バックギャモン, チェス
いくつかの複雑なゲームではアマチュアレベル
 将棋,
囲碁
囲碁の基本ルール

二人で交互に黒と白の石を
盤上の交点に打つ

上下左右を敵石に囲まれる
と石は盤上から取り除かれる

上下左右に敵石がある
交点へは打てない
勝敗は地(囲んだ空点の
数)の多さで決める

13目
9目
囲碁の基本ルール

眼
 周りを完全に囲まれた空点
 眼を二つ(二眼)持っていると
その石は最後まで取られずに残る(生き)
囲碁の現状

最新のコンピュータゲームプレイヤの強さ
 アマチュア初段程度

囲碁の難しさ
 探索空間の大きさ:10360
 オセロ:1060
 チェス:10120
 将棋:10220
 形勢優劣の判断
 石の特徴が無い
→相対的に分かる
判断基準が少ない
詰碁
囲碁の部分問題
 限られた領域内で、特定の石(の繋がり)が
最終的に盤上に残る
(生きる)かどうかの判定
二眼を持てば生き

目的

詰碁の問題を効率的に解くこと

研究対象
 一眼問題
一眼問題

一眼問題
 生かすべき石が決まっている
 生かすべき石は
始めから眼を一つ持つ
 受け手の石は攻め手の
生きた石に囲まれている
 着手範囲が決まっている
眼
眼
Agenda
1.
2.
背景と目的
関連研究
 Df-pn+

Bouzy’s 5/21 Algorithm
提案手法
実験と評価
まとめと今後の課題

3.
4.
5.
Depth-First Proof-Number探索
Df-pn+ [Nagai, et al 1999]

Depth-First Proof-Number(Df-pn)+
木探索で最も成功している
探索手法の一つ
 Depth-First Proof-Number探索を基本
 AND/OR
AND/OR 木探索

ノードの種類 (黒先手・黒生きの例)
 OR
ノード
受け手の手番(黒)に相当
 子ノードのうち、最低どれか一つが詰み(黒が生き)
であれば詰むノード

 AND
ノード
攻め手の手番(白)に相当
 子ノードの全てが詰んで初めて詰むノード


交互につながって探索木を構成
Depth-First Proof-Number探索

二つの閾値による探索の制御(黒先・黒生の場合)

証明数 (Proof Number (pn) )


反証数 (Disproof Number (dn) )


各ノードにおいて、その詰み
(黒の生き)を証明するために
展開しなければならない
子ノードの最小の数
各ノードにおいて、その不詰み
(黒の死に)を証明するために
展開しなければならない
子ノードの最小の数
計算方法
先端
ノード
内部
ノード
pn
dn
詰み
0
∞
不詰
∞
0
不明
1
1
OR
min pn(C)
ノード
AND
ノード
∑ pn(C)
∑ dn(C)
min dn(C)
C: children of node n
ノードを探索する時に最低限必要なリソース量の見積もり
Depth-First Proof-Number探索

リソース量の少ない見積もりから早く探索したい
 ORノードでは証明数・ANDノードでは反証数の
小さい(必要とされるリソース量の見積もりが少ない)
ものから優先的に探索

深さ優先探索
 メモリ使用量や時間の効率が良い

証明数・反証数それぞれに閾値を設けて探索
Depth-First Proof-Number探索
(∞,∞)
○:OR NODE
□:AND NODE
(2,∞-1)
n2c
A
R
C
[1,1]
D
[1,1]
E
nc
F
(3,2)
[1,1]
H
[1,1]
[2,1]
n2
G [1,1]
thd2 ≦ dn 2
[1,1]
[pn,dn]
nc2
B
(4,∞-1)
[1,1]
[3,1]
thp2 ≦ pn 3
(thp,thd)
[1,1]
[1,2]
[1,1]
[1,2]
I
[1,1]
ノードnがANDノード時反証数最小n
ノードnにおいて以下の条件を満たすまで子を探索(終了条件)
ルートノードに閾値を付与
ノードnがORノード時証明数最小nccと二番目に小さいn
と二番目に小さいn
2を選び閾値を与えてn
cを探索
2を選び閾値を与えてn
cを探索
n
p=n.th
p+n,c.pn-∑C.pn
nc.th
.th
=min(n.th
n2.pn+1)d
pn(n)≧n.th
or dn(n)≧n.th
R.th
=∞
c
pp
pd, =∞
p R.th
nc.thd=min(n.thd, n2.dn+1)
nc.thd=n.thd+nc.dn-∑C.dn
Df-pn+

人間の先読み
 見込みのある手は深く読む
 見込みのない手は早々に読むのをやめる

Df-pnにヒューリスティックスを用いて人間の
見込みの判別を表現し、探索を効率化
Df-pn+

Df-pnに加える二つのヒューリスティックス
 cost(dis)proof(n,
nchild)
ノードの展開の重さを計る指標
 ノードnからその子ノードnchildまでにかかるコストを計る
ヒューリスティックス
 証明数・反証数とそれぞれの閾値の計算に反映

 h(dis)proof(n)
兄弟ノードの優劣を計る指標
 静的にノードnを評価するヒューリスティックス
 ノードnが先端ノードの時の証明数と反証数の値に反映

Bouzy’s 5/21 Algorithm [Bouzy 1995]

盤面の形勢を評価するアルゴリズム
 各交点をそれぞれを周りの石の状況により評価

一定の計算式からなる評価関数
 二つの操作を繰り返すことにより各交点に
評価を与える
Dilation
 Erosion


軽い評価関数
Bouzy’s 5/21 Algorithm

Dilation
Erosion
Dilation
 周りに敵石がいなければ、
周りの味方の暫定領地
および味方の石の個数を
その交点の暫定領地
として加える

Erosion
 周りの敵石・敵側の暫定
領地および空白地の
個数を0になるまで引く
1
2
2
4
1
2
1
2
1
Bouzy’s 5/21 Algorithm
1.
2.
3.
4.
盤上で石のある交点に対して、
黒なら正・白なら負の高い評価値を与える
空点に0の評価値を与える
全ての交点に対してDilationをn回行う
全ての交点に対してErosionをm回行う

m = n ( n – 1) + 1
Bouzy’s 5/21 Algorithm
5
5
-5
-15
-14 -10
-14
-14 -18
-14
5
5
5
5
5
5
5
Agenda
1.
2.
背景と目的
関連研究
 Df-pn+

Bouzy’s 5/21 Algorithm
提案手法
実験と評価
まとめと今後の課題

3.
4.
5.
Depth-First Proof-Number探索
Df-pn+ へのBouzyの適用

囲碁の評価関数
 判断基準が曖昧
 石に特徴が無い
→ 優先順位の決定が困難

GoToolsの評価関数
 様々な囲碁の知識を利用
→定式化された軽い評価関数Bouzyを
Df-pn+に適用
Df-pn+ へのBouzyの適用

詰碁は目的の石(のつながり)が二眼を持っているかどうか
 評価値の中で大きいものから二つが眼となる可能性が高い
→二番目に大きい評価値を最大化する着手に最大の評価

ノードnが先端ノードだった時に用いるヒューリスティッ
クス(hproof(n))に適用
pn(n)  1
pn(n)  h proof (n)
dn(n)  1
dn(n)  hdisproof (n)
Df-pn
Df-pn+
Df-pn+ へのBouzyの適用
2
20
0
0
-20
0
-12
0
-11
0
-6
0
0
0
-15
-1
0
0
0
-9
0
0
0
0
0
-20
-12
-15
-3
0
0
0
0
0
0
-3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Df-pn+ へのBouzyの適用
a
2
0
0
20
20
14
b
20
2
0
20
2
0
0
d
0
0
0
0
0
0
0
14
e
20
0
c
0
20
0
0
0
0
0
f
Agenda
1.
2.
背景と目的
関連研究
 Df-pn+

Bouzy’s 5/21 Algorithm
提案手法
実験と評価
まとめと今後の課題

3.
4.
5.
Depth-First Proof-Number探索
評価実験

実験環境




CPU: Pentium 4 1.90GHz
メモリ: 512MB
言語: C++
比較手法
A.反復深化法(深さを閾値にして、閾値を徐々に大きくする
深さ優先探索)にBouzyを使って子ノードの
優先順位付けをするもの
B. Df-pn
C. Df-pnでpn・dnが同じ場合にBouzyを使って
子ノードの優先順位付けをするもの

一眼問題40問
評価実験
A. 反復深化法にBouzyを使って
子ノードの優先順位付けを
するもの
B. Df-pn
C. Df-pnでpn・dnが同じ場合に
Bouzyを使って子ノードの
優先順位付けをするもの
B
1000000
100000
10000
A
1000
100
10
1
1
100
1000
10000
100000
10000
100000
提案手法
100000
100000
10000
10000
1000
1000
C
100
10
100
10
10
1
1
1
10
100
1000
提案手法
10000
100000
1
10
100
1000
提案手法
評価実験

各手法において、提案手法よりも探索ノード数が多かった
問題・同数だった問題・少なかった問題の数
多かった問題の数
同数だった問題の数
少なかった問題の数



手法A
36
1
3
手法B
21
12
7
手法C
12
16
12
手法Aよりは優れている
手法Bよりはおおむね優れているが、場合によっては悪い
結果を出す
手法Cとはほぼ優劣がない
評価実験

成功した例


探索可能領域が
ある程度の大きさの
空点で構成される場合
特に、その領域内に
受け手の石が
ある場合
1
評価実験

失敗した例

問題の解が受け手の
守るべき石から
離れている場合

受け手の守るべき
石に近いところに
高い評価値
1
Agenda
1.
2.
背景と目的
関連研究
 Df-pn+

Bouzy’s 5/21 Algorithm
提案手法
実験と評価
まとめと今後の課題

3.
4.
5.
Depth-First Proof-Number探索
まとめ

詰碁を効率的に解くことを目的
Df-pn+にBouzy’s 5/21 Algorithm を適用

3つの手法と比較




A. 深さを閾値にした深さ優先探索に子ノードの優先順位付け
としてBouzyを使ったもの
B. Df-pn
C. Df-pnでpn・dnが同じ場合にBouzyを使って子ノードの順位
付けをしたもの
手法Aよりは優れた結果
手法Bよりもおおむね優れているが、場合によっては悪い結果
手法Cとはほぼ優劣がつかない
今後の課題

碁盤プログラムの改善



時間による考察
Dilation, Erosionの回数変更
評価関数のBouzyの適用方法の変更

探索可能領域の全ての交点の評価値の和を
最大化するような着手に最大の評価
発表は以上です。
ありがとうございました。
ダウンロード

Df-pn+