チェスに最適なアルゴリズムはありますか?[閉まっている]


109

私は最近、チェスコンピュータの可能性について、コーディング担当以外の人と話し合っていました。私は理論に精通していませんが、十分知っていると思います。

私は、チェスで常に勝ったり、止まったりする決定論的なチューリングマシンはあり得ないと主張しました。player1 / 2の動きのすべての組み合わせのスペース全体を検索しても、コンピューターが各ステップで決定する単一の動きは、ヒューリスティックに基づいていると思います。ヒューリスティックに基づいているため、対戦相手が実行できるすべての動きに必ずしも勝るとは限りません。

逆に、私の友人は、コンピュータが「間違い」の動きを起こさなければ、常に勝つか引き分けになると思っていました(しかし、あなたはそれをどのように定義していますか?)。しかし、CSを採用したプログラマーである私は、賢明な反対者が与えられたとしても、あなたの良い選択でさえ、結局は「間違い」の動きを強いられる可能性があることを知っています。あなたがすべてを知っているとしても、あなたの次の動きはヒューリスティックを一致させることに貪欲です。

ほとんどのチェスコンピュータは、可能なエンドゲームを進行中のゲームと一致させようとします。これは、本質的に動的プログラミングトレースバックです。繰り返しになりますが、問題のエンドゲームは回避可能です。

編集:うーん...私はここでいくつかの羽毛をラッフルのように見えます。それは良い。

もう一度考えてみると、チェスのような有限のゲームを解くことには理論的な問題はないようです。チェスはチェッカーよりも少し複雑だと主張します。勝利は必ずしも駒の数の枯渇によるものではなく、仲間によるものです。私の最初の主張はおそらく間違っていますが、私はまだ(正式には)まだ十分に証明されていないものを指摘したと思います。

私の考えた実験は、ツリー内の分岐が行われるときはいつでも、アルゴリズム(または記憶されたパス)は、対戦相手の移動の可能性のある分岐について、(結合されないで)合致へのパスを見つけなければならないというものだったと思います。話し合った後、私たちが夢見るよりも多くのメモリがあれば、これらのパスをすべて見つけることができたので、それを購入します。


1
+1:すばらしいトピック。ただし、回答の多様性と量によって示されるように、これはwiki-fiedである必要があると思います。
IAbstract

1
「まだ十分に証明されていないものを指摘したと思いますか」?正式に証明されていないことを何と指摘しましたか?
S.Lott、

2
あっ!このような白黒の質問に対する20の異なる答えがあるのはなぜですか。(しゃれは意図されていません)。
Peter Recore 2010

5
私も、答えが実際に数学的に決定されていることに気づかずに投機的な答えを投稿した人々の数に驚いています-チェスには解決策があることが証明されているという意味での答え-それを計算することは実際的ではありません。
DJClayworth、2010年

3
完璧なチェスのコンピューターについての冗談を思い出します。白で遊んで、考えて、考えて、考えて、そして……辞任!

回答:


104

「私は常にチェスで勝ったり、止まったりする決定論的なチューリングマシンはあり得ないと主張した。」

あなたは全く正しくありません。そのような機械があります。問題は、検索しなければならない状態空間の広さです。それは有限で、本当に本当に大きいです。

チェスがヒューリスティックに頼るのはそのためです。状態空間は大きすぎます(ただし有限です)。列挙することさえ-すべての可能なゲームのすべてのコースに沿ったすべての完璧な動きのためのはるかに少ない検索-は、非常に非常に大きな検索問題になるでしょう。

オープニングは、「強い」ポジションを与えるゲーム中へとあなたを導くためにスクリプト化されています。既知の結果ではありません。ピースが少ないエンドゲームでさえ、次の最善の動きを決定するために列挙するのは困難です。技術的には有限です。しかし、選択肢の数は膨大です。2ルーク+キングでも、22の次の移動が可能です。そして、それがメイトするために6つの動きを取るならば、あなたは12,855,002,631,049,216の動きを見ています。

開口部の動きについて計算を行います。開始の動きは約20しかありませんが、2番目の動きは30程度の動きがあるため、3番目の動きまでに、360,000の代替ゲーム状態を調べています。

しかし、チェスのゲームは(技術的に)有限です。巨大ですが有限です。完璧な情報があります。開始状態と終了状態が定義されており、コイン投げやダイスの出目はありません。


22
6個以下のすべてのエンドゲームが列挙および解決されました。こちらのテーブルベースとビットベースを参照してください:en.wikipedia.org/wiki/Tablebase。たとえば、KQNKRBNエンドゲームでは、メイトを強制するために517の移動が必要です!しかし、チェスのゲームの総数はおよそ(10 ^(10 ^ 50))です。
HTTP 410

2
勝つためのスクリプトは、一つのことです。網羅的に列挙することは別のものです。いずれにせよ、情報は完全です-すべてがわかっています-ゲームは定義により決定論的です。
S.Lott、2009年

11
@RoadWarrior:そう思わない。ランダムは天気に適用されます。神はサイコロを振る。ランダムはチェスには適用されません-定義によります。チェスは完全な情報を持っています。天気には量子効果があります-完全ではありません。
S.Lott、2009年

3
天気を予測するのが難しいのは、量子効果ではなく、無秩序な非線形因子です。十分な計算能力と知識があれば、理論的には「正しい」天気予報を作成できます。
HTTP 410、

3
@monojohnny:ルールは同じ位置の3回の繰り返しを禁止します。チェスは有限です。それは大きいですが有限です。
S.Lott

72

私はチェスについて実際に何が発見されたかについてほとんど何も知りません。しかし、数学者として、ここに私の推論があります:

最初に、ホワイトが最初に行くことを覚えておかなければなりません。おそらくこれは彼に利点を与えるでしょう。多分それは黒に利点を与えます。

