「チェスを解く」ことの計算の複雑さは何ですか?


8

後方誘導の基本的な考え方は、プレーヤーXが勝利するゲームのすべての可能な最終位置から始めることです。チェスについては、ホワイトがブラックをチェックメイトできるすべての方法を見てください。今度は、ホワイトがそれらの位置の1つに移動することを可能にするすべての可能な移動/位置に逆戻りします。ホワイトがそのような立場に自分自身を見つけた場合、彼女は関連するチェックメイトの動きに移動することで勝つことができます。次に、別のステップを逆方向に進めます。最終的に、私たちはホワイトが行うことができるすべての可能な最初の動きに戻ります。重要なのは、これを実行したら、ブラックが行うすべての動きに対してホワイトが最高の反応を示すことがわかったということです。

最近(過去5年ほど)、チェッカーはこのようにして「解決」されました。明らかに、Noughts and Crosses(植民地が「三目並べ」と呼ぶかもしれないもの)は古くから解決されています。少なくともこのxkcdからですが、おそらくずっと前に。

だから問題は:この種の手順はどの要素に依存するのですか?おそらく法的地位の数。しかし、おそらく、特定のノードでの合法的な移動の数...そして、これを考えると、この種の問題はどのくらい複雑ですか?

おまけの質問:2000ドルのPCが1日でチェッカーを解決できるようになるまでどれくらいかかりますか?チェス?行く?(もちろん、このためには、家庭用コンピューターの増加する速度も考慮する必要があります...)

これらのゲームをツリーとして表すことができるため、タグを追加しましたが、タグを悪用している場合は、より適切なものを追加してください


4
チェスの複雑さに関する質問は、多くの場所で書き直されています。ゲームツリーの長さは有限であり、ドローを制御する正確なルールを法としますが、ゲームツリーの分岐係数は非常に高いため、ブルートフォースソリューションは手の届かないように見えます。端的に言えば、ゲームツリーのサイズはようなもので、半移動の場合です。ここにTCSの質問がありませんか? k10kk
アンドラス・サラモン

6
複雑さが50移動ルールでことを指摘するのは生意気ですか?O(1)
ジョーフィッツシモンズ

Seamus、cstheoryのスコープはtcsでの研究レベルの質問です。FAQをお読みください。math.SEは、研究レベル以外の質問に使用できます。
カヴェ

チェスには複雑性に関連するいくつかの質問がありますが、言い表されているように、これは有限のゲームツリーのためにありません。この質問はやや似ていますが、完璧なチェスアルゴリズムはありますか
vzn

回答:


26

@Joeが指摘するように、チェスはルックアップテーブルを使用して時間で解決するのは簡単です。(このアルゴリズムの実際の実装には、私たちが住んでいるものよりもかなり大きな宇宙が必要ですが、これは理論的なコンピューターサイエンスのサイトです。定数のサイズは関係ありません。)O(1)

チェスの正規化された一般化は明らかにありませんが、いくつかの変形が検討されています。それらの複雑さは、キャプチャ繰り返し位置なしの移動に関するルールがどのように一般化されるかに依存します。n×n

多項式のキャプチャフリームーブの後にドローが宣言された場合、または任意の位置が多項式の回数を繰り返した後にドローが宣言された場合、チェスゲームは多項式の数のムーブ後に終了するため、問題は明らかにPSPACEにあります。 Storerは、この亜種がPSPACEハードであることを証明しました。n×n

繰り返される位置やキャプチャフリーの動きに制限がないバリアントの場合、チェスの有効な位置の数は指数関数でため、問題は明らかにEXPTIMEにあります。 FraenkelとLichtensteinは、このバリアントがEXPTIMEハードであることを証明しました。nn×nn


3
「または任意の位置が多項式の回数を繰り返した後」。この制限だけでも、超多項式で長いゲームが可能になると思います。たとえば、2 nの騎士(昇格など)と2人の王がいるボードを想像してみてください。以下のために、M = N 2、位置の数は、あろう Ω C M 2 n×n2nm=n2、これは超多項式であり、一部の縮退によって1つのゲームで到達可能な位置の数がpmまで低下することは想像できません。Ω(C(m,2m))p(m)
Yonatan N 2014

AlphaGoは私に考えさせられました。そこ正規のゴーのバージョンは、右?それで、それはより良い質問でしょうか?n×n
Seamus 2016年

これらの問題は本当に嫌いですが、O(1)実際には、妥当な人間の時間でそれらを解決するコンピューターやアルゴリズムはありません。特定の固定リミッターのメモリと時間について、この種の問題の数を知るのは
好奇心が強いでしょう

1
@Seamus非常に遅いですが、Goの標準的なn × nバージョンがあると思いますが、実際には、特定の難解な位置の結果に大きく影響する可能性のあるルールの微妙な違い(および異なる国間のルールの違い!)があります。参照en.wikipedia.org/wiki/Rules_of_Go#Repetitionあなたが興味があれば、いくつかの詳細については。n×n
Steven Stadnicki

11

