Road to Victory

Othello
Let us cling together
メンバー
•
•
•
•
•
班長
プログラマー
アルゴリズム
パワーポイント
発表
杉本友宏
京谷貴平
佐野祐之
菊澤遼平
川本敏和
はじめに
小さな頃からみんなが慣れ親しんできたOthello。
普段は戦略について深く考えることなく打ってい
たが、今回の機会を利用して戦略に基づいたプ
ログラムを考えてみる。
そのために調べた方法を紹介していく。
基本方針
・盤面にポイントを設定。
→同じポイントの場合ランダムに打つという
問題あり。
・αーβ法とミニマックス法を取り入れることで
上記の問題を解決。
特徴
• 隅での対処法
• 各セルの評価値は隅に石があるかないかで変動する。
• 隅を取られないためには、隅に隣接するセルには置かない
方がよいが、隅が埋まった後には気にする必要がないためで
ある。そこで、隅の状態により、評価値表を盤面の1/4毎に差
し替える。 下図は盤面左上の評価値表である。
200
100
50
30
0
50
30
20
100
30
20
10
50
10
15
5
50
20
10
10
30
15
5
0
50
10
10
10
20
5
0
0
隅が自分の石の時
隅が敵の石の時
着手数・要石の計算
• リバーシゲームでは打てる所がある限りパスが許さ
れないので、手詰りで不利な個所に打たないように、
着手数(石が置ける場所の数)は多ければ多いほど
有利である。
• しかし、一見着手数が多いように見えても、ひっくり
返す敵の石がひとつしかなければ、結局一度しか
使えない。そこで、着手数と同時に、その手により
ひっくり返される石(要石)の数も考慮に入れる。
• 着手数・要石を計算するのに、全てのセルか
ら8方向にスキャンしていたのでは時間がか
かるので、本プログラムでは盤面に対して4
方向にスキャンし、盤面と同サイズの2次元
配列にフラグを立てるようにしている。
参考文献
• 将棋とコンピュータ(情報フロンティアシリー
ズ), 松原仁, 共立出版, 1994
• 思考ゲームプログラミング, 森田和郎, 国枝
交子, 津田伸秀, アスキー出版局, 1986
感想
• 今回Javaによるプログラミングについて学ん
でみて、普段我々が何気なく思考しているこ
とでも、それをコンピュータに同じように思考
させるのは非常に大変なことであると思いま
した。この知識をこれからにも役立てていきた
いと思いました。