ここで、常に勝つ/膠着状態にするブラックのための完璧な戦略ないと仮定します。これは、ブラックが何をしても、ホワイトが勝利するための戦略があることを意味します。ちょっと待ってください-これはホワイトにとって完璧な戦略あることを意味します!

これは、2人の選手の少なくとも一つがあることを教えてくれるそのプレイヤーは常に勝つか、描くことができます完璧な戦略を持っています。

可能性は3つだけです。

  • ホワイトは完璧にプレーすれば常に勝つことができます
  • 黒は完璧にプレーすれば常に勝つことができます
  • 1人のプレーヤーが完全にプレーした場合、勝つか引き分けます(両方のプレーヤーが完全にプレーした場合は、常に行き詰まります)

しかし、これらのうちどれが実際に正しいのか、私たちは決して知ることはできません。

質問への答えはイエスです。少なくとも2人のプレイヤーのうちの1人にとって、チェスには完璧なアルゴリズムがなければなりません。


2
+1、それはそれを説明する本当に素晴らしい方法です。私はそれを考えたことがないなんて信じられない!
Zifre 2009

2
黒に完璧な戦略がないのはなぜ白に完璧な戦略があるのか​​?両方のプレイヤーが完璧な戦略を持っていないのはどうですか?もしあなたの含意が真実なら、それはすべての2人のプレーヤーのゲームに真実ではないでしょうか?
John M Naglick、2010年

8
@john:チェスには完全な情報があり、ランダムな要素がないため(他の多くの2プレイヤーゲームとは異なり)、黒が完璧な戦略を立てられない唯一の方法は、黒-言い換えれば、白のための完璧な戦略がある場合。
Dave Sherohman、2010年

2
実際、このロジックは常に成立するは限りませんが、この場合はそうです。
BlueRaja-Danny Pflughoeft 2010

4
@john「なぜここで多くの議論をするのか」-一部の人々は答えを知らないので、とにかくここに投稿します。
DJClayworth、2010年

30

チェッカーゲームでは、プログラムが常にゲームに勝つか、引き分けられることが証明されています。つまり、1人のプレーヤーが他のプレーヤーに敗北を強いるような選択肢はありません。

ちなみに、研究者たちは約20年間費やして、5千億の可能なチェッカーポジションを通過しました。チェッカーズの取り組みには、調査チームがチェッカーの経験則をソフトウェアの移動に成功または失敗に分類するソフトウェアにプログラムするのを支援したトッププレーヤーが含まれていました。その後、研究者たちはプログラムを1日平均50台のコンピューターで実行させました。ある日、プログラムは200台のマシンで実行されました。研究者たちは進捗状況を監視し、それに応じてプログラムを微調整しました。実際、チヌークは1994年にチェッカー世界選手権で勝利した。

はい、あなたはチェスを解くことができます、いいえ、あなたはすぐにはいつでもないでしょう。


6
「[Y] ouはすぐにyタイムになりません」は少し控えめな表現です。予想される宇宙の持続時間の制限に加えて、ストレージの問題があります。チェスの州の数は5000億のチェッカーをはるかに超えています。実際、それは宇宙の粒子の数を超えています。
マイケル・ドーフマン

30
「[...]実際、それは宇宙の粒子の数を超えています。」宇宙の粒子の状態数を超えない限り、希望はまだあります;-)
Carsten

1
常に対戦相手に負けるように強制するプログラムが自分と対戦しているときはどうなりますか????
John Demetriou

1
@BCSうーん、2番目のプレーヤーとしてプレイしていて、もう1人が同じヒューリスティックを使用している場合、このヒューリスティックに従って勝ち、最初のプレーヤーが同様のヒューリスティックを持っているという予測がある場合はどうなりますか? ?
John Demetriou

1
私が言っているのは、完璧なアルゴリズムがあり、両方のプレイヤーがそれを持っている場合、アルゴリズムが完璧になるためにアルゴリズムが変更できる確率が無限にあるということです
John Demetriou

15

これはコンピュータに関する問題ではなく、チェスのゲームに関する問題だけです。

問題は、ゲームに負けないためのフェイルセーフ戦略があるかどうかです。そのような戦略が存在する場合、すべてを知っているコンピューターは常にそれを使用でき、もはやヒューリスティックではありません。

たとえば、ゲームの三目並べは通常、ヒューリスティックに基づいて再生されます。しかし、フェイルセーフ戦略があります。対戦相手が何を動かしても、最初からすぐにやれば、ゲームに負けないようにする方法を常に見つけることができます。

したがって、チェスについてもそのような戦略が存在するかどうかを証明する必要があります。それは基本的に同じですが、可能な動きのスペースが非常に大きいだけです。


では、誰が私の回答に反対票を投じようとしたのでしょうか?何か問題はありますか?自分を前にしたいですか?
ypnos 2008年

@ypnos、私はあなたの答えに反対票を投じなかった。ランダムな投票者があなたを失望させないように言っただけです。担当者が30獲得し、1を失っただけです。また、+ 1;)
mmcdole 2009年

1
反対票を投じるいくつかの理由。1)ゲームを解くためのアルゴリズムが存在することが知られていますが、アルゴリズムが考えられる任意の技術を使用して計算するのは実際的ではありません。2)ゲームを解決しても、彼らがフェイルセーフ戦略をとっているという意味ではありません。三目並べは解決されますが、損失を回避する2番目のプレーヤーの戦略はありません。
DJClayworth、2010年

2
「これはコンピューターに関する問題ではなく、チェスのゲームに関する問題だけです。」ええと、コンピュータサイエンスは実際にはコンピュータに関するものではありません。それらは単なるツールです。コンピュータサイエンスはコンピュータなしで機能します。
Janus Troelsen、2012

1
問題は、チェスを解決するチューリングマシン(=コンピューター)が存在するかどうかという問題なので、実際はコンピューターに関する問題です。
SDwarfs 2013

14

