いものやま。

雑多な知識の寄せ集め

変種オセロの思考ルーチンを作ってみた。(その2)

昨日はランダムAIを作った。

今日はもうちょいマシな思考ルーチンを作る。

貪欲AI

すぐに思いつくのは、可能な手をそれぞれ実行してみて、その中で一番よさそうな手を選ぶというもの。
「選択肢の中からとりあえず一番いいものを選ぶ」というのを「貪欲法」と呼ぶけど、近似アルゴリズムでは意外とこの貪欲法がいい手段の場合も多かったりする。

今回は、自分の色が勝ちなら100点、自分の色が負けなら-100点、そうでなければ(自分の色の数 - 相手の色の数)を盤面の評価として、貪欲法を実装してみた。

#!/usr/bin/env ruby

require_relative "board"
require_relative "game"

module YWF
  class GreedyCom
    def initialize(color)
      @color = color
      @opponent = (color == Board::BLACK) ? Board::WHITE : Board::BLACK
    end

    def select(board)
      current_select = nil
      current_select_value = -1000
      board.legal_actions.each do |action|
        command, place = action
        new_board = case command
                    when :pass
                      board.pass
                    when :play
                      board.play(*place)
                    when :change
                      board.change(*place)
                    end
        new_board_value = calculate_board_value(new_board)
        if new_board_value > current_select_value
          current_select = action
          current_select_value = new_board_value
        end
      end

      puts "#{current_select[0].to_s} #{current_select[1]}."
      current_select.flatten
    end

    private

    def calculate_board_value(board)
      if board.win?(@color)
        100
      elsif board.win?(@opponent)
        -100
      else
        board.count(@color) - board.count(@opponent)
      end
    end
  end
end

if __FILE__ == $PROGRAM_NAME
  include YWF

  black_player = GreedyCom.new(Board::BLACK)
  white_player = GreedyCom.new(Board::WHITE)

  game = Game.new(black_player, white_player)
  game.start
end

見ての通り、やっているのは、可能な手を実際に試してみて、よりいい手が見つかったらそれを覚えておくようにして、最終的に見つかった一番いい手を選ぶというだけ。

実行例

実行すると、以下のようになる。

[001] turn: O, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   |   | - | O | X |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | X | - | O |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [3, 4].
[002] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   |   | O | O | X |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | - | - | O |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [4, 3].
[003] turn: O, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | - | - | X |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | X | - | O |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [3, 7].
[004] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | - | - | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | X | O | O |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [4, 7].
[005] turn: O, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | X | X | X | X |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | X | O | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [6, 7].
[006] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | X | - | X | X |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | X | O | O |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | - | O | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [7, 4].
[007] turn: O, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | X | - | X | X |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | X | O | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | - | X | O | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   | X |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [8, 4].
[008] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O |   |   | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | - | - | X | X |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | - | O | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | O | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   | - |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   | O |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [3, 5].
[009] turn: O, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O | X |   | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | - | X | X | X |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | - | - | - |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | O | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   | - |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   | O |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [3, 6].
[010] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 2 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 3 |   |   |   | O | - | O | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 4 |   |   | X | - | X | - | X |   |   |
   +---+---+---+---+---+---+---+---+---+
 5 |   |   |   | - | - | O |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 6 |   |   |   | O | X | O | O |   |   |
   +---+---+---+---+---+---+---+---+---+
 7 |   |   |   | - |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 8 |   |   |   | O |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   |   |   |   |   |   |   |   |
   +---+---+---+---+---+---+---+---+---+
play [2, 5].

〜長いので省略〜

[191] turn: O, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | X | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | - | O | X | O | - |
   +---+---+---+---+---+---+---+---+---+
 5 | O | X | O | X | O | - | - | O | O |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | - | - | - | X | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | O | - | - | X | O | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | O | O | X | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [5, 6].
[192] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | O | O | - | O | - |
   +---+---+---+---+---+---+---+---+---+
 5 | O | X | O | X | O | O | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | - | O | O | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | O | O | - | - | O | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | O | O | X | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [7, 6].
[193] turn: O, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | O | - | - | O | - |
   +---+---+---+---+---+---+---+---+---+
 5 | O | X | O | X | O | - | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | - | - | - | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | - | - | X | X | - | - | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | - | - | X | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [8, 5].
[194] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | O | - | - | O | - |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | X | O | - | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | - | - | O | - | O | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | - | O | - | - | - | - | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | - | O | O | - | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [6, 6].
[195] turn: O, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | O | X | - | O | - |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | X | O | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | X | - | X | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | - | O | X | X | X | - | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | O | - | - | - | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [8, 9].
[196] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | O | X | - | O | - |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | X | O | - | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | X | - | X | O | X | - |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | - | O | X | X | X | O | - |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | O | O | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [4, 9].
[197] turn: O, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | - | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | - | - | O | X | X | - | X |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | X | O | - | O | - | - |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | X | - | X | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | - | O | X | X | X | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | O | O | O | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [6, 5].
[198] turn: X, token: -
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | O | - | O | X | - | - | X |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | - | O | O | O | - | - |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | X | O | X | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | - | O | - | - | X | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | O | O | O | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
change [7, 5].
[199] turn: O, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | O | - | - | X | - | - | X |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | - | - | O | O | - | - |
   +---+---+---+---+---+---+---+---+---+
 6 | X | X | X | X | - | X | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | X | X | X | - | X | X | X | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | X | X | O | X | - | - | O | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 |   |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
play [9, 1].
[200] turn: X, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | O | - | - | - | - | - | X |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | - | O | O | O | - | - |
   +---+---+---+---+---+---+---+---+---+
 6 | - | X | X | - | - | X | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | - | X | - | - | X | X | X | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | - | - | O | X | - | - | O | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 | O |   | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
play [9, 2].
[201] turn: O, token: O
     1   2   3   4   5   6   7   8   9
   +---+---+---+---+---+---+---+---+---+
 1 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 2 | O | O | O | X | X | X | X | O | O |
   +---+---+---+---+---+---+---+---+---+
 3 | O | O | O | - | X | X | O | O | O |
   +---+---+---+---+---+---+---+---+---+
 4 | O | O | O | - | - | - | - | - | X |
   +---+---+---+---+---+---+---+---+---+
 5 | O | - | O | - | O | O | O | - | - |
   +---+---+---+---+---+---+---+---+---+
 6 | - | X | X | - | - | X | - | X | X |
   +---+---+---+---+---+---+---+---+---+
 7 | - | X | - | - | X | X | X | O | X |
   +---+---+---+---+---+---+---+---+---+
 8 | - | X | O | X | - | - | O | O | - |
   +---+---+---+---+---+---+---+---+---+
 9 | O | X | X | X | X | X | X | X | X |
   +---+---+---+---+---+---+---+---+---+
----------
black: 29, white: 31
X win.

なんと、201手!
すごく捻りあいが続く感じ。

ランダムAIとの対戦成績

試しにランダムAIと100回ずつ戦わせてみると、次のような戦績。

黒の勝ち数 白の勝ち数 貪欲AIの勝率
貪欲AI ランダムAI 92 8 92%
ランダムAI 貪欲AI 4 96 96%

このように、ランダムな選択に比べて90%強勝てることが分かる。
いい感じ。
でも、さらに強くすることを目指す。

今日はここまで!