web-dev-qa-db-ja.com

チェスエンジンを作成するための優れたリソースは何ですか?

私はチェスエンジンを書くことに興味があり(主に学習演習として)、人々が知っているか興味があるか使用できるリソースに本当に興味があります:論文、書籍、理論、チュートリアル、有用。

76
Paul Wicks

私のアーカイブから:

111
RoadWarrior

チェスエンジンを作成するとき、チェスゲームの作成のより難しい側面を説明する優れたリソースを収集するために数か月を費やしました。これが私が最も役立つと思ったもののリストです。

FrançoisDominicLaraméeによるチェスプログラミング

これは、私をコンピューターチェスに導いた記事です。コンピューターがチェスをプレイする方法の概要です。非常に読みやすく、すべての用語とキーワードを紹介します。

http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/chess-programming-part-i-getting-started-r1014

コンピューターチェスwiki、これはここ数か月で本当に拡大しました。これは、参考資料の優れたリソースです。

https://www.chessprogramming.org/Main_Page

ルイ・ケスラーのコンピューターチェスリンク

上記のリソースを確認したら、次のリンクページで残りを見つけることができます。

http://www.lkessler.com/cclinks.shtml

最後になりますが、私はComputer Chess Blogを書きます。これは、C#でチェスエンジンをゼロから書くすべての手順を説明します。リンクセクションとチェスゲームスターターキット。

http://www.chessbin.com

アダム・ベレント

28
Adam Berent

チェスで役立つ多くのアルゴリズムの概要- http://www.frayn.net/beowulf/theory.html -問題の尺度を理解するための良い出発点であり、単純化するいくつかの方法計算作業。

-アダム

9
Adam Davis

GNU Chess のコードを常に見ることができます。

クロードシャノンの 1949年の論文 (警告:PDF)の主題は良い出発点です

3
barrowc

初心者向けの最高のチェスプログラミングチュートリアルは GameDev です。細部に至るまで非常に理解しやすいです。

2
Niyaz

私は同じポール・ウィックス(上記)のリーグに参加しましたが、私も自分の学習のためにチェスエンジンを書きたいと思っています。私の仕事は退屈なWebサービスやものに取り組むことです)痛み。

レイヤーごとのアプローチを使用して構築することにしました。私はほとんどマルチプレイヤーの部分、つまり(ヒューマンvsヒューマン)で終わりました。

これが完了したら、AIレイヤーを組み込んで(コンピューターと人間)のプレイスキームをサポートしたいと思います。これは、私が最も心配している部分です。このスレッドで非常に素晴らしいヘルプヒントを見つけました。皆様に大いに感謝します。

現在、私がよく知っている言語はJavaです。パフォーマンスが低下した場合に備えて、C++に移植する可能性があります。

1
sij

これは基本的に 人工知能(AI)の分野です。

チェスのゲームでコンピューターを「考える」ための最も一般的な方法は、 mini-maxメソッドを使用することです 現在の状態。

異なる動きの結果の「良さ」は、例えば、スコア、残っている敵の数、勝利状態などの多くの基準から決定できます。たとえば、プレーヤーを右に動かしてゲームに勝った場合、それは非常に良い状態です。ただし、左に移動しても何も得られません。右に移動するのが妥当です。 「良さ」を定義するこの関数は、通常、ヒューリスティック関数と呼ばれます。

このプロセスは、多くのターンにわたって再帰的に行われます。ターン数が多いほど、より多くの時間が必要になります。また、ターン数が多いほど、ソフトウェアはよりインテリジェントになります。 1ターンだけ先を考えると、貪欲な選択しか得られません。インテリジェントなチェスソフトウェアは、優れたヒューリスティック機能を備えており、多くのターンで先を見据えています。

追伸ここで説明しなかったミニマックスアルゴリズムの詳細はいくつかありますが、これは基本的な考え方をカバーするはずです。

1
Gant