私は非常に遅くこのスレッドに来ています、そしてあなたはすでにいくつかの問題に気づいています。しかし、元マスターおよび元プロのチェスプログラマーとして、いくつかの役立つ事実や図を追加できると思いました。チェス複雑さを測定する方法はいくつかあります:

  • チェスのゲームの総数は約10 ^(10 ^ 50)です。その数は想像を絶するほど大きい。
  • 40手以下のチェスゲーム数は10 ^ 40程度です。それはまだ信じられないほど大きな数です。
  • 可能なチェスの位置の数は約10 ^ 46です。
  • 完全なチェス検索ツリー(シャノン数)は、平均分岐係数35と平均ゲーム長80に基づいて、約10 ^ 123です。
  • 比較のために、観測可能な宇宙の原子数は一般的におよそ10 ^ 80と推定されています。
  • 6個以下のすべてのエンドゲームが照合され、解決されました

私の結論:チェスは理論的には解決可能ですが、それを実行するためのお金、動機、計算能力、またはストレージはありません。


3
おいおい。あなたは問題を別の方法で考える必要があります。ゲームの数を考えないでください。転置やアルファベータアルゴリズムなどにより、大幅に削減されます。ボードの位置(10 ^ 60)またはチェスの駒の組み合わせ(1億)を考えてください。Quantum Computingを使用すると、それは簡単です。
lkessler、2009年

2
この状況(チェスの解決)でのアルファ版には、完全な評価関数が必要です。ボードのポジションとピースの組み合わせも同様です。私たちは完全な評価関数を持っていないので、量子計算は私たちを助けません。
HTTP 410、

1
何かが「些細なこと」だと思うときはいつでも、誰もそれをすでに行ったことがないと確信しているときは、少なくとも一度は間違ったこともあると確信しています。
Dean J

2
@lkessler:理事会のポジションはすべての話を語るわけではありません。キャスティングまたはポーンのキャプチャまたはドローには、キャプチャまたはポーンの動きがないため、少なくともゲームのいくつかの履歴が必要であり、繰り返しによるドローの全履歴が必要です。さらに、最近量子コンピューターが15倍になったことは注目すべき研究結果だったので、今のところ量子コンピューティングでは簡単なことはないと思います。
David Thornley、2010

2
ここでの比較のために、可能なすべてのチェスの位置を生成できる場合、10 ^ 46は約2 ^ 152または2 ^ 153であるため、128ビットキーで任意の暗号を簡単にブルートフォースできます。これが宇宙の熱死の前に不可能であると考える優れた理由があります。
David Thornley、2010

9

実際、一部のゲームは解決されています。Tic-Tac-Toeは、常に勝ったり、引き分けたりするAIを構築するための非常に簡単なものです。最近、コネクト4も解決されました(完全なプレーは彼を失う原因となるため、2番目のプレーヤーに不公平であることが示されています)。

しかし、チェスは解決されておらず、それが公平なゲームであるという証明はありません(つまり、完璧なプレーが引き分けになるかどうか)。理論的には厳密に言えば、チェスには有限の数の可能なピース構成があります。したがって、検索スペースは有限です(ただし、信じられないほど大きい)。したがって、完全に再生できる確定的チューリングマシンが存在します。ただし、構築できるかどうかは別問題です。


8

平均$ 1000のデスクトップでは、2040年までにチェッカーをわずか5秒で解決できます(5x10 ^ 20の計算)。

この速度でさえ、チェスを解くのにこれらのコンピューターの100がまだおよそ6.34 x 10 ^ 19 かかるでしょう。まだ実現可能ではありません。程遠い。

2080年頃、平均的なデスクトップでは1秒あたり約10 ^ 45の計算が行われます。1台のコンピューターに約27.7時間でチェスを解く計算能力があります。過去30年間のようにコンピューティングパワーが成長し続ける限り、2080年までに間違いなく完成します。

2090年までに、チェスを約1秒で解決するのに十分な計算能力が1000ドルのデスクトップに存在するようになるでしょう...その日付までに、それは完全に取るに足らないものになるでしょう。

チェッカーが2007年に解決され、1秒でそれを解決する計算能力が約33〜35年遅れる場合、チェスは2055〜2057のどこかで解決されるとおおよそ見積もることができます。より多くの計算能力が利用可能になったとき(45年でそうなる)から、おそらくもっと早く、このようなプロジェクトにより多くを充てることができます。ただし、早くても2050年、遅くとも2060年と言っていいでしょう。

2060年には、チェスを解くのに平均100台のデスクトップが3.17 x 10 ^ 10年必要でした。1000ドルのコンピューターをベンチマークとして使用していることを認識してください。一方、より大きなシステムやスーパーコンピューターは、価格/パフォーマンス比も向上しているため、おそらく利用可能になるでしょう。また、それらの計算能力の桁数はより速いペースで増加します。スーパーコンピューターが毎秒2.33 x 10 ^ 15の計算を実行でき、$ 1000のコンピューターは約2 x 10 ^ 9を実行できると考えてください。比較すると、10年前の違いは10 ^ 6ではなく10 ^ 5でした。2060年までに、差の大きさはおそらく10 ^ 12になり、これも予想よりも速く増加する可能性があります。

これの大部分は、人間としてのチェスを解決する意欲があるかどうかに依存しますが、計算能力はこの頃に実現可能になります(ペースが続く限り)。

別のメモでは、Tic-Tac-Toeのゲームははるかに単純ですが、2,653,002の計算が可能です(オープンボードを使用)。Tic-Tac-Toeを約2.5秒(100万回/秒)で解決する計算能力は、1990年に達成されました。

逆に、1955年には、コンピューターにTic-Tac-Toeを約1か月(1秒あたり1回の計算)で解く力がありました。繰り返しますが、これは、あなたがコンピュータにそれをパッケージ化することができればあなたを得るだろうか$ 1000上基づいています(もちろん$ 1000デスクトップ1955年に存在していなかった)、そしてこのコンピュータは、三目並べを解決することに専念してきただろう....います計算は高価であり、この目的には使用されなかったでしょうが、Tic-Tac-Toeがコンピュータによって「解決された」と見なされた日付があるとは思えませんが、私は実際の計算能力より遅れていることを確認してください。

