Avon
各思考ルーチンのアルゴリズムが知りたいと要望をもらいましたので
アルゴリズムの概要を説明します。
アルゴリズム /
Benjamin /
Jim /
Jonathan /
Arthur /
Melchior /
戻る
アルゴリズム
- 思考ルーチンは 5 種類存在します。
下に各思考ルーチンの性格一覧を書いておきます。
-
-
Benjamin
- 一定の順序でマスにコマが置けるかどうか調べて、
置ける場合はすぐに置きます。
マスを調べる順序は 8 通りあり、
そのうち 1 つを試合開始時にランダムに決定します。
-
- マスを調べる順序は
左上→右下、右上→左下、左下→右上、右下→左上
の 4 通りに上側優先か下側優先かの 2 通りが組み合わさります。
-
- そのくせさえ見極められれば簡単に勝てます。
Jim
- コマを置いた時に最も多く相手のコマが取れるように置きます。
取れる相手のコマの数が同じになる場合は
その中でランダムに選びます。
-
- 人と対戦している場合、
相手の番の時も先読みする処理の実験もかねています。
-
- 隅・端を意識している人ならば勝てます。
Jonathan
優先順位表
1 | 7 | 3 | 2 |
2 | 3 | 7 | 1 |
7 | 7 | 6 | 5 |
5 | 6 | 7 | 7 |
3 | 6 | 3 | 4 |
4 | 3 | 6 | 3 |
2 | 5 | 4 | 4 |
4 | 4 | 5 | 2 |
2 | 5 | 4 | 4 |
4 | 4 | 5 | 2 |
3 | 6 | 3 | 4 |
4 | 3 | 6 | 3 |
7 | 7 | 6 | 5 |
5 | 6 | 7 | 7 |
1 | 7 | 3 | 2 |
2 | 3 | 7 | 1 |
- 右の優先順位表に従ってマスにコマが置けるかどうか調べます。
-
- 具体的には、まずは優先順位 1 番の隅にコマが置けるかどうか調べ、
コマが置ける場所がある場合、
そのうちで最も多く相手のコマが取れるマスにコマを置きます。
優先順位 1 番のマスにコマが置ける場所がなかった場合、
優先順位 2 番のマスに対して同じ処理を繰り返します。
-
- また、例外措置として自分のコマが置けても
その直後に相手が隅に置けてしまう場合は
そのマスの優先順位は +10 されます。
-
- オセロ初心者にとっては強いかもしれません。
Arthur
- すべての手について評価値を計算し、
評価値が最大となる手を選びます。
-
- 評価値はコマの置かれるマス毎に基本点が用意されています。
さらにコマを置いた時に取れる相手のコマの数が加算されます。
その上に様々な条件に合わせて評価値を増減させます。
その条件としては次のようなものがあります。
-
- そのマスに敵がコマを置けるかどうか
- コマを置いた後に自分が隅にコマを置けるようになるかどうか
- コマを置いた後に相手が隅にコマを置けるかどうか
- 対角線上のコマを自分のコマにできるかどうか
- コマを置いた後の相手のコマの置けるマスの数
- コマを置いた後に相手に端が取られるかどうか
- 増える確定コマの数
- 端で自分のコマの間に空きができてしまうかどうか
- 自分のコマの置いてある隅の周辺かどうか
- 乱数
-
- また、最後の 2 手については完全読みをします。
-
- それなりの強さです。
Melchior
- α-β法を使っています。
-
- 高速化のため評価関数は
Arthur
の評価関数を簡略化したものになっています。
3 手先まで読んでいます。
-
- あまり深読みしていないので頑張れば勝てます。
戻る