Pythonで〇×ゲームのAIを一から作成する　その64　ルールベースの AI の一覧、対戦成績、作成したデータファイルのまとめ

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/6b78ddb53b254a850457

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

https://github.com/ysgeso/marubatsu/blob/master/064/marubatsu.py

https://github.com/ysgeso/marubatsu/blob/master/064/ai.py

# この記事の内容

今回の記事は、下記の内容をまとめたものです。

* [ルールベースの AI](#ルールベースの-ai-の一覧)
* [ゲーム木を利用した強解決の AI](#ゲーム木を利用した強解決の-ai)
* [ランダムな AI である `ai2s` との対戦成績](#ランダムな-ai-である-ai2-との対戦結果)
* [本記事全体で作成したデータファイルの一覧](#本記事全体で作成したデータファイルの一覧)

# ルールベースの AI の一覧


## アルゴリズムの一覧

これまでに作成した AI の アルゴリズム は以下の通りです。

| ルール | アルゴリズム |
|:-:|:--|
| __[ルール1](https://qiita.com/ysgeso/items/bdbcd4c1ab1d8731df58#%E6%9C%80%E5%88%9D%E3%81%AB%E8%A6%8B%E3%81%A4%E3%81%8B%E3%81%A3%E3%81%9F%E7%A9%BA%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%83%9E%E3%82%B9%E3%81%AB%E7%9D%80%E6%89%8B%E3%82%92%E8%A1%8C%E3%81%86-ai)__  | __左上から順__ に __空いているマス__ を探し、__最初に見つかったマス__ に __着手__ する |
| __[ルール2](https://qiita.com/ysgeso/items/bdbcd4c1ab1d8731df58#%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%81%AA%E3%83%9E%E3%82%B9%E3%81%AB%E7%9D%80%E6%89%8B%E3%82%92%E8%A1%8C%E3%81%86-ai)__  | __ランダム__ なマスに __着手__ する |
| __[ルール3](https://qiita.com/ysgeso/items/1e8732db6cd1b0104276#%E3%83%AB%E3%83%BC%E3%83%AB-3-%E7%9C%9F%E3%82%93%E4%B8%AD%E3%81%AE%E3%83%9E%E3%82%B9%E3%81%AB%E5%84%AA%E5%85%88%E3%81%97%E3%81%A6%E7%9D%80%E6%89%8B%E3%81%99%E3%82%8B)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>既に __埋まっていた場合__ は __ランダム__ なマスに __着手__ する | |
| __[ルール4](https://qiita.com/ysgeso/items/1e8732db6cd1b0104276#%E3%83%AB%E3%83%BC%E3%83%AB-4%E5%9B%9B%E9%9A%85%E3%81%AE%E3%83%9E%E3%82%B9%E3%81%AB%E5%84%AA%E5%85%88%E3%81%97%E3%81%A6%E7%9D%80%E6%89%8B%E3%81%99%E3%82%8B)__  | __真ん中__、__隅__ のマスの __順__ で __優先的__ に __着手__ する<br>既に __埋まっていた場合__ は __ランダム__ なマスに __着手__ する | あり |
| __[ルール5](https://qiita.com/ysgeso/items/ff28a95dff50322e6b16#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-5%E5%8B%9D%E3%81%A6%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AB%E5%8B%9D%E3%81%A4)__  | __勝てる場合__ に __勝つ__<br>そうでない場合は __ランダム__ なマスに __着手__ する | |
| __[ルール6](https://qiita.com/ysgeso/items/e08c41f93109496fb9f9#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-6%E7%9B%B8%E6%89%8B%E3%81%AE%E5%8B%9D%E5%88%A9%E3%82%92%E9%98%BB%E6%AD%A2%E3%81%99%E3%82%8B)__  | __勝てる場合__ に __勝つ__<br>そうでない場合は __相手の勝利__ を __阻止__ する<br>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール6改](https://qiita.com/ysgeso/items/6c0d73cc9ef4efd62d48#%E3%83%AB%E3%83%BC%E3%83%AB-6-%E6%94%B9%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール7](https://qiita.com/ysgeso/items/e08c41f93109496fb9f9#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-7%E3%83%AB%E3%83%BC%E3%83%AB3-%E3%81%A8-%E3%83%AB%E3%83%BC%E3%83%AB-6-%E3%81%AE%E4%BD%B5%E7%94%A8)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手の勝利__ を __阻止__ する<br>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール7改](https://qiita.com/ysgeso/items/6c0d73cc9ef4efd62d48#%E8%A9%95%E4%BE%A1%E5%80%A4%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F-%E3%83%AB%E3%83%BC%E3%83%AB-7-%E3%81%A7%E7%9D%80%E6%89%8B%E3%82%92%E8%A1%8C%E3%81%86-ai-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール8](https://qiita.com/ysgeso/items/58754ba98c286f414ea4#%E3%83%AB%E3%83%BC%E3%83%AB-8-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は、__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が 1 つ以上 __存在する__ 局面になる着手を行う<br>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール9](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#%E3%83%AB%E3%83%BC%E3%83%AB-9-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う<br>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール10](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#%E3%83%AB%E3%83%BC%E3%83%AB-10)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__以下__ の 2 つを __総合的に判断__ して着手を行う<ul><li>__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う</li><li>__自分__ が __有利になる__ ように、「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う</li></ul>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール11](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#%E3%83%AB%E3%83%BC%E3%83%AB-11)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__以下__ の 3 つを __総合的に判断__ して着手を行う<ul><li>__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う</li><li>__自分__ が __有利になる__ ように、「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う</li><li>__相手__ が __不利になる__ ように、「__自 0 敵 1 空 2__」が __最も少ない__ 着手を行う</li></ul>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール12](https://qiita.com/ysgeso/items/70c50f75319373399871#%E9%99%90%E5%AE%9A%E7%9A%84%E3%81%AA%E6%9D%A1%E4%BB%B6%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AB%E3%83%BC%E3%83%AB-12-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __真ん中__ のマスに __優先的__ に __着手__ する<br>そうでない場合は __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__斜め方向__ に __〇×〇__ が __並び__、__他の 6 マス__ が __空のマス__ の場合に、__いずれか__ の __辺のマス__ に着手を行う<br>そうでない場合は、__以下__ の 3 つを __総合的に判断__ して着手を行う<br><ul><li>__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う</li><li>__自分__ が __有利になる__ ように、「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う</li><li>__相手__ が __不利になる__ ように、「__自 0 敵 1 空 2__」が __最も少ない__ 着手を行う</li></ul>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール12 改](https://qiita.com/ysgeso/items/b8b4123e3919357583d7#%E3%83%AB%E3%83%BC%E3%83%AB-12-%E6%94%B9%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__斜め方向__ に __〇×〇__ が __並び__、__他の 6 マス__ が __空のマス__ の場合に、__いずれか__ の __辺のマス__ に着手を行う<br>そうでない場合は、__以下__ の 3 つを __総合的に判断__ して着手を行う<br><ul><li>__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う</li><li>__自分__ が __有利になる__ ように、「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う</li><li>__相手__ が __不利になる__ ように、「__自 0 敵 1 空 2__」が __最も少ない__ 着手を行う</li></ul>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール13](https://qiita.com/ysgeso/items/6b78ddb53b254a850457#%E3%83%AB%E3%83%BC%E3%83%AB-13-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__。ただし、「__自 0 敵 2 空 1__」の __数__ が __少ない着手__ を __優先__ する<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__斜め方向__ に __〇×〇__ が __並び__、__他の 6 マス__ が __空のマス__ の場合に、__いずれか__ の __辺のマス__ に着手を行う<br>そうでない場合は、__以下__ の 3 つを __総合的に判断__ して着手を行う<br><ul><li>__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う</li><li>__自分__ が __有利になる__ ように、「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う</li><li>__相手__ が __不利になる__ ように、「__自 0 敵 1 空 2__」が __最も少ない__ 着手を行う</li></ul>そうでない場合は __ランダム__ なマスに __着手__ する |
| __[ルール14](https://qiita.com/ysgeso/items/6b78ddb53b254a850457#%E3%83%AB%E3%83%BC%E3%83%AB-14-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __勝てる場合__ に __勝つ__<br>そうでない場合は __相手__ が __勝利できる__ 着手を __行わない__。ただし、「__自 0 敵 2 空 1__」の __数__ が __少ない着手__ を __優先__ する。また、下記の __総合的に判断__ して __着手__ を行う __条件__ も __考慮__ する<br>そうでない場合は、__次__ の __自分の手番__ で __必ず勝利できる__ ように、「__自 2 敵 0 空 1__」が __2 つ以上存在する__ 局面になる着手を行う<br>そうでない場合は、__斜め方向__ に __〇×〇__ が __並び__、__他の 6 マス__ が __空のマス__ の場合に、__いずれか__ の __辺のマス__ に着手を行う<br>そうでない場合は、__以下__ の 3 つを __総合的に判断__ して着手を行う<br><ul><li>__次__ の __自分の手番__ で __勝利できる__ ように、「__自 2 敵 0 空 1__」が __1 つ存在する__ 局面になる着手を行う</li><li>__自分__ が __有利になる__ ように、「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う</li><li>__相手__ が __不利になる__ ように、「__自 0 敵 1 空 2__」が __最も少ない__ 着手を行う</li></ul>そうでない場合は __ランダム__ なマスに __着手__ する |

__ルール 11 ~ 14__ で __評価値を計算__ する際の __パラメータ__ は以下の通りです。

|  | `ai11s`<br>ver 1 | `ai11s`<br> ver 2 | `ai11s` ver 3<br>`ai12s`<br>`ai13s`<br>`ai14s` |
|:-:|:-:|:-:|:-:|
| __「自 2 敵 0 空 1」が 1 つの場合の評価値__  | 1  | 2 | 2 |
| __「自 1 敵 0 空 2」が 1 つあたりの評価値__ | 1  | 1 | 0.5 |
| __「自 0 敵 1 空 2」が 1 つあたりの評価値__ | -1 | -1 | 1 |

## アルゴリズムとルールの関係

下記は、__ルール 14__ の __アルゴリズム__ の __それぞれの条件__ が、__どのルール__ で __追加されたか__ についてまとめたものです。

| 順位 | 条件 | 種類 | ルール |
| :-:|:--|:--|:--|
| 1 | __勝てる場合__ に __勝つ__  | 十分条件  | [ルール 5](https://qiita.com/ysgeso/items/ff28a95dff50322e6b16#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-5%E5%8B%9D%E3%81%A6%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AB%E5%8B%9D%E3%81%A4) |
| 2 | __相手__ が __勝利できる__ 着手を __行わない__<br>「__自 0 敵 2 空 1__」の __数__ が __少ない着手__ を __優先__ する<br>__優先順位__ が __5 の条件__ も __考慮__ する | 必要条件  | [ルール 6](https://qiita.com/ysgeso/items/e08c41f93109496fb9f9#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-6%E7%9B%B8%E6%89%8B%E3%81%AE%E5%8B%9D%E5%88%A9%E3%82%92%E9%98%BB%E6%AD%A2%E3%81%99%E3%82%8B)<br>[ルール 13](https://qiita.com/ysgeso/items/6b78ddb53b254a850457#%E3%83%AB%E3%83%BC%E3%83%AB-13-%E3%81%AE%E5%AE%9A%E7%BE%A9)<br>[ルール 14](https://qiita.com/ysgeso/items/6b78ddb53b254a850457#%E3%83%AB%E3%83%BC%E3%83%AB-14-%E3%81%AE%E5%AE%9A%E7%BE%A9) |
| 3 | 「__自 2 敵 0 空 1__」が __2 つ以上存在__ する着手を行う  | 十分条件  | [ルール 8](https://qiita.com/ysgeso/items/58754ba98c286f414ea4#%E3%83%AB%E3%83%BC%E3%83%AB-8-%E3%81%AE%E5%AE%9A%E7%BE%A9) |
| 4 | __斜め方向__ に __〇×〇__ が __並び__、__他の 6 マス__ が __空のマス__<br>の場合は、__いずれか__ の __辺のマス__ に着手を行う  | 十分条件  | [ルール 12](https://qiita.com/ysgeso/items/70c50f75319373399871#%E9%99%90%E5%AE%9A%E7%9A%84%E3%81%AA%E6%9D%A1%E4%BB%B6%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AB%E3%83%BC%E3%83%AB-12-%E3%81%AE%E5%AE%9A%E7%BE%A9) |
| 5 | 「__自 2 敵 0 空 1__」が __1 つ存在__ する着手を行う<br>「__自 1 敵 0 空 2__」が __最も多い__ 着手を行う<br>「__自 0 敵 1 空 2__」が __最も少ない__ 着手を行う | | [ルール 9](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#%E3%83%AB%E3%83%BC%E3%83%AB-9-%E3%81%AE%E5%AE%9A%E7%BE%A9)<br>[ルール 10](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#%E3%83%AB%E3%83%BC%E3%83%AB-10)<br>[ルール 11](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#%E3%83%AB%E3%83%BC%E3%83%AB-11) |
| 6 | __ランダム__ なマスに __着手__ する  |   |

# ゲーム木を利用した強解決の AI

以下は [ゲーム木を利用した強解決の AI](https://qiita.com/ysgeso/items/321cf89ef5c49b861650#%E3%82%B2%E3%83%BC%E3%83%A0%E6%9C%A8%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%BC%B7%E8%A7%A3%E6%B1%BA%E3%81%AE-ai-%E3%81%AE%E4%BD%9C%E6%88%90) の関数のアルゴリズムの違いです。

| AI | アルゴリズム |
|:--|:--|
| [`ai_gt1`](https://qiita.com/ysgeso/items/321cf89ef5c49b861650#%E7%9D%80%E6%89%8B%E3%81%AE%E8%A8%88%E7%AE%97)  | 下記の手順で処理を行う。<ol><li>ゲーム木の中で、現在の局面を表すノードを探す</li><li>そのノードを使って、その局面の最善手を調べる</li><li>その中からランダムに着手を選択する</li></ol>  |
| [`ai_gt2`](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#ai_gt2-%E3%81%AE%E5%AE%9A%E7%BE%A9)  | 上記の手順 2 をゲーム木の作成の時点で行い、Node の `bestmoves` 属性に代入しておく|
| [`ai_gt3`](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#ai_gt3-%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%81%A8-ai_match-%E3%81%AB%E3%82%88%E3%82%8B%E5%AF%BE%E6%88%A6)  | 上記の手順 1 をゲーム木の作成の時点で行い、Mbtree の `nodelist_by_mb` 属性に代入しておく |
| [`ai_gt4`](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#%E3%81%95%E3%82%89%E3%81%AA%E3%82%8B%E6%94%B9%E8%89%AF)  | 上記の手順 1 と 2 をまとめてゲーム木の作成の時点で行い、Mbtree の `bestmoves_by_mb` 属性に代入しておく |
| [`ai_gt5`](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#%E6%9C%80%E5%96%84%E6%89%8B%E3%81%AE%E8%A8%88%E7%AE%97%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%88%86%E9%9B%A2)  | Mbtree の `bestmoves_by_mb` 属性だけを仮引数に代入するようにする |
| [`ai_gt6`](https://qiita.com/ysgeso/items/c4c7220d8c2f0ac3b6e6#bestmoves_by_board-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F-ai-%E3%81%AE%E5%AE%9A%E7%BE%A9)  | `board` 属性を利用した局面と最善手の対応表を仮引数に代入するようにする |
| [`ai_gt7`](https://qiita.com/ysgeso/items/368f00bae5408bac496a#ai_gt7-%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%81%AE%E6%96%B9%E6%B3%95)  | `board` 属性を利用した局面と最善手・評価値の対応表を仮引数に代入するようにする |

## gui_play に登録した `ai_gt6` を利用した AI

下記は、`gui_play` に登録した `ai_gt6` を利用した AI の性質と、その AI が利用するゲーム木のノードの評価値を計算する方法です。

### ai_gt6

全ての最善手の中からランダムに着手を行う強解決の AI です。

| 局面の状況 | 評価値 |
|:-:|:-:|
| __〇 の必勝の局面__ | 1 |
| __引き分けの局面__ | 0 |
| __× の必勝の局面__ | -1 |

### [ai_gtsv](https://qiita.com/ysgeso/items/0f83bcdf76bac5b0175f#gui_play-%E3%81%B8%E3%81%AE-ai-%E3%81%AE%E7%99%BB%E9%8C%B2)

__必勝の局面__ の場合は最善手の中で __最も早く勝利できる合法手__ を、__必敗の局面__ の場合は最善手の中で __敗北を最も先に延ばす合法手__ を選択する強解決の AI です。

| 局面の深さ | 5 | 6 | 7 | 8 | 9 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| __〇 が勝利した場合の評価値__  | 3  | |  2 | | 1  |
| __× が勝利した場合の評価値__  |   |-2 |   |-1 |   |

引き分けの局面の評価値は常に 0 とする。

### [ai_gtsvrd](https://qiita.com/ysgeso/items/94b7ad004fc31c6e9a0a#%E6%96%B0%E3%81%97%E3%81%84-ai-%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86)

__引き分けの局面の最善手__ に対して、[下記のような方法](https://qiita.com/ysgeso/items/86bcfad601e877cfc284#%E8%A9%95%E4%BE%A1%E5%80%A4%E3%81%AE%E8%A8%88%E7%AE%97%E6%96%B9%E6%B3%95)で __優劣をつけた__ ゲーム木の __評価値を計算__ することで、__勝利する可能性がある合法手を選択__ されるようにする AI です。

* __× の手番の局面の場合__
    * 相手の着手によって __〇 が 勝利する可能性がある__ 場合は __0.5__
    * そうでない場合は 0
* __〇 の手番の局面の場合__
    * 相手の着手によって __× が 勝利する可能性がある__ 場合は __-0.5__
    * そうでない場合は 0

## ゲーム木の評価値を動的に計算する AI

### [`ai_mmdfs`](https://qiita.com/ysgeso/items/66fdfcc4c732277bcb82#ai-%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AE-ai_mmdfs-%E3%81%AE%E5%AE%9A%E7%BE%A9) 

[ミニマックス法](https://qiita.com/ysgeso/items/3400391d2637eafc8899#%E8%A9%95%E4%BE%A1%E5%80%A4%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)によってゲーム木の評価値を動的に計算する AI

### [`ai_abs`](https://qiita.com/ysgeso/items/f1ec6467a79d135a4af9#ai-%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AE-ai_abs-%E3%81%AE%E5%AE%9A%E7%BE%A9)

[αβ 法](https://qiita.com/ysgeso/items/f1ec6467a79d135a4af9#%E7%A5%96%E5%85%88%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E8%80%83%E6%85%AE%E3%81%97%E3%81%9F-%CE%B1%CE%B2-%E6%B3%95)によってゲーム木の評価値を動的に計算する AI


## ランダムな AI である `ai2` との対戦結果

基準となる __`ai2`__ との __対戦結果__（単位は %）は以下の通りです。__太字__ は __`ai2 VS ai2` よりも__ __成績が良い__ 数値を表します。__欠陥__ の列は、__アルゴリズム__ に __欠陥__ があるため、__`ai2`__ との __対戦成績__ が __良くても強い__ とは __限らない__ ことを表します。欠陥の詳細については、関数名のリンク先の説明を見て下さい。

なお、__敗率__ が __0 %__ になっている __`ai12` ver 2 以降__ の __AI__ は __[弱解決の AI](https://qiita.com/ysgeso/items/5fe28ae6c765a169fd34#%E5%BC%B1%E8%A7%A3%E6%B1%BA-%E3%81%AE-ai-%E3%81%AE%E6%80%A7%E8%B3%AA)__ です。

また、`ai_gt1` は、ゲーム木の評価値を利用した __[強解決の AI](https://qiita.com/ysgeso/items/5fe28ae6c765a169fd34#%E5%BC%B1%E8%A7%A3%E6%B1%BA-%E3%81%AE-ai-%E3%81%AE%E6%80%A7%E8%B3%AA)__ です。なお、`ai_gt1` ~ `ai_gt5` の AI の強さはすべて同一なので、表では `ai_gt1` のみを表記します。

| 関数名 | o 勝 | o 負 | o 分 | x 勝 | x 負 | x 分 | 勝 | 負 | 分 | 欠陥 |
|:-:|--:|--:|--:|--:|--:|--:|--:|--:|--:|:-:|
| __[`ai1`](https://qiita.com/ysgeso/items/bdbcd4c1ab1d8731df58#ai1-%E3%81%AE%E5%AE%9A%E7%BE%A9)__<br>__[`ai1s`](https://qiita.com/ysgeso/items/3afe5630d7e615a28ebf#ai1s-%E3%81%AE%E4%BF%AE%E6%AD%A3)__  | __78.1__ | __17.5__ | 4.4 | __44.7__ | __51.6__ | 3.8 | __61.4__ | __34.5__ | 4.1 | あり |
| __[`ai2`](https://qiita.com/ysgeso/items/bdbcd4c1ab1d8731df58#ai2-%E3%81%AE%E5%AE%9A%E7%BE%A9)__<br>__[`ai2s`](https://qiita.com/ysgeso/items/8f3d4b3d2c02ef51a70e#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%96%A2%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E3%83%AB%E3%83%BC%E3%83%AB-2-%E3%81%A7%E7%9D%80%E6%89%8B%E3%82%92%E8%A1%8C%E3%81%86-ai-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | 58.7 | 28.8 | 12.6 | 29.1 | 58.6 | 12.3 | 43.9 | 43.7 | 12.5 | |
| __[`ai3`](https://qiita.com/ysgeso/items/1e8732db6cd1b0104276#ai3-%E3%81%AE%E5%AE%9F%E8%A3%85)__<br>__[`ai3s`](https://qiita.com/ysgeso/items/8f3d4b3d2c02ef51a70e#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%96%A2%E6%95%B0)__  | __69.3__ | __19.2__ | 11.5 | __38.9__ | __47.6__ | 13.5 | __54.1__ | __33.4__ | 12.5 | |
| __[`ai4`](https://qiita.com/ysgeso/items/1e8732db6cd1b0104276#%E3%83%AB%E3%83%BC%E3%83%AB-4%E5%9B%9B%E9%9A%85%E3%81%AE%E3%83%9E%E3%82%B9%E3%81%AB%E5%84%AA%E5%85%88%E3%81%97%E3%81%A6%E7%9D%80%E6%89%8B%E3%81%99%E3%82%8B)__<br>__[`ai4s`](https://qiita.com/ysgeso/items/3afe5630d7e615a28ebf#ai4s-%E3%81%AE%E4%BF%AE%E6%AD%A3%E3%81%A8%E5%8B%95%E4%BD%9C%E3%81%AE%E7%A2%BA%E8%AA%8D)__  | __83.0__ | __9.5__ | 7.4 | __57.2__ | __33.0__ | 9.7 | __70.1__ | __21.3__ | 8.6 | あり |
| __[`ai5`](https://qiita.com/ysgeso/items/ff28a95dff50322e6b16#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-5%E5%8B%9D%E3%81%A6%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AB%E5%8B%9D%E3%81%A4)__<br>__[`ai5s`](https://qiita.com/ysgeso/items/6c0d73cc9ef4efd62d48#ai5s-%E3%81%AE%E5%AE%9F%E8%A3%85)__  | __81.2__ | __12.3__ | 6.5 | __51.8__ | __39.8__ | 8.4 | __66.5__ | __26.0__ | 7.4 | |
| __[`ai6`](https://qiita.com/ysgeso/items/e08c41f93109496fb9f9#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-6%E7%9B%B8%E6%89%8B%E3%81%AE%E5%8B%9D%E5%88%A9%E3%82%92%E9%98%BB%E6%AD%A2%E3%81%99%E3%82%8B)__  | __88.9__ | __2.2__ | 8.9 | __70.3__ | __6.2__ | 23.5 | __79.6__ | __4.2__ | 16.2 |
| __[`ai6s`](https://qiita.com/ysgeso/items/e08c41f93109496fb9f9#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-6%E7%9B%B8%E6%89%8B%E3%81%AE%E5%8B%9D%E5%88%A9%E3%82%92%E9%98%BB%E6%AD%A2%E3%81%99%E3%82%8B)__  |   __88.6__ | __1.9__ | 9.5 | __69.4__ | __9.1__ | 21.5 | __79.0__ | __5.5__ | 15.5 |
| __[`ai7`](https://qiita.com/ysgeso/items/e08c41f93109496fb9f9#%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%9D%E3%81%AE-7%E3%83%AB%E3%83%BC%E3%83%AB3-%E3%81%A8-%E3%83%AB%E3%83%BC%E3%83%AB-6-%E3%81%AE%E4%BD%B5%E7%94%A8)__<br>__[`ai7s`](https://qiita.com/ysgeso/items/6c0d73cc9ef4efd62d48#ai7s-%E3%81%AE%E5%AE%9A%E7%BE%A9)__ | __95.8__ | __0.2__ | 4.0 | __82.3__ | __2.4__ | 15.3 | __89.0__ | __1.3__ | 9.7 |
| __[`ai8s`](https://qiita.com/ysgeso/items/085fd15fbd91d5cdf770#ai8s-%E3%81%AE%E4%BF%AE%E6%AD%A3)__  | __98.2__ | __0.1__ | 1.6 | __89.4__ | __2.5__ | 8.1 | __93.8__ | __1.3__ | 4.9 |
| __[`ai9s`](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#ai9s-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __98.7__ | __0.1__ | 1.2 | __89.6__ | __2.4__ | 8.0 | __94.1__ | __1.3__ | 4.6 |
| __[`ai10s`](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#ai10s-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __97.4__ | __0.0__ | 2.6 | __85.6__ | __2.6__ | 11.7 | __91.5__ | __1.3__ | 7.2 |
| __[`ai11s` ver 1](https://qiita.com/ysgeso/items/c1285c93cbfbdbdc7b77#ai11s-%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%81%A8ai2ai10s-%E3%81%A8%E3%81%AE%E5%AF%BE%E6%88%A6)__  | __98.1__ | __0.0__ | 1.9 | __82.5__ | __1.9__ | 15.6 | __90.3__ | __1.0__ | 8.7 | あり |
| __[`ai11s` ver 2](https://qiita.com/ysgeso/items/5fe28ae6c765a169fd34#ai11s-%E3%81%AE%E4%BF%AE%E6%AD%A3)__ | __98.8__ | __0.0__ | 1.2 | __87.7__ | __2.4__ | 10.0 | __93.2__ | __1.2__ | 5.6 | |
| __[`ai11s` ver 3](https://qiita.com/ysgeso/items/70c50f75319373399871#%E4%BF%AE%E6%AD%A3%E3%81%97%E3%81%9F%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%A7%E3%81%AE-ai2-%E3%81%A8%E3%81%AE%E5%AF%BE%E6%88%A6)__  | __99.1__ | __0.0__ | 0.9 | __87.7__ | __0.8__ | 11.5 | __93.4__ | __0.4__ | 6.2 | |
| __[`ai12s` ver 2](https://qiita.com/ysgeso/items/b8b4123e3919357583d7#ai12s-%E3%81%AE%E4%BF%AE%E6%AD%A3%E3%81%A8%E7%A2%BA%E8%AA%8D)__  | __98.9__ | __0.0__ | 1.1 | __88.2__ | __0.0__ | 11.8 | __93.5__ | __0.0__ | 6.5 | |
| __[`ai12s` ver 3](https://qiita.com/ysgeso/items/b8b4123e3919357583d7#%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%81%AA-ai-%E3%81%A8%E3%81%AE%E5%AF%BE%E6%88%A6)__  |  __95.8__ | __0.0__ | 4.2 | __86.9__ | __0.0__ | 13.1 | __91.3__ | __0.0__ | 8.7 | あり |
| __[`ai13s`](https://qiita.com/ysgeso/items/6b78ddb53b254a850457#ai13s-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __98.9__ | __0.0__ | 1.1 | __88.5__ | __0.0__ | 11.5 | __93.7__ | __0.0__ | 6.3 |
| __[`ai14s`](https://qiita.com/ysgeso/items/6b78ddb53b254a850457#ai14s-%E3%81%AE%E5%AE%9A%E7%BE%A9)__  | __99.0__ | __0.0__ | 1.0 | __88.8__ | __0.0__ | 11.2 | __93.9__ | __0.0__ | 6.1 |
| __[`ai_gt1`](https://qiita.com/ysgeso/items/321cf89ef5c49b861650#%E7%9D%80%E6%89%8B%E3%81%AE%E8%A8%88%E7%AE%97)__  | __96.9__ | __0.0__ | 3.1 | __78.0__ | __0.0__ | 22.1 | __87.4__ | __0.0__ | 12.6 |
| __[`ai_gtsvrd`](https://qiita.com/ysgeso/items/321cf89ef5c49b861650#%E7%9D%80%E6%89%8B%E3%81%AE%E8%A8%88%E7%AE%97)__  | __97.1__ | __0.0__ | 2.9 | __81.1__ | __0.0__ | 18.9 | __89.1__ | __0.0__ | 10.9 | |

# 本記事全体で作成したデータファイルの一覧

下記は、本記事全体で作成したデータファイルの一覧です。

| ファイル名 | 説明 |
|:--|:--|
| [bftree.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/bftree.mbtree)  | [幅優先アルゴリズムによって作成されたゲーム木](https://qiita.com/ysgeso/items/949d18e60939d510c931#%E5%B9%85%E5%84%AA%E5%85%88%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E4%BB%BB%E6%84%8F%E3%81%AE%E6%B7%B1%E3%81%95%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E6%9C%A8%E3%81%AE%E4%BD%9C%E6%88%90)  |
| [dftree.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/dftree.mbtree)  | [深さ優先アルゴリズムによって作成されたゲーム木](https://qiita.com/ysgeso/items/db7cfe4a1f14d9cb9368#%E6%B7%B1%E3%81%95%E5%84%AA%E5%85%88%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B2%E3%83%BC%E3%83%A0%E6%9C%A8%E3%81%AE%E4%BD%9C%E6%88%90)  |
| [bfscore.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/bfscore.mbtree)  | [幅優先アルゴリズムによって評価値を計算したゲーム木](https://qiita.com/ysgeso/items/3400391d2637eafc8899#calc_score_by_bf-%E3%81%AE%E5%AE%9A%E7%BE%A9)  |
| [dfscore.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/dfscore.mbtree)  | [深さ優先アルゴリズムによって評価値を計算したゲーム木](https://qiita.com/ysgeso/items/3400391d2637eafc8899#%E6%B7%B1%E3%81%95%E5%84%AA%E5%85%88%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%A3%85)  |
| [aidata.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/aidata.mbtree)  | [ゲーム木を利用する AI に必要なデータが計算されたゲーム木](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E6%AF%94%E8%BC%83)  |
| [bestmoves.dat](https://github.com/ysgeso/marubatsu/blob/master/data/bestmoves.dat)  | [局面を表す棋譜のデータと最善手の一覧の対応表を表すデータ](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E6%AF%94%E8%BC%83)  |
| [bestmoves_by_board.dat](https://github.com/ysgeso/marubatsu/blob/master/data/bestmoves_by_board.dat)  | [`board` 属性を利用した局面と最善手の一覧の対応表を表すデータ](https://qiita.com/ysgeso/items/c4c7220d8c2f0ac3b6e6#board-%E5%B1%9E%E6%80%A7%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%B1%80%E9%9D%A2%E3%81%A8%E6%9C%80%E5%96%84%E6%89%8B%E3%81%AE%E5%AF%BE%E5%BF%9C%E8%A1%A8%E3%81%AE%E4%BD%9C%E6%88%90) |
| [mblist.dat](https://github.com/ysgeso/marubatsu/blob/master/data/mblist.dat)  | [決着がついていない局面の一覧を表すデータ](https://qiita.com/ysgeso/items/d2c309058e2c60d2e476#ai-%E5%87%A6%E7%90%86%E6%99%82%E9%96%93%E3%81%AE%E5%B7%AE%E3%81%AE%E8%A8%88%E6%B8%AC)  |
| [mblist_by_board.dat](https://github.com/ysgeso/marubatsu/blob/master/data/mblist_by_board.dat)  | [`board` 属性を利用した決着がついていない局面の一覧を表すデータ](https://qiita.com/ysgeso/items/c4c7220d8c2f0ac3b6e6#mblist_by_board-%E3%81%AE%E8%A8%88%E7%AE%97%E3%81%A8%E4%BF%9D%E5%AD%98) |
| [mblist_by_board2.dat](https://github.com/ysgeso/marubatsu/blob/master/data/mblist_by_board2.dat)  | [合法手の一覧と最善手が同じ局面を除いた決着がついていない局面の一覧を表すデータ](https://qiita.com/ysgeso/items/7cb0c709f6d5884d925e#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98%E3%81%A8-is_strongly_soved-%E3%81%AE%E4%BF%AE%E6%AD%A3%E3%81%A8%E7%A2%BA%E8%AA%8D) |
| [mblist_by_board_min.dat](https://github.com/ysgeso/marubatsu/blob/master/data/mblist_by_board_min.dat)  | [合法手の一覧と最善手が同じ局面と、同一局面を除いた決着がついていない局面の一覧を表すデータ](https://qiita.com/ysgeso/items/7cb0c709f6d5884d925e#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98%E3%81%A8-is_strongly_soved-%E3%81%AE%E4%BF%AE%E6%AD%A3%E3%81%A8%E7%A2%BA%E8%AA%8D-1) |
| [bftree_shortest_victory.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/bftree_shortest_victory.mbtree) | [幅優先探索アルゴリズムで決着がついた局面の深さに応じた評価値を計算したゲーム木](https://qiita.com/ysgeso/items/0f83bcdf76bac5b0175f#%E8%A9%95%E4%BE%A1%E5%80%A4%E3%81%AE%E8%A8%88%E7%AE%97%E6%96%B9%E6%B3%95%E3%81%AE%E5%A4%89%E6%9B%B4) |
| [dftree_shortest_victory.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/dftree_shortest_victory.mbtree)  | [深さ優先探索アルゴリズムで決着がついた局面の深さに応じた評価値を計算したゲーム木](https://qiita.com/ysgeso/items/0f83bcdf76bac5b0175f#%E8%A9%95%E4%BE%A1%E5%80%A4%E3%81%AE%E8%A8%88%E7%AE%97%E6%96%B9%E6%B3%95%E3%81%AE%E5%A4%89%E6%9B%B4) |
| [bestmoves_by_board_shortest_victory.dat](https://github.com/ysgeso/marubatsu/blob/master/data/bestmoves_by_board_shortest_victory.dat)  | [bftree_shortest_victroy.mbtree を使ってboard 属性を利用した局面と最善手の一覧の対応表を計算したデータ](https://qiita.com/ysgeso/items/0f83bcdf76bac5b0175f#ai_gt6-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F-ai) |
| [bestmoves_and_score_by_board.dat](https://github.com/ysgeso/marubatsu/blob/master/data/bestmoves_and_score_by_board.dat) | [局面と最善手・評価値の対応表のデータを保存したファイル](https://qiita.com/ysgeso/items/c4150416c994571b2803#calc_and_save_bestmoves_and_score_by_board-%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E5%AE%9A%E7%BE%A9) |
| [bestmoves_and_score_by_board_shortest_victory.dat](https://github.com/ysgeso/marubatsu/blob/master/data/bestmoves_and_score_by_board_shortest_victory.dat) | [最短の勝利を優先した評価値を計算した局面と最善手・評価値の対応表のデータを保存したファイル](https://qiita.com/ysgeso/items/c4150416c994571b2803#calc_and_save_bestmoves_and_score_by_board-%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E5%AE%9A%E7%BE%A9) |
| [bftree_svrd.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/bftree_svrd.mbtree) | [引き分けの局面で勝利する可能性がある合法手を選択するような評価値を計算したゲーム木](https://qiita.com/ysgeso/items/94b7ad004fc31c6e9a0a#%E3%82%B2%E3%83%BC%E3%83%A0%E6%9C%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98) |
| [bestmoves_and_score_by_board_sv_rd.dat](https://github.com/ysgeso/marubatsu/blob/master/data/bestmoves_and_score_by_board_sv_rd.dat) | [上記のゲーム木で計算した局面と最善手・評価値の対応表のデータを保存したファイル](https://qiita.com/ysgeso/items/94b7ad004fc31c6e9a0a#mbtree-%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE-__init__-%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E4%BF%AE%E6%AD%A3) |
| [abtree_root.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/abtree_root.mbtree) | [αβ 法で最短の勝利を優先しない評価値を計算したゲーム木](https://qiita.com/ysgeso/items/ffa55bf637e6810b0330#%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%82%B2%E3%83%BC%E3%83%A0%E6%9C%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98) |
| [abtree_sv_root.mbtree](https://github.com/ysgeso/marubatsu/blob/master/data/abtree_sv_root.mbtree) | [αβ 法で最短の勝利を優先する評価値を計算したゲーム木のファイル](https://qiita.com/ysgeso/items/ffa55bf637e6810b0330#%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%82%B2%E3%83%BC%E3%83%A0%E6%9C%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98) |


# 本記事で入力したプログラム

本記事で入力したプログラムはありません。

# 更新履歴

| 更新日時 | 更新内容 |
|:--|:--|
| 2024/09/22 | gui_play に登録した `ai_gt6` を利用した AI の項目を追加しました。
| 2024/08/18 | ゲーム木を利用した AI と、作成したデータファイルの情報の項目を追加しました。以後は、本記事の更新に合わせて適宜修正します。 |

# 次回の記事

https://qiita.com/ysgeso/items/ab2770693c947c108dd0