コンピュータ将棋における探索とは、人間が行う「先読み」をコンピュータに行わせるための技術(のグループ)のことである。
雑な説明: 「先手は先手の評価値が最大になるように手を選び、後手は先手の評価値が最小になるように手を選ぶ」という考えに基づいて行う探索
以下のルールでノードの評価値を決定する。
1: ノードが木の末端にある(終局しているか、評価関数を呼ぶ位置にある)場合は勝敗や評価関数でノードの評価値を決める
2: (評価値がすべてルートノードの手番視点とした場合)ノードの手番がルートノードの手番と同じなら、子ノードの評価値の中で最大のものをそのノードの評価値にする
3: ノードの手番がルートノードの手番と異なるなら、子ノードの評価値の中で最小のものをそのノードの評価値にする
例えば、ノードXの子ノードの先手から見た評価値がそれぞれ[A: 10, B: 20, C: -40, D: -1000]だった場合、 ノードXが先手番なら子ノードの(先手番から見た)評価値の中で最も高い20を評価値にし、 そのノードが後手番なら子ノードの(先手番から見た)評価値の中で最も低い-1000を評価値にする。
minimax法ベースの探索部を持つソフトは多い。
ざっくりした説明: アルファベータ法のアルファとベータの間のことを"探索窓"と呼び、この探索窓を0してから探索を行う。minimax値が探索窓の上にあるのか下にあるのかを高速に求めることができる。
move orderingがしっかりしていれば多くの枝刈りを行う事ができるが、move orderingの精度が悪いと後述の再探索を多く行う事になるため逆に効率が落ちる事がある。
探索の結果、厳密な評価値を求める必要がある事が分かった場合は通常の探索を行って厳密な評価値を求める。
ざっくりした説明: 駒がぶつかり合っている局面を正確に評価するのは難しいので、駒の取り合いなどが終わった静かな局面まで進めてから評価する手法の事。
静止探索では通常、全ての指し手を調べるのではなく、駒を取る手・王手がかかる手・(王手されている場合は)王手を回避する手などのみを調べる。
ある合法手が駒を取る手かどうかは、その手で駒が移動する先に別の駒があるかどうかで判定できる。(味方の駒がいるマスには移動できない & 敵駒がいるマスに移動すればその敵駒を取ることができるため)
minimax法などは関数の再帰呼び出し(自分自身を呼び出すこと)で簡単に実装できる。
「ランダムプレーヤーによるプレイアウト、泥沼の戦いになって全然終わらない問題」は1 ~ 3手詰めルーチンを入れるだけでかなりマシになる。
探索の途中でも時間が切れたら適当な値を返してすぐに打ち切るようにすれば時間切れ負けはかなり減る。
探索部のデバッグをする際は駒得評価関数を使うことをお勧めする。
コンピュータチェス・コンピュータオセロ・コンピュータ囲碁などの文献も参考になるものが多いので、時間があったら読んでみよう。(特にチェス)。
強いソフトのソースコードを読んで技術をパクろう。自分のソフトを簡単に強くできるし、何より勉強になる。
コンピュータ将棋のアルゴリズムHTML版(全体的に参考にした): http://usapyon.game.coocan.jp/ComShogi/index.html
Chess Programming Wikiの探索のページ(全体的に参考にする予定): https://www.chessprogramming.org/Search
電竜戦公式YouTubeチャンネルの動画「アルファベータ探索超入門」(アルファベータ探索に関する部分で参考にする予定): https://www.youtube.com/watch?v=OISGnuUH32E
DeepMind社AlphaGoの論文のページ(AlphaGoの手法の部分などで参考にする予定): https://www.deepmind.com/publications/mastering-the-game-of-go-with-deep-neural-networks-tree-search
DeepMind社AlphaGoZeroの論文のページ(AlphaGoZeroの手法、PV-MCTSなどの部分で参考にする予定): https://www.deepmind.com/publications/mastering-the-game-of-go-without-human-knowledge
DeepMind社AlphaZeroの論文のページ(AlphaZeroの手法、PV-MCTSなどの部分で参考にする予定): https://www.deepmind.com/publications/a-general-reinforcement-learning-algorithm-that-masters-chess-shogi-and-go-through-self-play
モンテカルロ法と囲碁・将棋ソフトの人智超え(モンテカルロ系の手法関連の部分で参考にした)http://www.yss-aya.com/jisa2009.ppt