また、45年間で$ 1000を考慮すると、現在よりも約4分の1の価値があるため、このようなプロジェクトに投入できる資金は増えますが、計算能力はますます安価になります。


9
「1976年までの1年間のディスコレコードの売り上げが400%増加したことをご存知でしたか?これらの傾向が続くのなら... AAY!」
-Disco

2
ムーアの法則-コンピューティング能力は18か月ごとに2倍になる-は2015年頃に失敗する可能性があります。そうでない場合、コンピュータープロセッサの設計は根本的に異なる必要があります。したがって、2080年は現実的な目標ではありません。
フィリップスミス

3
@Philip:2003年以降、デスクトップコンピュータのプロセッサクロック速度はわずかに上昇しましたが、それ以降の機能強化は、主にキャッシュとマルチコアの増加です。3 GHzのプロセッサは、光が4インチ/ 10 cm移動するのにかかる時間に1クロックサイクルを持っているため、クロック速度が無制限に増加することは期待できません。さらに、並列処理は通常困難です。7年前に崩壊し始めた50年間の急激な増加の予測は、安全な賭けのようには思えません。
David Thornley、2010

1
@David-それはすべて本当です。しかし、要点を逃しています。チップ上のコンポーネントのサイズを半分にすると、電子は同じクロック速度で2倍の量になります。これがムーアの法則の原動力です。
フィリップ・スミス

3
@フィリップ:半減はもちろん永遠に続くことはできません。シリコン原子は直径が約4分の1ナノメートルであり、チップ製造はすでに数十ナノメートルにまで達しています。さらに、量子レベルでは、粒子は絶対的な規則ではなく統計的な規則に従うため、多数の法則を呼び出すには、一度に十分な数の電子を移動する必要があります。これまでのところ、ムーアの法則は、法と自己実現預言の中間のどこかにありましたが、それはいつかかなり早く終わります。
David Thornley、2010

7

実際に、両方のプレーヤーが、順不同で無限ゲームで勝利戦略を立てることは可能です。ただし、チェスは整然としています。実際、50移動ルールのため、ゲームが持つことのできる移動回数には上限があり、したがって、チェスの可能なゲームは有限にしかありません(正確に解くために列挙できます。理論的には、少なくとも :)


4
技術的には、3つの移動の繰り返しなどの50の移動のルール(これも制限されます。可能な位置の数は有限であるため、その数に3を掛けると上限が得られます)はドローを引き起こしません。むしろ、どちらかのプレイヤーにドローを主張する機会を与えます。通常、負けたプレーヤーはそうしますが、必須ではありません。したがって、以下は完全に合法なゲームです。1. Nc3 Nc6 2. Nb1 Nb8 3. Nc3 Nc6 4. Nb1 Nb8、永久に繰り返されます。そして、私が間違っていなければ、それが白と黒の2つの完璧なアルゴリズムの結果ではないことは証明されていません。
Lenoxus 14

6

あなたの議論の終わりは、現代のチェスプログラムが現在機能する方法によってサポートされてます。チェスプログラムをコード化して決定論的に動作させるのはリソースが多すぎるため、これらはそのように動作します。彼らは必ずしもありません、常にそのように動作します。チェスはいつか解決される可能性があり、それが起こった場合、コンピューターで解決される可能性があります。


5

記録のために、チェッカーで勝ったり、同点にしたりできるコンピュータがあります。同じことがチェスにもできるかどうかわかりません。移動回数ははるかに多いです。また、ピースは前後だけでなく、どの方向にも移動できるため、状況は変化します。確かではありませんが、チェスは確定的ですが、コンピュータがすべての動きを妥当な時間内に判断するには、動きが多すぎる可能性があると思います。


1
それはできますが、私たちが目にする可能性が高いコンピューターで行うことはできますか?
BCS

1
おそらく私たちの生涯ではありません。この分野で非常に興味深い研究はすべて、ゲームGoで行われています。:)
リザードに請求する

IIRCのほとんどの6歳児は、Goのどのコンピュータでもかまいません。
BCS

2
@BCS:もうありません。最高の囲碁プログラムは現在、ダン(プロ)レベルのプレイヤーを打ち負かしています。
リザードを請求する

1
@BlueRaja:それは2008年のことでした。現在の記録はわかりませんが、MoGoは19x19で6石と7石のプロを倒しました。ireport.cnn.com/docs/DOC-214010
リザードの請求

5

私はあなたが死んでいると思います。Deep BlueやDeep Thoughtのようなマシンは、いくつかの事前定義されたゲームと、それらのゲームの最後までツリーを解析するための巧妙なアルゴリズムでプログラムされています。もちろん、これは劇的な単純化です。ゲームの進行中に、コンピュータを「打ち負かす」機会は常にあります。これは、コンピュータに最適ではない(それが何であれ)移動を強制する移動を行うことを意味します。移動の時間制限の前にコンピューターが最適なパスを見つけられない場合、あまり望ましくないパスの1つを選択することにより、間違いを犯す可能性が非常に高くなります。

実際の機械学習、または遺伝的プログラミング/進化的アルゴリズムを使用する別のクラスのチェスプログラムがあります。一部のプログラムは進化し、ニューラルネットワークなどを使用して決定を下しています。このタイプの場合、コンピュータが「間違い」をするかもしれないが、それでも勝利に終わると想像します。

このタイプのGPについては、Blondie24と呼ばれる魅力的な本があります。チェッカーについてですが、チェスにも当てはまります。


それが今日のコンピュータをチェスで打ち負かす方法です。明日のほうがいいでしょう。ただし、Blondie24が魅力的であることに同意します。
トカゲに請求する

反対票を投じた。この投稿はマイナスのスコアに値しません。
Cybis 2008年

