0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

五目並べ AI を minimax + alpha-beta 枝刈り + パターン評価関数で実装した

0
Posted at

作ったもの

Gomoku AIhttps://sen.ltd/portfolio/gomoku-ai/

スクリーンショット

  • 15×15 標準盤(Canvas 描画)
  • Minimax + alpha-beta 枝刈り
  • 3 段階の難易度(深さ 1 / 2 / 4)
  • パターンベースの評価関数
  • 既存石から半径 2 内に探索を限定
  • 即詰みブロック・即勝ち取得
  • Undo、履歴、最終手ハイライト

vanilla JS、ゼロ依存、ビルド不要node --test で 42 ケース。

パターン評価関数

if (count >= 5) return 1_000_000;            // 五連
if (count === 4 && openEnds === 2) return 50_000;  // オープン四 (必勝)
if (count === 4 && openEnds === 1) return 1_000;   // クローズ四
if (count === 3 && openEnds === 2) return 1_000;   // オープン三
if (count === 3 && openEnds === 1) return 100;
// ...

盤全体のスコア = own - opponent * 1.1。わずかに防御寄りにすることで、自分の攻めに夢中になって詰まされるミスを防ぐ。

探索範囲の制限

深さ 4 × 225 マスはナイーブには 25 億局面。既存石の半径 2 内だけを候補にすることで、候補手を 20〜40 手まで絞る:

for (const [r, c] of empty) {
  if (存在する石から半径 2 以内) nearby.add([r, c]);
}

alpha-beta と組み合わせて、深さ 4 が数百ミリ秒で終わるようになる。

最終手からの勝ち判定

盤全体を走査する必要はない。最後に置かれた石から 4 方向(横・縦・斜め 2 つ)へ連続同色の石を数えるだけ。O(1)(定数 5 まで)。

シリーズ

100+ 公開ポートフォリオ シリーズの #56 です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?