DAGを有する問題を解くための超効率的AND/OR木探索アルゴリズム
Download
Report
Transcript DAGを有する問題を解くための超効率的AND/OR木探索アルゴリズム
オセロ求解へ向けた取
り組み
橋本剛 上田徹 橋本隼一
北陸先端科学技術大学院大学
情報科学研究科
まずは自己紹介
コンピュータ将棋 TACOS の開発をしてます。
趣味: 将棋(自分のプログラムにまったく勝
てなくなった)
学会: 情報処理学会ゲーム情報学研究会、
ICGA(International Computer Games
Association)
こちらの分野のホットな話題
コンピュータ将棋: 評価関数の自動学習(B
onanza Method, 保木2006)
プロレベルまであと少し
コンピュータ囲碁: モンテカルロ法(+UCT)
が猛威を振るう
9路盤ではプロに勝った?
に
19路盤でも有段者
昨年の大きな話題:
Checkers is solved
Checkersが解けた!結論は引き分け.[J.
Schaeffer et al, Science, 2007].
世界中で大きく取り上げられ,Checkerが有名でない日
本でも新聞などが取り上げた.
ゲームを解くという事は大きな話題を呼ぶ
大型計算機を数年間回し続けた(新聞では18年計
算しっぱなしで解いたなどと報道)
checkersの次の候補は?
⇒ オセロ
本日の流れ
研究の目的
関連研究紹介: Checkers is solved
証明数を使う探索
新しい探索法WPNSの提案
オセロ・ソルバの開発・設計
まとめ
研究の目的
オセロはCheckerよりも難しく解くのは困難
オセロが解けたらインパクトは大きい
8×8オセロの読切り
ゲームの結論とそれに至る手順を求める
オセロを解く事の難しさ
checkersの探索空間は5×1020
オセロの探索空間は100000000×1020
6×6のオセロは解かれており、16対20で白勝ち.[Joel
Feinstein 1993]
ハードウェアの進歩や探索法の洗練によりコン
ピュータの探索性能は格段に向上
容易に解く事は出来ないが,
決して夢物語ではない
チェッカーのルール
・駒は常に斜めに動く
・獲る事が可能な駒は必ず獲らなければならない。複数の獲り方がある場合は任意に選
択してよい。
・相手の駒を穫った後もう一度穫ることが可能ならば、そのまま連続してもう一駒穫る
・一番奥の列に駒を進めることによって、「成る」ことができる。成った駒は「キング」と呼ば
れ、以後斜め後ろを合わせた4方向に進むことができるようになる
・以下のふたつの状況で勝敗が決定する。
・相手の駒が全滅した場合、全滅させた側の勝利となる
・次に動かせる駒がなくなった場合、動かせなくなった側が敗北となる
Checkers is solved:
アルゴリズム構成
Seeding
Proof tree manager
Proof number search
Proof solver
文献などから得る「Best Play」
の手順を入れる
αβ探索→dfpn探索
Endgame database
駒残り10個以下の局面は
すべて登録
オセロにも使える?
証明数を使う探索
証明数を使う探索
証明木
探索空間 O(bd)
例
A 勝
分岐因子
d: 深さ
b:
負
証明木: O(bd/2)
節点が勝ちであることを
証明する木
証明木になりそうなノード
を効率よく探索する方
法は?
H
⇒ 証明数探索
OR節点
証明木
不明
AND節点
勝
B
不明
D
I
負け
C
負
E
J
勝
勝
G
F
K
L
M
勝ち 勝ち 勝ち 勝ち
証明数の定義
節点nの証明数pn(n)
nが勝ちであるために展開しなければならない先端節点数の下限値
(1)節点nが先端節点
(a)未解決
pn = 1
(b)勝ち
pn = 0
(c)負け
pn = ∞
(2)節点nが内部節点
(a)nがOR節点
pn = 子節点のpnの最小値
(b)nがAND節点
pn = 子節点のpnの和
pn
2
2
1
1
∞
0
∞
OR節点 pn AND節点
2
証明数を使って探索
証明数を使って効率よく探索するには?
⇒ 証明数が最小のノードを常に展開すればい
い
⇒ 最良優先探索が簡単
ややこしいノードは後回し、証明数の少ない
簡単そうなノードを先に探索
手数が長くても応手数が少ない問題は特に
強い
最適解は保障しない
PN-searchとその進化
証明数を閾値として探索を行う。証明数の少ない簡
単そうなノードを優先して展開するので、解に到達し
やすい。
反証数も同時に閾値として扱う
最良優先探索→PN-search [Allis,1994]
メモリの問題があり、難しい問題は解けない
詰め将棋の世界で深さ優先探索として発展、
PN*: 証明数だけ、ミクロコスモスを初めて解く[Seo:1997]
参考 ミクロコスモス http://www.geocities.jp/k_7ro/o18.html
df-pn: 長手数詰め将棋問題をすべて解くことに成功
[Nagai:1999]
df-pn
(depth first proof number search)
反証数も使いPN-searchと等価 [Nagai:1999]
300手以上の詰将棋問題を全て解く
checkersが解かれた際の探索にも用いられる
詰碁でも優れた成果を挙げる
二人零和完全情報ゲームを解くための現時点で最良
の探索法
オセロをdfpnで解かせてみたら
残り手数20手以上の局面では性能がた落ち
オセロでは局面の合流が相当多く、2重カウ
ント問題の影響が非常に大きいことがわかっ
た!
何か本質的な対策が必要
証明数の2重カウント問題
原因:証明木に合流が存在すると起こる
AND節点 A
OR節点 B
F+G+H
C
実際には?
D
F
合流
E
G
H
pn(A) = F + 2G + H
証明数が高く見積もられてしまっている
簡単な問題を難しいと勘違い!
2重カウントへの対応
長井の2重カウント対策
合流検知に時間を要する
実装が難しい
経路分枝因数探索(BNS)(2005,
岡部)
経路分枝因数を用いた深さ優先の探索法
挙動は証明数探索に似ている
一部の詰将棋問題ではdf-pnよりも良い結果を収めてい
る
合流の影響を受けない(2重カウントが問題とならない)
探索情報を活かしきれてない為,df-pnよりも探索性能は
劣る
証明数の定義
経路分枝因数の定義
bn:経路分枝因数
pn:証明数
(1)節点nが先端節点
(a)未解決
pn
bn = 1
(b)勝ち
bn = 0
pn
(c)負け
bn = ∞
pn
(2)節点nが内部節点
(a)nがOR節点
bn = 子節点のpnの最小値
子節点のbnの最小値
pn
(b)nがAND節点
bn =選択した子節点のbn
+ 非選択の未解決分枝因数
pn = 子節点のpnの和
解探索を行ってみた
コアとなる探索法
df-pnを用いた解探索
オセロは合流を大量に持つた
め探索に影響を受ける
BNSを用いた解探索
探索性能が低いため問題を
解くのに異常に時間がかかる
探索法をどうにかしないといけない!
新しい探索法の提案
新しい探索手法の提案
Weak Proof Number Search
証明数探索 + 経路分枝因数探索
探索効率 + 合流の影響なし
両方を持つ
df-pnのように探索効率が良く
BNSのように合流の影響を受けない
既存の探索法とWPNの違い
各探索法
ANDノードでの定義
df-pn
子節点のpnの和
BNS
選択した子節点のbn +非選択の未解決分枝因数
WPNS
子節点のWPNの最大 + 未解決の指し手の数
実現は容易
挙動の違い(合流がない場合)
df-pnの場合
BNS
= PN(C) + PN(D) + 3 ・・・・・PN(A)=6
PN(A)(選択した局面がC,Eの場合)
BN(A)
BN(C) +
+ 11 +
+ 21・・・・・・・・・・BN(A)=3
PN(B) = PN(E)
・・・・・・・・・PN(B)=5
WPNSの場合
BN(B) = BN(E) + 1 + 1・・・・・・・・・・BN(B)=4
WPN(A) = WPN(D) + 1 + 1・・・・・・WPN(A)=5
WPN(B) = WPN(E) + 1 + 1・・・・・・WPN(B)=4
○
df-pn
×
BNS
局面A:6
B
2
C
1
A
3
3
OR node
D
∞
1
4
局面B:5 WPNS
2
4
AND node
E
こっちの方が簡単!
3
2
挙動の違い(合流がある場合)
df-pnの場合
BNS(局面D,Eを選択した場合)
WPNSの場合
BN(A)
BN(D) ++ PN(D)
1 + 1 ・・・・・・・・・・BN(A)=9
PN(A) = PN(C)
+ 3 ・・・・・・PN(A)=17
WPN(A) = WPN(C) + 1 + 1 ・・・・・・WPN(A)=9
BN(B)
PN(E)
++ 31 ++ 31 ・・・・・・・・・・BN(B)=11
BN(E)
PN(B) = =
WPN(B)
WPN(E)
+ 1 +・・・・・・・・・・PN(B)=15
1・・・・・・WPN(B)=11
WPNSはどちらでも正解
df-pn
○
BNS
局面A:10
WPNS
C
D
F
G
こっちの方が簡単!
0
A
7
B
3
E
9
0
3
×
局面B: 15
3
OR node
AND node
性能評価
オセロ終盤
詰将棋
性能評価(オセロ終盤)
プロットされた点がy=xより下:WPNSの方が性能が悪い
プロットされた点がy=xより上:WPNSの方が性能が良い
Search nodes(WPNS vs BNS)
5.0E+06
2.5E+06
4.0E+06
2.0E+06
BNS(search node)
df-pn(search node)
Search nodes(WPNS vs df-pn)
3.0E+06
2.0E+06
1.5E+06
1.0E+06
1.0E+06
5.0E+05
0.0E+00
0.0E+00
0.0E+00
0.0E+00
1.0E+06
2.0E+06
3.0E+06
WPNS(search node)
WPNS vs. df-pn
4.0E+06
5.0E+06
5.0E+05
1.0E+06
1.5E+06
WPNS(search node)
WPNS vs. BNS
探索性能が明らかに向上している
2.0E+06
2.5E+06
性能評価(詰将棋)
WPNS vs. df-pn
WPNS vs. BNS
‐テストセット‐
将棋図巧・将棋無双
200問
11~611手の詰将棋問題集
性能評価(詰将棋)
Search nodes(WPNS vs BNS)
Search nodes(WPNS vs df-pn)
4.0E+06
3.0E+06
3.0E+06
BNS(search node)
df-pn(search node)
4.0E+06
2.0E+06
1.0E+06
0.0E+00
0.0E+00
2.0E+06
1.0E+06
1.0E+06
2.0E+06
3.0E+06
WPNS(search node)
WPNS vs. df-pn
4.0E+06
0.0E+00
0.0E+00
1.0E+06
2.0E+06
3.0E+06
4.0E+06
WPNS(search node)
WPNS vs. BNS
•df-pnよりはやや性能が劣るがBNSよりはやや性能が良い
10~60手の問題が中心でオセロほど合流がないのでは?
手数が多い問題ではどうなる?
性能評価(詰将棋)
Tacos(WPNS) vs. 市販ソフト
‐テスト問題‐
将棋図巧 100番 「寿」
2つの作品中で最長手数の611手詰み
Tacos vs 市販ソフト
将棋ソフト名
探索ノード数
解いた時間
銀星将棋4
unsolved
激指7
unsolved
Tacos(改良前)
unsolved
柿木将棋8
不明
1分20秒
AI将棋14
不明
17.3秒
東大将棋8
1685848
10.5秒
Tacos(WPNS)
797438
7.2秒
WPNSを用いただけで探索性能が格
段に向上した
オセロ・ソルバの開発・設計
WPNSを用いたオセロ・ソルバ
メインアルゴリズム
WPNS
その他の効率化
ゲーム終盤ではαβ探索を使用
トランスポジションテーブル中のGCの改良
振動対策
このソルバを用いてオセロの解探索を行う
オセロ読切り
元となる局面はfjt1
27手の定石(残り33手)
オセロの本筋と考えられている定石
自動対戦で何手か進んだ局面を生成
15~32手の問題
オセロ読切り結果
WPNS
問題 残り手数
Nodes
df-pn
Time(s)
1
19
541784
2
20
21428024
3
20
1548693
29.8
4
25
138654111
2868.1
5
25 187406357590 40549.1
6
26
7
32
337386822
2^64以上
9.8
Nodes
815257
416.6 27581028
7533.1
3230158
BNS
Time(s)
13.4
Nodes
Time(s)
905186
14.1
572.3 64276154
1202.1
60.1
3782194
67.9
解けない
1ヶ月半
19~26手:打切り条件として探索時間が24時間を越えたら解けないとする
32手:打切り条件なし
他の探索法では不可能だった32手読みに成功
結論
提案手法による好結果を得た
オセロでは◎
合流に対して有力
提案手法の可能性
詰将棋でも○
題材に依存しない
オセロの解探索
WPNSオセロ・ソルバは唯一32手読みに成功
まとめ
WPNSの提案
df-pn
BNS
WPNS
基本性能
○
△
○
合流に対して
×
○
○
WPNSを用いたオセロ・ソルバの開発・設計
多くの問題で効率が良い
他の探索法では不可能だった32手読みに成功
結論
提案手法は合流に対して有力
Future work
探索法の改良
オセロの特性(決まった手数で終了)に合うもっと
良い探索法があるのでは?
強いオセロプログラムとの合体
並列化の研究
証明数系探索の並列化方法
grid
computing
60手読み切るまで道のりは長い