残念ながら、チェスのゲームの問題は機械学習が機能するには大きすぎます。彼らは初心者でさえも、失敗をせずにチェスの学習プログラムをプレイすることはできませんでした。ヒューリスティックが優れています。しかし、ブルートフォースはさらに優れていました。機械学習の分野は、チェスの失敗からのみ学んだ。
lkessler、2009年

チェスのプログラムは短期的なミスを犯さず、最高のプログラムは世界チャンピオンよりも優れています。Rybka 64ビットの最新バージョンは3200 ELOのように評価されていると思います
アレックス

5

この質問についてのゲーム理論から、答えはイエスです。チェスは完璧にプレイできます。ゲーム空間は既知/予測可能であり、孫の量子コンピューターを持っている場合は、おそらくすべてのヒューリスティックを排除できます。

今日では、完璧な三目並べマシンを任意のスクリプト言語で記述でき、リアルタイムで完璧に動作します。

オセロは、現在のコンピューターで簡単に完璧にプレイできるもう1つのゲームですが、マシンのメモリーとCPUには少し手助けが必要です。

チェスは理論的には可能ですが、実際には不可能です(2008年)

i-Goはトリッキーであり、その可能性の空間は宇宙の原子の量を超えているため、完璧なi-Goマシンを作成するには時間がかかる場合があります。



4
技術的には、それは組み合わせゲーム理論です。
照応

5

チェスはマトリックスゲームの例であり、定義により最適な結果をもたらします(ナッシュ均衡を考えてみてください)。プレーヤー1と2がそれぞれ最適な動きをする場合、特定の結果に常に到達します(勝ち負けかどうかはまだ不明です)。


5

1970年代のチェスプログラマーとして、私は間違いなくこれについて意見があります。私が10年ほど前に書いたことは、今日でも基本的には真実です。

「未完成の仕事とチェスプログラマへの挑戦」

当時は、チェスを適切に解決すれば従来の方法で解決できると思いました。

チェッカーは最近解決されましたが(カナダのアルバータ大学のイェイ!!!)、それはブルートフォースによって効果的に行われました。従来のチェスを行うには、もっと賢くする必要があります。

もちろん、量子コンピューティングが現実にならない限り。もしそうなら、チェスは三目並べと同じくらい簡単に解決されます。

1970年代初頭にサイエンティフィックアメリカンで、私の注意を引く短いパロディがありました。それはチェスのゲームがロシアのチェスコンピュータによって解決されたという発表でした。白の完璧な動きが1つあり、両サイドの完璧なプレーで勝利することを保証しました。その動きは次のとおりです。1。a4!


3

ここでたくさんの答えがゲーム理論上の重要なポイントを作ります:

  1. チェスは有限で確定的なゲームであり、ゲームの状態に関する完全な情報を持っています
  2. 有限のゲームを解いて、完璧な戦略を特定できます
  3. チェスは大きすぎますが、ブルートフォースメソッドでは完全に解くことができません

ただし、これらの観察は重要な実用的なポイントを欠いています無敵のマシンを作成するために完全なゲームを完全に解く必要はありません

実際には、可能な状態空間のごく一部を検索することなく、無敵のチェスマシンを作成できる可能性があります(つまり、負けることはなく、常に勝利または引き分けを強制します)。

たとえば、次の手法はすべて、必要な検索スペースを大幅に削減します。

  • Alpha / BetaやMTD-fのようなツリー剪定技術は、すでに検索スペースを大幅に削減しています
  • 立派な勝利ポジション。多くのエンディングはこのカテゴリに分類されます。たとえば、KRとKを検索する必要はありません。これは証明された勝利です。いくつかの作業で、より多くの保証された勝利を証明することが可能です。
  • ほぼ確実な勝利-愚かな間違いなしの「十分な」プレイ(ELO 2200+についてなど)の場合、多くのチェスの位置はほぼ確実な勝利です。プログラムがそのような位置を強制でき、位置の優位性を検出するのに十分なヒューリスティックを備えている場合、それは勝つか、少なくとも100%の確率でドローすることを安全に想定できます。
  • ツリー検索ヒューリスティック-十分に優れたパターン認識により、「興味深い」動きの関連サブセットにすばやく焦点を合わせることができます。これは人間のグランドマスターが演じる方法ですので、それは明らかに悪い戦略ではありません...そして私たちのパターン認識アルゴリズムは常に改善されています
  • リスク評価-ポジションの「リスク」のより良い概念により、結果がより不確実な状況に計算能力を集中させることにより、はるかに効果的な検索が可能になります(これは、静止検索の自然な拡張です)

上記のテクニックを適切に組み合わせることで、「無敵の」チェスプレイングマシンを作成できると断言できます。私たちはおそらく現在の技術にそれほど遠くないでしょう。

このマシンを打ち負かすことができないことを証明することはほぼ確実に難しいことに注意してください。それはおそらくライマン仮説のようなものでしょう-私たちはそれが完全に機能し、それが決して失われないことを示す経験的な結果(それ自体に対する数十億のストレートドローを含む)を持っていることをかなり確信しますが、実際には私たちには能力がありません証明する。

「完璧」に関する追加の注記:

ゲーム理論的な意味でマシンを「完璧」と表現しないように注意します。これは、次のような異常に強い追加条件を意味するためです。

  • 勝利の組み合わせがどんなに複雑であっても、勝利を強制することが可能なあらゆる状況で常に勝利します。これを完全に計算するのが非常に難しい状況で、勝利と引き分けの境界が存在します。
  • 対戦相手のプレーの潜在的な欠陥に関する利用可能なすべての情報を利用する。たとえば、対戦相手が強すぎる可能性があると推測し、対戦相手をミスに誘惑する可能性が高いという理由で、意図的に通常よりもわずかに弱いラインをプレーします。不完全な対戦相手に対しては、実際には対戦相手が強制的な勝利に気づかない可能性が高く、勝つ可能性が高いと推定する場合、負けを作ることが最適である可能性があります。

