Was ist die rechnerische Komplexität beim „Lösen“ von Schach?

8

Die Grundidee der Rückwärtsinduktion besteht darin, mit allen möglichen Endpositionen eines Spiels zu beginnen, in dem Spieler X gewinnt. Schauen Sie sich für Schach alle Möglichkeiten an, wie Weiß Schwarz schachmatt setzen kann. Arbeiten Sie nun rückwärts zu allen möglichen Bewegungen / Positionen, die es Weiß ermöglichen würden, sich in eine dieser Positionen zu bewegen. Sollte sich White jemals in einer solchen Position befinden, könnte sie gewinnen, indem sie zum entsprechenden Schachmatt-Zug übergeht. Jetzt arbeiten wir einen weiteren Schritt zurück und so weiter. Schließlich kehren wir zu allen möglichen ersten Schritten zurück, die Weiß machen könnte. Der Punkt ist, sobald wir dies getan haben, wissen wir, dass wir die beste Antwort von Weiß auf jede Bewegung haben, die Schwarz macht.

Vor kurzem (in den letzten fünf Jahren oder so) wurde Checkers auf diese Weise "gelöst". Offensichtlich sind Nullen und Kreuze (was die Kolonialherren "Tic-Tac-Toe" nennen könnten) seit Ewigkeiten gelöst. Zumindest seit diesem xkcd aber vermutlich lange vorher.

Die Frage ist also: Von welchen Faktoren hängt diese Art von Verfahren ab? Die Anzahl der möglichen Rechtspositionen, vermutlich. Aber vielleicht auch die Anzahl der legalen Schritte an einem bestimmten Knoten ... Und wie komplex ist diese Art von Problem angesichts dessen?

Bonusfrage: Wie lange dauert es, bis ein 2000-Dollar-PC die Kontrolleure an einem Tag lösen kann? Schach? Gehen? (Natürlich müssen Sie dafür auch die zunehmende Geschwindigkeit von Heimcomputern berücksichtigen ...)

Ich habe das Tag hinzugefügt, da Sie diese Spiele als Bäume darstellen können. Wenn ich das Tag jedoch missbrauche, fügen Sie bitte etwas Passenderes hinzu

Seamus
quelle
4
Fragen zur Komplexität des Schachs wurden an vielen Stellen erneut aufgeworfen. Der Spielbaum hat eine endliche Länge, modulo die genauen Regeln für das Ziehen, aber der Spielbaum hat einen sehr hohen Verzweigungsfaktor, so dass Brute-Force-Lösungen unerreichbar erscheinen. Um es ganz klar auszudrücken: Der Spielbaum hat eine Größe von ungefähr für k halbe Züge. Ich sehe hier keine TCS-Frage? 10kk
András Salamon
6
Ist es frech darauf hinzuweisen, dass die Komplexität nach der Fünfzig-Zug-Regel ? Ö(1)
Joe Fitzsimons
Seamus, der Umfang von cstheory umfasst Fragen auf Forschungsebene in tcs. Bitte lesen Sie die FAQ. Sie können math.SE für Fragen außerhalb der Forschungsebene verwenden.
Kaveh
Es gibt einige komplexitätsbezogene Fragen im Schach, aber wie formuliert, liegt diese nicht am endlichen Spielbaum. Diese Frage ist etwas ähnlich, kann es einen perfekten Schachalgorithmus geben
vzn

Antworten:

26

Wie @Joe betont, ist es trivial, Schach in Zeit mithilfe einer Nachschlagetabelle zu lösen . (Eine tatsächliche Implementierung dieses Algorithmus würde ein Universum erfordern, das erheblich größer ist als das, in dem wir leben, aber dies ist ein Ort für theoretische Informatik. Die Größe der Konstante ist irrelevant.)Ö(1)

Es gibt offensichtlich keine kanonische Verallgemeinerung des Schachs, aber es wurden mehrere Varianten in Betracht gezogen; Ihre Komplexität hängt davon ab, wie die Regeln für Bewegungen ohne Erfassungen und sich wiederholende Positionen verallgemeinert werden.n×n

Wenn ein Unentschieden nach einer Polynomzahl von Capture-freien Zügen deklariert wird oder nachdem eine Position ein Polynom mehrmals wiederholt hat, endet jedes Schachspiel nach einer Polynomzahl von Zügen, sodass das Problem eindeutig in PSPACE liegt. Storer hat bewiesen, dass diese Variante PSPACE-hart ist.n×n

Für die Variante ohne Begrenzung für wiederholte Positionen oder fangfreie Bewegungen ist die Anzahl der zulässigen Schachpositionen in n exponentiell , sodass das Problem eindeutig in EXPTIME liegt. Fraenkel und Lichtenstein haben bewiesen, dass diese Variante EXPTIME-hart ist.n×nn

