私はチェスエンジンを書くことに興味があり(主に学習演習として)、人々が興味を持ったり使用したりできることを知っているリソース、本当に何でも興味があります:論文、本、理論、チュートリアル、有用。
回答:
私のアーカイブから:
チェスエンジンを作成するとき、私はチェスゲームを作成することの難しい側面のいくつかを説明する良いリソースを集めるために何ヶ月も費やしました。これが私が最も有用だと思ったもののリストです:
フランソワ・ドミニク・ララメによるチェスプログラミング
これは私をコンピューターチェスに導いた記事です。コンピューターがチェスをする方法の素晴らしい概要です。非常に読みやすく、すべての用語とキーワードを紹介します。
コンピュータチェスウィキ、これは過去数ヶ月で本当に拡大しました。参考資料として優れた資料です。
https://www.chessprogramming.org/Main_Page
ルイケスラーのコンピュータチェスリンク
上記のリソースを確認すると、残りは次のリンクページにあります。
http://www.lkessler.com/cclinks.shtml
最後になりましたが、C#でチェスエンジンを最初から作成するすべての手順を紹介するコンピューターチェスブログを作成します。このブログには、コンピューターチェスリンクセクションとチェスゲームスターターキットが含まれています。
アダムベレント
チェスゲームでコンピューターを「考える」ための最も一般的な方法は、コンピューターが現在の状態から事前にさまざまな動きをした結果を分析することによってコンピューターが「考える」ミニマックス法を使用することです。
さまざまな動きの結果の「良さ」は、スコア、残っている敵の数、勝利の状態など、多くの基準から判断できます。たとえば、プレーヤーを右に動かしてゲームに勝った場合、それは非常に良い状態です。しかし、それを左に動かすと何も得られません。右に移動するのが合理的です。「良さ」を定義するこの関数は、通常、ヒューリスティック関数と呼ばれます。
このプロセスは、多くのターンにわたって再帰的に実行されます。ターン数が多いほど、より多くの時間が必要になります。また、ターン数が多いほど、ソフトウェアはよりインテリジェントになります。たった1ターンで先を見据えることは、貪欲な選択につながるだけかもしれません。インテリジェントなチェスソフトウェアは優れたヒューリスティック機能を備えており、多くのターンで先を見据えています。
ps。ここでは説明しなかったミニマックスアルゴリズムの詳細がいくつかありますが、これは基本的な考え方をカバーしているはずです。
私はPaulWicksの同じリーグ(上記)に参加しました。私も自分の学習のためにチェスエンジンを書きたいと思っています。制約は私の日常の仕事(退屈なWebサービスなどに取り組むことです)だけですが、その価値はあります痛み。
レイヤーごとのアプローチを使用して構築することにしました。マルチプレイヤーの部分、つまり(HUMAN vs HUMAN)はほぼ終わりです。
これが終わったら、AIレイヤーを組み込んで(コンピューターとヒューマン)のプレイスキームをサポートしたいと思います。これが私が最も心配している部分です。このスレッドで非常に優れたヘルプのヒントを見つけました。皆様、本当にありがとうございました。
現在、私が精通している言語はJavaです。パフォーマンスが低下した場合は、C ++に移植する可能性があります。