完璧さ(特に不完全で未知の敵がいる場合)は、無敵であるよりもはるかに難しい問題です。


不完全な対戦相手がいることは、実際の問題ではありません。これにより、少ない手数で完璧なプレーヤーが勝ったり引き分けたり(完璧な結果が出ても)各位置での最適な動きは、他の可能な動き(定義により)と常に同等かそれ以上です。したがって、次善の動きは、対戦相手が最適な最終状態(勝利/引き分け)に早く到達することを可能にするか、より良い結果を強制することさえ可能にします。たとえば、白が完璧にプレーした場合に黒が常にルーズになる場合、白が1つの次善の動きだけをプレーした場合、黒が勝つ可能性があります。しかし、そうです、これにより分析の複雑さが少し増えるはずです。
SDwarfs 2013

@Stefan- 最適なプレーを気にかける場合、不完全な対戦相手は大きな問題です。特に、対戦相手がミスをする確率が十分に高いことがわかっている場合は、負けた手(つまり、完全な対戦相手が間違いなくあなたを倒す手)をプレイすることが実際に望ましい状況を想像できます。
mikera 2013

私の意見に最適なプレーとは、リスクなしで可能な限り最高の結果を達成することを意味します。対戦相手はおそらく「弱い」でしょうが、その負けた手札をプレーすると、不幸にも彼/彼女は良い手札をプレーするかもしれません。準最適な対戦相手を気遣うことは、(準最適なプレー中の)対戦相手が実際に引き分けまたは勝利に導く(次善のプレー)対戦相手のミスの可能性が高い場合に、負けの動きの間でしか選択肢がない場合にのみ関連します。
SDwarfs 2013年

1
これは、ゲーム理論における最適の通常の定義ではありません。通常、最適とは期待される結果を最大化することを意味します。その場合、最適なプレーヤーは、平均してより良い結果が得られれば、ある程度のリスクを受け入れます。
mikera 2013年

その場合、あなたは完全に正しいです!
SDwarfs 2013年

2

player1 / 2の動きのすべての組み合わせのスペース全体を検索する場合、コンピューターが各ステップで決定する単一の動きは、ヒューリスティックに基づいています。

そこには2つの競合するアイデアがあります。1つは可能なすべての動きを検索することであり、もう1つはヒューリスティックに基づいて決定することです。ヒューリスティックは、適切な推測を行うためのシステムです。可能なすべての動きを探しているなら、あなたはもう推測していません。


実際には、引用は正しいです。プログラムは、現在の位置で両側の可能なすべての動きを調べ、発見的手法を使用して、コンピュータにとって好ましい位置の方向にゲームを動かすための適切な動きを見つけます。
トカゲに請求する

1
いいえ、彼らはすべての可能な動きを見ていません。ヌルムーブヒューリスティックを使用して、ツリーをプルーニングします。
アレックス

2

「チェスに最適なアルゴリズムはありますか?」

はいあります。多分それは白が常に勝つためです。多分それは黒が常に勝つためです。たぶん、少なくとも両方を常に結ぶことは両方のためです。どちらかはわかりませんし、決してわかりませんが、確かに存在します。

こちらもご覧ください


1
かなりまともなチェスプレーヤーであり、何年にもわたって問題を広範囲に調査してきたので、両方のプレーヤーのチェスでの完璧な戦略が引き分けになることを99.9%確信しています(チェッカーで証明されたのと同じです)。プレーヤーの強さが増すにつれて、ドローのパーセンテージも増加するという証拠もあります。
mikera


2

それは完全に解決可能です。

10 ^ 50の奇数の位置があります。私の計算では、各位置には、格納するために最低64ラウンドバイトが必要です(各正方形には2つのアフィリエーションビット、3つのピースビットがあります)。それらが照合されると、チェックメイトである位置を特定し、位置を比較して関係を形成し、どの位置が大規模な結果ツリーの他の位置につながるかを示すことができます。

次に、そのようなものが存在する場合、プログラムは最低の片側チェックメイトルートのみを見つける必要があります。いずれにせよ、チェスは最初の段落の終わりにかなり簡単に解決されました。


1

状態空間の大きさのために解決策を期待できないという主張に私は99.9%確信している。

確かに、10 ^ 50はあり得ないほど大きな数です。状態空間のサイズをnとしましょう。

最長のゲームでの移動数の制限は何ですか?すべてのゲームは有限の動きで終了するため、そのような境界が存在するため、mと呼びます。

初期状態から始めて、O(m)空間のすべてのn動作を列挙できませんか?確かに、それはO(n)時間かかりますが、宇宙のサイズからの引数はそれを直接扱いません。O(m)スペースはそれほどでもないかもしれません。O(m)空間の場合、このトラバーサル中に、トラバースしているパスに沿った状態の継続がEitherMayWin、EitherMayForceDraw、WhiteMayWin、WhiteMayWinOrForceDraw、BlackMayWin、またはBlackMayWinOrForceDrawにつながるかどうかも追跡できませんでしたか?(その順番に応じてラティスがあります。トラバースの履歴の各状態にラティスミートで注釈を付けます。)