Jeffε
quelle
3
"oder nachdem eine Position ein Polynom mehrmals wiederholt hat". Ich denke, nur diese Einschränkung erlaubt noch superpolynomiell lange Spiele. Stellen Sie sich beispielsweise ein Brett mit 2 n Rittern (z. B. durch Beförderung) und zwei Königen vor. Für m = n 2 beträgt die Anzahl der Positionen Ω ( C ( m , 2 √)n×n2nm=n2, was superpolynomisch ist, und ich kann mir nicht vorstellen, dass eine Entartung die Anzahl der erreichbaren Positionen in einem Spiel aufp(m)senkt. Ω(C.(m,2m))p(m)
Yonatan N
AlphaGo brachte mich zum Nachdenken. Es gibt eine kanonische Version von Go, richtig? Wäre das also eine bessere Frage? n×n
Seamus
Ich hasse diese Probleme wirklich, O(1)aber tatsächlich gibt es keinen Computer oder Algorithmen, um sie in einer angemessenen menschlichen Zeit zu lösen. Ich wäre neugierig, die Anzahl dieser Art von Problemen für einen bestimmten Speicher und eine bestimmte Zeit mit festem Begrenzer zu kennen
Albanx
1
@Seamus Sehr spät, aber: Man könnte meinen, es gibt eine kanonische Version von Go, aber tatsächlich gibt es einige Feinheiten (und Regelunterschiede zwischen verschiedenen Nationen!), Die die Ergebnisse bestimmter esoterischer Positionen stark beeinflussen können. Unter en.wikipedia.org/wiki/Rules_of_Go#Repetition finden Sie einige Details, wenn Sie neugierig sind. n×n
Steven Stadnicki
11

Dies ist wahrscheinlich keine besonders nützliche Antwort, aber ich denke, es ist erwähnenswert, dass Schach eine maximale Anzahl von Zügen hat und daher eine begrenzte Anzahl möglicher Spiele. Die Fünfzig-Züge-Regel erlaubt es jedem Spieler, ein Unentschieden zu beanspruchen, wenn 50 oder mehr Züge ohne Bewegung eines Bauern stattfinden. Wir können davon ausgehen, dass dies immer verwendet wird, denn wenn es ein objektives Maß für die Stärke der Positionen jedes Spielers gibt, wird der Schwächere die Auslosung beanspruchen. Ferner verlangen die Schachregeln, dass ein Bauer, wenn er bewegt wird, um ein Feld in Richtung der gegnerischen Seite des Bretts vorrückt (egal ob er sich direkt vorwärts oder diagonal bewegt), und daher kann sich jeder Bauer höchstens sechs Mal bewegen. Da es insgesamt 16 Bauern gibt, beträgt die maximale Anzahl von Zügen . In jedem Zug bewegt der Spieler eine von höchstens 16 Figuren. Für einen Bauern gibt es höchstens 3 Züge, 14 für einen Turm, 8 für einen Ritter, 14 für einen Bischof, 28 für eine Königin und 8 für einen König, für insgesamt 132 mögliche Züge. Dies ergibt eine Obergrenze von 132 4851 für die Gesamtzahl der Schachpartien. Obwohl dies eine wirklich enorme Zahl ist (ca. 2 34172 ), bedeutet dies, dass die Komplexität trivial O ( 1 ) ist.50×(16×6+1)+1=48511324851234172Ö(1). Andererseits würde ein derart naiver Ansatz ungefähr fünfzigtausend Jahre dauern, bis das Problem behoben werden kann, vorausgesetzt, Moores Gesetz wird auf unbestimmte Zeit fortgesetzt.

Joe Fitzsimons
quelle
Geringfügiger Streit: Die maximale Anzahl von Zügen beträgt eher 50 * (16 * 6 + 1) + 1. Aber dann sind 16 * 6 davon Bauernzüge, von denen 16 möglicherweise aus 4 Optionen gezogen werden, obwohl eine dieser Optionen schneidet Verringern Sie die Anzahl der Züge später ... (Um dem Grundpunkt nicht zu widersprechen, der vernünftig ist. Seltsamerweise liegt Ihre Schätzung bei etwa 10 ^ 10 ^ 5, während Mathworld sagt, dass Hardy sie auf 10 ^ 10 ^ 50 geschätzt hat. Wunder ob das eine schlechte Transkription seiner Notizen ist).
Peter Taylor
@ Peter Mein Fehler, sorry. Ich habe die Antwort jetzt korrigiert. Ich bin mir nicht sicher, ob auf diese Weise die Schätzung in Mathworld erreicht wurde. Wenn es nur die rechtlichen Regelungen des Boards gezählt hätte (ohne Berücksichtigung der Fünfzig-Züge-Regel), wäre es möglicherweise viel größer gewesen.
Joe Fitzsimons
Ein weiteres Problem: Sie haben eine falsche Version der Fünfzig-Zug-Regel verwendet. Es sollte "50 Züge ohne Bauernzug ​​oder Gefangennahme" sein. Die Anzahl der Steine ​​auf dem Brett nimmt natürlich während eines Spiels monoton ab und die Regel erlaubt immer noch eine endliche Grenze. Obwohl das Spiel ohne die Regel der fünfzig Züge durch die dreifache Wiederholungsregel immer noch endlich ist, ergibt sich dann eine viel größere Grenze.
Olaf
Ah ja. Das erhöht die maximale Anzahl von Zügen um etwa ein Drittel.
Joe Fitzsimons
Sie haben ungefähr 50 Züge verpasst: Nach 50 Zügen ohne Bauernzug ​​und ohne getöteten Gegenstand haben wir gezogen (die Kraft Ihrer Berechnung wächst dramatisch, ist aber immer noch konstant).
Saeed
8

Hier gibt es tatsächlich ein paar verschiedene Fragen: (a) Wie viel Rechenleistung wird für die Baumsuche nach Spielen benötigt, und (b) wie hoch ist die rechnerische Komplexität dieser Probleme? Die beste Allzweckressource für diese Art von Dingen ist wahrscheinlich die Wikipedia-Seite über Spielekomplexität , aber um etwas genauer darauf einzugehen:

dbbd/.2bddb

In der Praxis wird die reine Baumsuche durch ein Bottom-up-Wörterbuch ergänzt. Beispielsweise sind die Ergebnisse aller 6-teiligen Schachendspiele bekannt, und viele 7-teilige Endspiele wurden analysiert (siehe http://en.wikipedia.org/wiki/Endgame_tablebase ), sodass das Ergebnis eines Spielzweigs sein kann hat im 'Wörterbuch' (einer riesigen Datenbank mit Positionen) nachgeschlagen, sobald die Position auf wenige Teile reduziert wurde, wodurch eine Menge zusätzlicher Baumsuchen verknüpft wurden, die sonst erforderlich wären. Dies wurde mit Checkern gemacht - Datenbanken wurden aus allen Endspielen mit ausreichend wenigen Teilen aufgebaut und dann erweitert, um weitere Teile und mehr hinzuzufügen, bis die Ergebnisse aller 10-teiligen Endspiele bekannt waren; dann wurde die Baumsuche von der Anfangsposition aus verwendet, und im Wesentlichen trafen sich die beiden in der Mitte.

Über diese praktischen Ansätze hinaus gibt es jedoch die (b) Seite der Frage: Wie hoch ist die rechnerische Komplexität dieser Art von Problemen? Abstrakt fallen die meisten Probleme dieser Art in einige Kategorien; Sie sind entweder PSPACE-vollständig - was ungefähr bedeutet: "Wenn Sie dies lösen können, können Sie jedes Problem lösen, das polynomiell viel Platz beansprucht" - oder EXPTIME-vollständig (was ungefähr bedeutet: "Wenn Sie dies lösen können, können Sie jedes Problem lösen." das dauert exponentiell viel '), abhängig davon, wie lange das Spiel dauern kann; Auch hier bietet die Wikipedia-Seite zur EXPTIME-Vollständigkeit eine ziemlich gute Diskussion über die damit verbundenen Probleme und die Unterschiede zwischen verschiedenen Spielen in dieser Hinsicht.

Steven Stadnicki
quelle
-2

Diese Schätzungen sind viel zu hoch.

Sie konzentrieren sich auf die Verzweigung basierend auf rechtlichen Schritten. Dies ist sehr sinnvoll, wenn Sie versuchen, einen schnellen Schachcomputer zu erstellen, aber es ist nicht so, wie Sie ein Programm schreiben würden, um Schach zu "lösen".

Es gibt <<<<< 13 ^ 64 mögliche Spielzustände im Schach. Jedes Feld kann nur eine der Schachfiguren oder nichts enthalten. Sie können sie alle durchlaufen und sie in nicht mehr als 2 ^ 256 Operationen als Schwarzgewinn oder Weißgewinn markieren.

Eine realistischere Schätzung der Anzahl der vernünftigerweise erreichbaren Spielzustände liegt bei 2 ^ 100

user15969
quelle
3
Aufgrund der Regel, dass das dreimalige Wiederholen einer Brettkonfiguration ein Unentschieden ist, enthält der Status des Spiels nicht nur die aktuellen Positionen der Spielsteine, sondern auch alle früheren Brettkonfigurationen. Aber was auch immer; Eine Konstante ist eine Konstante.
Jeffs
1
Es benötigt auch Castling-Rechte, aber nur die letzten 100 Board-Konfigurationen.
Sie scheinen einen Großteil der Komplexität in "und markieren Sie sie als schwarzen Gewinn oder weißen Gewinn".
Joe Fitzsimons
1
@ Jɛ ff E Nicht alle früheren Board-Konfigurationen, da jede Position vor dem letzten Eroberungs- oder Bauernzug ​​nie wieder erreicht werden kann. Aber was auch immer; Eine Konstante ist immer noch eine Konstante.
David Richerby
Sie würden nicht die letzten 100 Brettkonfigurationen benötigen (sagen wir jeweils 100 Bit), sondern nur die letzten 100 Züge, und Sie müssen keine Bauernzüge berücksichtigen. Sollte niemals mehr als 8 Bit erfordern. Also insgesamt weniger als 900 Bit würde ich sagen.
Gnasher729