コンピュータチェスのプログラミング技術・課題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/25 01:56 UTC 版)
「コンピュータチェス」の記事における「コンピュータチェスのプログラミング技術・課題」の解説
コンピュータチェスのプログラミングは、以下の3つのフェーズに分割して考えることができる。 序盤 チェスの定跡は、昔から研究されているが、様々なバリエーションがある。通常のチェスソフトでは、序盤ではデータベースを参照しながら、現在の手順がデータベースにあるものかを検索する。データベースにあるもので、次の手が複数の候補を持てば、その最良の(最初の)手を選択するか、ランダムに1つを選んで指すようにする。 データベースとしては、様々なものが作成されており、コンパクトなものから巨大なものまである。かならずしも巨大であれば良いというものでもない。 中盤 定跡のデータベースをはずれた時点から、評価関数をもとに探索を行いながら、最良の手順を探っていく。この時の、評価関数の与え方、探索時における無駄の排除がプログラミングの中心となる。探索の重複を避けるために、ハッシュテーブルを用いるのが普通である。 終盤 取った駒の再利用ができないチェスにおいては、双方のキングを除いた残りの駒がある程度少なくなった場合については、チェックメイト局面から逆行して局面を生成することにより、特定の局面において先後双方が最善を尽くした際に相手をチェックメイト可能かまたは引き分け(理論的にはチェックメイト可能であるが50手ルール適用により強制引き分けになる場合を含む)に終わるかの完全解析を行うことが比較的容易である。このチェスの終盤戦=エンドゲームのデータベース化の研究はかなり進んでいる。 1980年代初めには両キングを含めて残りが5駒以下の場合について完全解析が完了、2006年には残り6駒以下の場合のほとんどが完了し、2018年には残り7駒以下の場合が完了してデータベース化されている。これをテーブルベース(tablebase)と呼ぶ。後述のソフトウェアの中には、デフォルトでこれを含んでいるものや、オプションとして利用可能なものがある。 テーブルベースのデータ量の大きさは膨大であり、特に工夫をしない場合、残り6駒以下では1.2テラバイト、7駒以下では140テラバイトとなって、実用には不向きである。この問題を解決するために、データの持ち方を最適化したSyzygyテーブルベースが開発され、6駒以下では150ギガバイト、7駒以下では17テラバイトに圧縮することができ、多くのチェスエンジンに対応済みとなっている。8駒以下のテーブルベースについては現在研究が進んでいるが、そのデータ量は、最適化を行わなければ1ペタバイトに及ぶ。
※この「コンピュータチェスのプログラミング技術・課題」の解説は、「コンピュータチェス」の解説の一部です。
「コンピュータチェスのプログラミング技術・課題」を含む「コンピュータチェス」の記事については、「コンピュータチェス」の概要を参照ください。
- コンピュータチェスのプログラミング技術・課題のページへのリンク