私が何かを見落としているのでなければ、それはチェスが当てはまる可能性のあるカテゴリーを決定するためのO(n)時間/ O(m)空間アルゴリズムです。ウィキペディアは、およそ10 ^ 60番目のプランク時の宇宙の年齢の推定を引用しています。宇宙論の議論に入ることなく、宇宙の熱/冷/死の前に、それだけの時間が残っているとしましょう。そのため、プランクの10 ^ 10回ごと、または10 ^ -34秒ごとに1つの動きを評価する必要があります。それは信じられないほど短い時間です(これまでに観察された最短時間よりも約16桁短い)。楽観的に言って、現在の、または予測された非量子Pが適切なサブセットのNPテクノロジーのライン上で実行されているスーパーデューパーグッドの実装により、評価したいと考えている(一歩前進、結果の状態を中間状態または3つの終了状態のいずれかとして分類します(100 MHzのレートで(10 ^ -8秒に1回))。このアルゴリズムは非常に並列化可能であるため、結果を収集する機能とともに、このようなコンピューターの10 ^ 26分の1、つまり体の原子ごとに約1つが必要になります。

力ずくの解決策には、常に希望の断片があると思います。私たちは幸運になるかもしれませんが、白の可能な最初の動きの1つだけを探索する場合、どちらも平均よりはるかに低いファンアウトの1つと、常に白が勝つまたは勝つまたは引き分けの1つを選択します。

また、チェスの定義をいくらか縮小して、それが道徳的に同じゲームであることを皆に納得させることもできます。ドローの前にポジションを3回繰り返す必要がありますか?私たちは、暴走党に50移動で脱出する能力を実演させる必要がありますか?誰もがエンパッサンのルールで一体何が起こっているのか理解していますか?;)さらに真剣に、チェックをエスケープするために彼または彼女の唯一の動きが移動したとき、または行き詰まりがエンパッサンの捕獲であるとき、私たちは本当にプレイヤーを強制的に移動する必要がありますか?希望のクイーン以外のプロモーションがすぐにチェックまたはチェックメイトにならない場合、ポーンがプロモーションされるピースの選択を制限できますか?

また、後半のゲームステートの大規模なデータベースへの各コンピューターのハッシュベースのアクセスと、その結果(既存のハードウェアや既存のエンドゲームデータベースで比較的実現可能かもしれない)をどの程度許可すれば、検索を早期に整理できるかについても不確かです。明らかに、O(n)ストレージなしで関数全体をメモすることはできませんが、大きな整数を選択して、可能な各(または、簡単には証明できないかもしれませんが)終了状態から逆方向に列挙する多くのエンドゲームをメモできます。


1
あなたのm =5898。FIDEチェスルールは、ポーンを移動するか、駒を少なくとも50移動ごとに(不可逆的にゲームを変更するもの)取る必要がある(50移動ルールと呼ばれる)か、プレーヤーの1人がドローを要求できることを定義します。両方のプレイヤーが協力し、できるだけ早くドローを主張した場合、可能な限り最長のゲームは5898移動であると計算されています。両方のプレイヤーが引き分けを主張できる場合、プレーを続けることは意味がありません。プレーヤーが自分が負けたことに気付いた場合、引き分けを主張して同じ結果を出すことができます。参照:chess.com/blog/kurtgodden/the-longest-possible-chess-game
SDwarfs

1
注:m = 5898は「移動」の数です。半分の移動の最大数は(118-3)* 100 + 3 * 99 = 11797です。ここで証明を見つけることができます(ドイツ語!):de.wikipedia.org/wiki/50-Z%C3%BCge-Regel# Schachmathematik
SDwarfs

1

私はこれが少しバンプであることを知っていますが、私はここに5セントの価値を置かなければなりません。コンピュータ、またはそのことについての人は、彼または彼女/それが参加するすべての単一のチェスゲームを、勝利または行き詰まりのいずれかで終了することが可能です。

ただし、これを実現するには、考えられるすべての動きや反応などを正確に把握し、ゲームの結果を1つ1つすべて把握し、これを視覚化するか、この情報を簡単に分析する方法を考える必要があります。常に分岐するマインドマップとして。

センターノードがゲームの開始点になります。各ノードからの各分岐は移動を象徴し、それぞれがそのbretherenの移動とは異なります。この邸宅でそれを提示することは、特にこれを紙で行う場合、多くのリソースを必要とします。コンピューターでは、ブランチを戻さない限り、非常に多くの反復的な動きがあるため、これには数百テラバイトのデータが必要になる可能性があります。

しかし、そのようなデータを記憶することは、不可能ではないにしても、信じがたいことです。コンピュータに(最大で)8つの瞬時に可能な動きから取り出すための最適な動きを認識させることは可能ですが、もっともらしくはありません...そのコンピュータは、その動きを過ぎたすべてのブランチを処理できる必要があるため、結論までのすべての方法、勝利または行き詰まりにつながるすべての結論を数え、その数の勝利の結論に基づいて行動し、結論を失うのではなく、テラバイト以上のデータを処理できるRAMが必要になります。そして今日のテクノロジーでは、そのようなコンピューターは、世界で最も裕福な5人の男性および/または女性の銀行残高以上のものを必要とするでしょう!

したがって、そのすべての検討の結果、それを行うことができましたが、誰もそれを行うことはできませんでした。そのような仕事には、チェスだけでなく科学やコンピューターテクノロジーにおいても、今日生きている最も明るい30人の心が必要です。そして、そのような仕事は、(完全に基本的な見方をすれば)でのみ完了することができます...スーパーデューパーコンピューター...少なくとも1世紀は存在しなかった可能性があります。やります!この生涯ではありません。


1

