ヴァルヘルのソフト開発日記

動画管理や録画予約、本の発売予定などの便利ツールの開発状況のお知らせ

2013年04月13日

オセロゲームを作る!終盤の全読みロジック

30年前だとラスト10手くらいしか読めなかったが、今のCPUだとどこまでいけるか・・・。

終盤ロジックは単純で打ち手を全部ためして一番多く取れる手を選択するだけ。

一番多くと言っても自分の番のときの話で、相手は相手で一番多く取れるように打ってくる。

Othe14

図のようになる。

一番下から最終手が白だとすると白、黒ともに自分が一番多く取れるようにたどっていく。(赤い線)

やってみたら、ラスト12手の探査に20秒くらい、ラスト13手だと2、3分。ちょっと実用的ではない。

ラスト13手の候補の数 x 20秒くらい(ラスト12手の時間)探査にかかるとすると、3手以内の場合だけ全読みをするとか調整が必要かも。

30年前の時は探査途中で中断するロジックを入れていたような気がするけど、思い出せない。

相手の色の時(図だと白の時)、その時点の最多コマ数を下回るコマ数が出たときに探査を中断してもいい気がする。

試に組み込んでみたらラスト14手全読みが20秒くらいでできた。

ロジックに間違えがないかちと自信がないが・・・。

自分の色の探索中も中断できないかな。

<追記>

探索中断を効率よく行うために、盤に優先順をつけてよさげな位置から探索するようにした。

平たく言うと4つ角から探索、そのあと辺を探索。


プログラミング
オセロ