これは恐ろしく有用な答えではないかもしれませんが、チェスには最大の移動数があるため、可能なゲームの数が有限であることを指摘する価値があると思います。50手ルールは、 50の以上の移動ポーンの動きなしで場所を取る場合はどちらかのプレイヤーが引き分けを請求することができます。これは常に使用されていると合理的に考えることができます。各プレーヤーのポジションの強さの客観的な測定値がある場合、弱いプレーヤーがドローを主張するからです。さらに、チェスのルールでは、ポーンが移動するときは常に、ボードの対戦相手側に1マス進む(直接前方に移動するか、対角線上に移動する)必要があるため、各ポーンは最大6回移動できます。ポーンは合計で16個あるため、最大移動数は。各移動で、プレーヤーは最大16個のいずれかを移動します。ポーンの場合、最大で3つの移動があります。ルークは14、ナイトは8、ビショップは14、クイーンは28、キングは8で、合計132の移動が可能です。これにより、チェスゲームの合計数の上限は 132 4851になります。したがって、これは本当に膨大な数(約 2 34172)ですが、複雑さは自明であることを意味します O 1 50×(16×6+1)+1=48511324851234172O(1)。一方、ムーアの法則が無期限に続くと仮定すると、このような素朴なアプローチでは、問題が扱いやすくなるまでに約5万年かかります。


細かい難しさ:移動の最大数は50 *(16 * 6 + 1)+ 1に近いですが、そのうち16 * 6はポーン移動で、そのうち16つは4つのオプションから引き出される可能性があります。後で動きの数を減らします...(基本的な点、つまり音に同意しないでください。不思議なことに、推定値は10 ^ 10 ^ 5あたりに出ますが、MathworldはHardyが10 ^ 10 ^ 50と推定したと言っています。それが彼のメモの悪い転記であるかどうか)。
Peter Taylor、

@ピーター私の間違い、申し訳ありません。私は今答えを修正しました。これがMathworldでの見積もりに到達した方法だったかどうかはわかりません。取締役会の法的取り決め(50の移動ルールを無視)を単純に数えれば、それははるかに大きかったかもしれません。
Joe Fitzsimons、

別の問題:50個のムーブルールの誤ったバージョンを使用しました。それは「ポーンムーブまたはキャプチャなしの50ムーブ」でなければなりません。もちろん、ボード上の駒の数はゲーム中に単調に減少し、ルールは有限の境界を許可します。ゲームはまだ有限ですが、50の移動ルールによって3倍の繰り返しルールがあり、これによりはるかに大きな境界が得られます。
オラフ2013年

ああ、そうです。これにより、最大移動回数が約3分の1増加します。
ジョーフィッツシモンズ2013年

あなたは50の動きについて何かを見逃しました:ポーンの動きがなく、キルされたアイテムもない50の動きの後、ドローがあります(計算の力は劇的に増大しますが、それでも一定です)。
2013年

8

実際にはここにいくつかの異なる質問があります:(a)ゲームのツリー検索を行うのにどれだけの計算能力が必要か、(b)これらの問題の計算の複雑さは何ですか?この種の目的に最適な多目的リソースは、おそらくGame ComplexityのWikipediaページですが、もう少し詳しく説明します。

dbbd/2bddb

実際には、純粋なツリー検索はボトムアップ辞書で補完されます。たとえば、6ピースのすべてのエンドゲームの結果は既知であり、多くの7ピースのエンドゲームが分析されているため(http://en.wikipedia.org/wiki/Endgame_tablebaseを参照)、ゲームブランチの結果はポジションが十分な数に削減されたら、 'dictionary'(ポジションの巨大なデータベース)で検索し、他の方法では必要となる多くの余分なツリー検索をショートカットします。これはチェッカーで行われたものです。データベースは、十分な数のピースのないすべてのエンドゲームから構築され、すべての10ピースのエンドゲームの結果がわかるまで、さらにピースを追加するように拡張されました。その後、ツリーサーチが最初の位置から使用され、基本的に2つは真ん中で出会いました。

ただし、これらの実用的なアプローチの他に、問題の(b)の側面があります。これらの種類の問題の計算の複雑さは何ですか?抽象的には、この同類のほとんどの問題はいくつかのカテゴリーに分類される傾向があります。それらはPSPACE完全です-これはおおよそ「これを解決できる場合、多項式で多くのスペースを取る問題を解決できます」またはEXPTIME完全です(これは、おおよそ「これを解決できる場合、すべての問題を解決できます」ゲームの継続時間にもよりますが、これには非常に時間がかかります」)。繰り返しになりますが、EXPTIMEの完全性に関するWikipediaのページでは、関係する問題と、この面でさまざまなゲームを差別化するものについてかなり良い議論が行われています。


-2

これらの見積もりは高すぎます。

あなたは合法的な動きに基づく分岐に焦点を当てています。これは、高速なチェスコンピュータを作ろうとしている場合には非常に理にかなっていますが、チェスを「解く」ためのプログラムを作成する方法ではありません。

<<<<< 13 ^ 64のチェスの可能なゲーム状態があります。各正方形には、チェスの駒を1つだけ含めることができます。それらすべてを反復して、2 ^ 256程度の操作で黒の勝利または白の勝利としてマークすることができます。

合理的に達成可能なゲーム状態の数のより現実的な推測は、約2 ^ 100です。


3
ボード構成を3回繰り返すことが引き分けであるという規則のため、ゲームの状態には、ピースの現在の位置だけでなく、過去のすべてのボード構成も含まれます。しかし、何でも。定数は定数です。
Jeffε

1
キャスティング権も必要ですが、必要なのは過去100枚のボード構成だけです。

あなたは複雑さの多くを「そして黒の勝利または白の勝利としてマークする」ように一掃しているようです。
ジョーフィッツシモンズ2013年

1
@Jɛff E 最後のキャプチャまたはポーンムーブの前の位置に再び到達することはできないため、過去のすべてのボード構成ではありません。しかし、それでも、何でも。定数はまだ定数です。
David Richerby 14

過去100のボード構成(たとえば、それぞれ100ビット)は必要ありませんが、過去100の動きだけが必要で、ポーンの動きを考慮する必要はありません。8ビットを超える必要はありません。したがって、合計で900ビット未満になると思います。
gnasher729
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.