思考実験には2つの誤りがあります。

  1. チューリングマシンが(メモリ、速度などで) "制限"されていない場合は、ヒューリスティックを使用する必要はありませんが、最終的な状態(勝ち、負け、引き分け)を計算できます。完璧なゲームを見つけるには、Minimaxアルゴリズム(http://en.wikipedia.org/wiki/Minimaxを参照)を使用して各プレーヤーの最適な動きを計算するだけでよく、これにより1つ以上の最適なゲームが得られます。

  2. 使用されるヒューリスティックの複雑さにも制限はありません。完璧なゲームを計算できる場合は、それから完璧なヒューリスティックを計算する方法もあります。必要に応じて、チェスの位置を「この状況の場合、Sの場合、私の最善の動きはM」のようにマッピングする関数だけです。

他の人がすでに指摘したように、これは3つの可能な結果で終わります:白は勝利を強制でき、黒は勝利を強制でき、そのうちの1つは引き分けを強制できます。

完璧なチェッカーゲームの結果は、すでに「計算済み」です。人類が以前に自分自身を破壊しないのであれば、いつの日かコンピュータが十分なメモリと速度を持つように進化したときのチェスの計算もあります。または、量子コンピュータをいくつか持っています...または、誰か(研究者、チェスの専門家、天才)がゲームの複雑さを大幅に軽減するいくつかのアルゴリズムを見つけるまで。例を挙げましょう:1から1000までのすべての数値の合計は何ですか?1 + 2 + 3 + 4 + 5 ... + 999 + 1000を計算することも、単純に次のように計算することもできます。N*(N + 1)/ 2、N = 1000、結果=500500。その数式について知らない、数学の帰納について知らない、数を乗算または加算する方法すら知らないなどを想像してみてください。このゲームの複雑さを最終的に軽減する現在未知のアルゴリズムがあり、現在のコンピューターで最良の動きを計算するのに5分しかかからない可能性があります。おそらく、もっと時間があれば、ペンと紙を使って、あるいはあなたの心の中でそれを人間と推定することさえ可能かもしれません。

したがって、簡単な答えは次のとおりです。人類が十分長く存続する場合、それは時間の問題です!


0

それは解決できるかもしれませんが、何かが私を困らせます:ツリー全体をトラバースできたとしても、対戦相手の次の動きを予測する方法はまだありません。私たちは常に次の動きを敵の状態に基づいて行い、「最良の」動きを利用可能にする必要があります。次に、次の状態に基づいて、もう一度行います。したがって、私たちの最適な動きは、対戦相手が特定の方法で動く場合に最適になる可能性があります。対戦相手の動きによっては、最後の動きが最適ではなかったかもしれません。

私はすべてのステップで「完璧な」動きがどのようにあり得るかを見落としているだけです。

そのためには、(現在のゲームの)すべての状態について、(tic-tac-toeのように)対戦相手の次の動きに関係なく、勝利につながるパスがツリー内になければなりません。それを考え出す時間。


5
完璧な動きは、「minmax」戦略によって決定されます。それは、可能な最小スコアを最大化する動きです(対戦相手が行う可能性のあるすべての動きが与えられた場合)。または別の言い方をすれば、相手も完璧にプレーすることを前提としています。
Nick Johnson、

これは興味深い点です。対戦相手が最高の動きをしないと、最高の動きに反応して不利になる状況が発生する可能性はありますか?これにはどのような影響がありますか?
Nona Urbiz 2009年

私は数学者ではありませんし、チェスをするのも上手ではありません。また、理論的には(ゲームツリー全体を知っている必要があります)、これに対する答えは「はい」であると想定しました。しかし、あなたがこの問題[他のプレイヤーの選択]について言及したところで、これはシステムが潜在的に予測不能であることを意味しますか?他のプレイヤーが不利になる可能性のあるゲームの中間点はありますか?これは、パーセプトロン(ニューラルネット)が「OR」と「AND」を学習できるが、「XOR」を把握できないという事実に少し似ていますか?チェスは「カオス」システムの例ですか?FWIW、私見私は答えはこの時点で 'dunno'であると思います。
モノジョニー2010年

@Nona当然のことながら、その動きは最善の動きです。仮定はありません。
piccolbo

@piccolbo:より良い-最高の動きの1つ。複数の動きが同じ結果をもたらすチェスの位置があります(同じ数の動きで勝利、引き分け、または損失)。
SDwarfs 2013

0

数学的には、チェスは1920年代にさかのぼるミニマックスアルゴリズムによって解決されました(ボレルまたはフォンノイマンによって発見されました)。したがって、チューリングマシンは確かに完璧なチェスをプレイできます。

しかし、チェスの計算の複雑さは、それを実際的に実行不可能にします。現在のエンジンは、いくつかの改善とヒューリスティックを使用しています。今日のトップエンジンは、プレーの強さの点で最高の人間を上回っていますが、使用しているヒューリスティックスのため、無限の時間を与えられた場合、完全に再生されない可能性があります(たとえば、ハッシュの衝突が誤った結果につながる可能性があります)。

完璧なプレーという点で現在最も近いのは、エンドゲームテーブルベースです。それらを生成する一般的な手法は、逆行性分析と呼ばれます。現在、6個までのすべてのポジションが解決されています。


-1

はい、数学では、チェスは決定されたゲームとして分類されます。つまり、最初のプレーヤーごとに完全なアルゴリズムがあることを意味します。これは、無限のチェス盤でも当てはまることが証明されています。そしてゲームはなくなった

このビデオの詳細:https : //www.youtube.com/watch?v=PN-I6u-AxMg

量子チェスもあります。ここでは、ゲームが決定されていることを数学的に証明するものはありませんhttp://store.steampowered.com/app/453870/Quantum_Chess/

そしてそこにあなたは量子チェスについての詳細なビデオですhttps://chess24.com/en/read/news/quantum-chess


-2

もちろん、ボード上のピースの可能な組み合わせの10の10乗しかありません。それを念頭に置いて、すべてのコンビネーションでプレーするには、50のパワーの10の累乗を作成する必要があります(反復にその数を3倍することを含む)。ですから、チェスでは100のパワーの10の力しかありません。チェックメイトにつながるものを選ぶだけでいい


-3

64ビットの数学(=チェス盤)とビット単位の演算子(=次の可能な動き)がすべて必要です。だから単純に。ブルートフォースは通常、最も良い方法を見つけます。もちろん、すべてのポジションに共通のアルゴリズムはありません。実生活では、計算も時間に制限があり、タイムアウトはそれを止めます。優れたチェスプログラムとは、重いコード(パス、ダブルポーンなど)を意味します。小さなコードはそれほど強力ではありません。オープンデータベースとエンドゲームデータベースは、処理時間、ある種の前処理済みデータを節約するだけです。デバイス、つまり、OS、スレッディングの位置、環境、ハードウェアによって要件が定義されます。プログラミング言語は重要です。とにかく、開発プロセスは興味深いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.