組合せ
ゲーム理論において、
ゲームの進展を視覚的に捉える強力なツールとして
ゲーム木があります。
ゲーム木は、
ゲームの各局面をノード(節点)、局面間の遷移(手)をエッジ(辺)で表した有向グラフです。全ての可能な手が含まれる
ゲーム木を
完全ゲーム木と呼びます。
例えば、
三目並べを考えましょう。
ゲーム開始から考えうる全ての手と、それによって生じる全ての局面をノードとエッジで表現すると、複雑な
ゲーム木が構築できます。ただし、回転や反転で同じになる局面は同一視することで、
ゲーム木のサイズを削減できます。
完全
ゲーム木の葉ノードの数、すなわち
ゲームが最終的に到達しうる異なる局面の総数は
ゲーム木複雑性と呼ばれます。
三目並べの
ゲーム木複雑性は26,830と比較的少ないですが、
チェスなどでは途方もない数になります。
ゲーム木は
人工知能の分野で重要な役割を果たします。
ゲームAIは、
ゲーム木を探索することで最適な手を決定します。
ミニマックス法などのアルゴリズムを用いて、将来の局面を予測し、自分の勝利確率を最大化する手を選択します。
三目並べ程度の規模であれば、完全
ゲーム木を探索することで最適解を求めることができますが、
チェスのような複雑な
ゲームでは完全
ゲーム木の大きさは膨大で、現実的な時間内に探索することは不可能です。そのため、
部分ゲーム木と呼ばれる、現在の局面から一定深さまで探索した
ゲーム木を用いるのが一般的です。部分
ゲーム木は探索の深さや、探索アルゴリズムの効率化によって、現実的な計算時間で探索可能なサイズに調整されます。
AND/OR木と2人対戦ゲーム
2人対戦
ゲームは、
AND/OR木という特殊な
ゲーム木で表現することもできます。AND/OR木では、先手の選択肢を論理和(OR)、後手の選択肢を論理積(AND)で表現します。先手が勝利するには、後手がどのような手を選択しても、先手が勝利できる手が存在する必要があります。この条件をAND/OR木で表現することで、
ゲームの勝敗を分析できます。
完全
ゲーム木が得られれば、
ゲームの最適解を得ることが可能です。これは、再帰的なアルゴリズムで実現できます。
1. まず、
ゲームの最終局面を評価し、プレイヤー1の勝利、プレイヤー2の勝利、引き分けの3種類に分類します。
2. そこから遡って、一つ前の局面を評価します。自分の手番の局面では、もし相手が勝利する局面が一つでもあれば、その局面も相手の勝利に分類します。もし全ての子ノードが同じ結果であれば、その局面も同様の結果に分類し、そうでなければ引き分けに分類します。
3. この処理を根ノードまで繰り返し適用することで、
ゲーム全体の勝敗を決定できます。根ノードの結果が、
ゲーム全体の勝敗を示します。
この手法を用いることで、完全
ゲーム木があれば、
ゲームの性質(先手必勝、後手必勝、引き分け)を決定的に判定できます。ただし、現実的には完全
ゲーム木を構築できる
ゲームは限定的です。
参考文献
Hu, Te Chiang; Shing, Man-tak (2002). Combinatorial Algorithms. Courier Dover Publications.
ISBN 0486419622.
Aske Plaat, Jonathan Schaeffer, Wim Pijls, and Arie de Bruin. Exploiting Graph Properties of Game Trees
関連事項
展開型
ゲーム
ミニマックス法
アルファ・ベータ法
木構造 (データ構造)