it-swarm.com.de

Gibt es einen perfekten Algorithmus für Schach?

Ich war vor kurzem in einer Diskussion mit einem Nicht-Programmierer über die Möglichkeiten von Schachcomputern. Theoretisch bin ich nicht so gut informiert, aber ich denke, ich weiß genug.

Ich argumentierte, dass es keine deterministische Turing-Maschine geben könne, die beim Schach immer gewinnt oder pausiert. Ich denke, auch wenn Sie den gesamten Bereich aller Kombinationen von Spielzügen von Spieler 1/2 durchsuchen, basiert der einzelne Zug, über den der Computer bei jedem Schritt entscheidet, auf einer Heuristik. Da es auf einer Heuristik basiert, schlägt es nicht unbedingt ALLE Züge, die der Gegner machen könnte.

Mein Freund dachte im Gegenteil, ein Computer würde immer gewinnen oder unentschieden bleiben, wenn er niemals einen "Fehler" machen würde (aber definieren Sie das?). Als Programmierer, der CS genommen hat, weiß ich jedoch, dass auch Ihre guten Entscheidungen - vorausgesetzt, Sie haben einen weisen Gegner - Sie zwingen können, am Ende "Fehler" zu machen. Selbst wenn Sie alles wissen, ist Ihr nächster Schritt gierig danach, eine Heuristik zu finden.

Die meisten Schachcomputer versuchen, ein mögliches Endspiel an das laufende Spiel anzupassen, was im Wesentlichen ein dynamischer Programmier-Traceback ist. Auch hier ist das fragliche Endspiel jedoch vermeidbar.

Edit: Hmm ... sieht so aus, als hätte ich hier ein paar Federn gekräuselt. Das ist gut.

Wenn man noch einmal darüber nachdenkt, scheint es kein theoretisches Problem zu geben, ein endliches Spiel wie Schach zu lösen. Ich würde behaupten, dass Schach etwas komplizierter ist als Schachfiguren, da ein Sieg nicht unbedingt durch eine numerische Erschöpfung der Figuren, sondern durch einen Partner erzielt werden muss. Meine ursprüngliche Behauptung ist wahrscheinlich falsch, aber andererseits denke ich, ich habe auf etwas hingewiesen, das (formal) noch nicht zufriedenstellend bewiesen ist.

Ich denke, mein Gedankenexperiment war, dass der Algorithmus (oder gespeicherte Pfade) immer dann, wenn ein Zweig im Baum genommen wird, einen Pfad zu einem Partner finden muss (ohne gepaart zu werden), damit sich ein möglicher Zweig des Gegners bewegt. Nach der Diskussion werde ich kaufen, dass all diese Pfade gefunden werden könnten, wenn mehr Speicher vorhanden ist, als wir möglicherweise träumen können.

107
Overflown

"Ich habe argumentiert, dass es keine deterministische Turing-Maschine geben kann, die beim Schach immer gewinnt oder pausiert."

Du hast nicht ganz recht. Es kann eine solche Maschine geben. Das Problem ist die Größe des Staatsraums, den er durchsuchen müsste. Es ist endlich, es ist nur WIRKLICH groß.

Deshalb greift Schach auf Heuristiken zurück - der Zustandsraum ist zu groß (aber endlich). Noch mehr zu zählen - viel weniger Suche nach jedem perfekten Zug in jedem Spielverlauf - wäre ein sehr, sehr großes Suchproblem.

Eröffnungen sind mit Skripten versehen, um Sie zu einem Spiel in der Mitte zu bringen, das Ihnen eine "starke" Position verleiht. Kein bekanntes Ergebnis. Sogar Endspiele - wenn es weniger Teile gibt - sind schwer aufzuzählen, um den besten nächsten Zug zu bestimmen. Technisch gesehen sind sie endlich. Aber die Anzahl der Alternativen ist enorm. Sogar ein 2 Türme + König hat ungefähr 22 mögliche nächste Züge. Und wenn es 6 Züge braucht, um sich zu paaren, sehen Sie 12.855.002.631.049.216 Züge.

Berechne die Eröffnungszüge. Während es nur ungefähr 20 Eröffnungszüge gibt, gibt es ungefähr 30 zweite Züge. Beim dritten Zug sehen wir uns also 360.000 alternative Spielzustände an.

Aber Schachpartien sind (technisch) endlich. Riesig, aber endlich. Es gibt perfekte Informationen. Es gibt definierte Start- und Endzustände. Es gibt keine Münzwürfe oder Würfelwürfe.

103
S.Lott

Ich weiß so gut wie nichts darüber, was tatsächlich über Schach entdeckt wurde. Aber als Mathematiker habe ich folgende Überlegungen:

Zuerst müssen wir uns daran erinnern, dass Weiß zuerst gehen darf und dies ihm vielleicht einen Vorteil verschafft. Vielleicht gibt es Schwarz einen Vorteil.

Angenommen, es gibt keine perfekte Strategie für Schwarz, mit der er immer gewinnen/pausieren kann. Dies impliziert, dass es, egal was Schwarz tut, eine Strategie gibt, der Weiß folgen kann, um zu gewinnen. Warten Sie eine Minute - das bedeutet, dass eine perfekte Strategie für Weiß ist !

Dies sagt uns, dass mindestens einer der beiden Spieler eine perfekte Strategie hat , mit der dieser Spieler immer gewinnen oder unentschieden spielen kann.

Es gibt also nur drei Möglichkeiten:

  • Weiß kann immer gewinnen, wenn es perfekt spielt
  • Schwarz kann immer gewinnen, wenn er perfekt spielt
  • Ein Spieler kann gewinnen oder unentschieden spielen, wenn er perfekt spielt (und wenn beide Spieler perfekt spielen, geraten sie immer in eine Pattsituation).

Aber welche davon tatsächlich richtig ist, wissen wir vielleicht nie.

Die Antwort auf die Frage lautet ja: Es muss einen perfekten Algorithmus für Schach geben, zumindest für einen der beiden Spieler.

72
Artelius

Es ist für das Spiel der Kontrolleure nachgewiesen worden, dass ein Programm das Spiel immer gewinnen oder binden kann. Das heißt, es gibt keine Auswahl an Zügen, die ein Spieler ausführen kann, um den anderen Spieler zum Verlieren zu zwingen.

Die Forscher haben fast zwei Jahrzehnte damit verbracht, die 500 Milliarden möglichen Kontrolleurpositionen zu durchlaufen, was immer noch einen winzigen Bruchteil der Anzahl der Schachpositionen ausmacht Weg. Unter den Prüfern befanden sich Top-Spieler, die dem Forschungsteam halfen, die Daumenregeln für Software zu programmieren, die Züge als erfolgreich oder erfolglos einstuften. Dann ließen die Forscher das Programm auf durchschnittlich 50 Computern pro Tag laufen. An manchen Tagen lief das Programm auf 200 Maschinen. Während die Forscher den Fortschritt überwachten und das Programm entsprechend optimierten. Tatsächlich schlug Chinook die Menschen, um 1994 die Dame-Weltmeisterschaft zu gewinnen.

Ja, Sie können Schach lösen, nein, Sie werden es bald nicht mehr tun.

30
BCS

Hier geht es nicht um Computer, sondern nur um das Schachspiel.

Die Frage ist, gibt es eine ausfallsichere Strategie, um das Spiel niemals zu verlieren? Wenn eine solche Strategie existiert, kann ein Computer, der alles weiß, sie immer verwenden und sie ist keine Heuristik mehr.

Zum Beispiel wird das Spiel Tic-Tac-Toe normalerweise basierend auf Heuristiken gespielt. Es gibt jedoch eine ausfallsichere Strategie. Was auch immer der Gegner bewegt, Sie finden immer einen Weg, das Spiel nicht zu verlieren, wenn Sie es von Anfang an richtig machen.

Sie müssten also beweisen, dass es eine solche Strategie auch für Schach gibt oder nicht. Es ist im Grunde dasselbe, nur der Spielraum für mögliche Bewegungen ist erheblich größer.

14
ypnos

Ich komme sehr spät zu diesem Thread und dass Sie einige der Probleme bereits erkannt haben. Aber als ehemaliger Meister und ehemaliger professioneller Schachprogrammierer dachte ich, ich könnte ein paar nützliche Fakten und Zahlen hinzufügen. Es gibt verschiedene Möglichkeiten, die Komplexität von Schach zu messen :

  • Die Gesamtzahl der Schachpartien beträgt ungefähr 10 ^ (10 ^ 50). Diese Zahl ist unvorstellbar groß.
  • Die Anzahl der Schachpartien mit 40 Zügen oder weniger liegt bei 10 ^ 40. Das ist immer noch eine unglaublich große Zahl.
  • Die Anzahl der möglichen Schachpositionen liegt bei 10 ^ 46.
  • Der vollständige Schach-Suchbaum (Shannon-Nummer) liegt bei 10 ^ 123, basierend auf einem durchschnittlichen Verzweigungsfaktor von 35 und einer durchschnittlichen Spieldauer von 80.
  • Zum Vergleich wird die Anzahl der Atome im beobachtbaren Universum gewöhnlich auf etwa 10 ^ 80 geschätzt.
  • Alle Endspiele mit 6 oder weniger Teilen wurden sortiert und gelöst .

Mein Fazit: Während Schach theoretisch lösbar ist, werden wir niemals das Geld, die Motivation, die Rechenleistung oder den Speicher haben, um es jemals zu tun.

13
RoadWarrior

Einige Spiele wurden tatsächlich gelöst. Tic-Tac-Toe ist eine sehr einfache Methode, um eine KI zu bauen, die immer gewinnt oder bindet. Kürzlich wurde auch Connect 4 gelöst (und es hat sich als unfair gegenüber dem zweiten Spieler erwiesen, da ein perfektes Spiel ihn verlieren lässt).

Schach ist jedoch noch nicht gelöst, und ich glaube nicht, dass es Beweise dafür gibt, dass es sich um ein faires Spiel handelt (d. H. Ob das perfekte Spiel zu einem Unentschieden führt). Rein theoretisch gesehen hat Chess eine endliche Anzahl von möglichen Figurenkonfigurationen. Daher ist der Suchraum endlich (wenn auch unglaublich groß). Daher gibt es eine deterministische Turingmaschine, die perfekt spielen könnte. Ob man jemals gebaut werden könnte, ist eine andere Sache.

9
Cybis

Der durchschnittliche 1000-Dollar-Desktop wird in der Lage sein, Checkers in nur 5 Sekunden bis zum Jahr 2040 zu lösen (5x10 ^ 20 Berechnungen).

Selbst bei dieser Geschwindigkeit würden 100 dieser Computer noch ungefähr 6,34 x 10 ^ 19 Jahre brauchen, um das Schach zu lösen. Immer noch nicht machbar. Nicht einmal annähernd.

Um 2080 werden unsere durchschnittlichen Desktops ungefähr 10 ^ 45 Berechnungen pro Sekunde haben. Ein einzelner Computer hat die Rechenleistung, um Schach in etwa 27,7 Stunden zu lösen. Dies wird definitiv bis 2080 geschehen, solange die Rechenleistung in den letzten 30 Jahren weiter zunimmt.

Bis 2090 wird auf einem 1000-Dollar-Desktop genügend Rechenleistung vorhanden sein, um Schach in etwa einer Sekunde zu lösen. Bis dahin wird es also völlig unbedeutend sein.

Angesichts der Tatsache, dass Checkers im Jahr 2007 gelöst wurden und die Rechenleistung, um sie in 1 Sekunde zu lösen, um etwa 33-35 Jahre zurückliegt, können wir Schach wahrscheinlich grob schätzen wird irgendwo zwischen 2055-2057 gelöst. Wahrscheinlich früher, als mehr Rechenleistung zur Verfügung steht (was in 45 Jahren der Fall sein wird), kann mehr für Projekte wie dieses aufgewendet werden. Ich würde jedoch frühestens 2050 und spätestens 2060 sagen.

Im Jahr 2060 brauchten 100 durchschnittliche Desktops 3,17 x 10 ^ 10 Jahre, um das Schach zu lösen. Beachten Sie, dass ich einen 1000-Dollar-Computer als Benchmark verwende, während größere Systeme und Supercomputer wahrscheinlich verfügbar sein werden, da sich auch das Preis-Leistungs-Verhältnis verbessert. Außerdem nimmt ihre Rechenleistung in der Größenordnung schneller zu. Angenommen, ein Supercomputer kann jetzt 2,33 x 10 ^ 15 Berechnungen pro Sekunde ausführen, und ein 1000-Dollar-Computer etwa 2 x 10 ^ 9. Zum Vergleich: Vor 10 Jahren betrug der Unterschied 10 ^ 5 statt 10 ^ 6. Bis 2060 wird der Größenordnungsunterschied wahrscheinlich 10 ^ 12 betragen, und selbst dieser kann schneller als erwartet ansteigen.

Vieles davon hängt davon ab, ob wir als Menschen den Drang haben, Schach zu lösen oder nicht, aber die Rechenleistung wird es in dieser Zeit möglich machen (solange unser Tempo anhält).

Auf einer anderen Anmerkung hat das Spiel von Tic-Tac-Toe, das viel, viel einfacher ist, 2.653.002 mögliche Berechnungen (mit einem offenen Brett). Die Rechenleistung zum Lösen von Tic-Tac-Toe in ungefähr 2,5 (1 Million Berechnungen pro Sekunde) Sekunden wurde 1990 erreicht.

1955 war ein Computer in der Lage, Tic-Tac-Toe in etwa einem Monat zu lösen (1 Berechnung pro Sekunde). Auch dies basiert auf dem, was 1000 Dollar bringen würden, wenn Sie es in einen Computer packen könnten (ein 1000-Dollar-Desktop existierte 1955 offensichtlich nicht), und . Dieser Computer wäre der Lösung von Tic-Tac-Toe gewidmet gewesen, was 1955 einfach nicht der Fall war. Die Berechnung war teuer und wäre für diesen Zweck nicht verwendet worden, obwohl ich glaube, dass es kein Datum gibt, an dem dies der Fall ist Tic-Tac-Toe wurde von einem Computer als "gelöst" angesehen, aber ich bin mir sicher, dass es hinter der tatsächlichen Rechenleistung zurückbleibt.

Berücksichtigt man außerdem, dass 1000 US-Dollar in 45 Jahren etwa viermal weniger wert sind als jetzt, kann so viel mehr Geld in Projekte wie dieses fließen, während die Rechenleistung weiterhin billiger wird.

8
Frank

Es ist tatsächlich ist möglich für beide Spieler, Gewinnstrategien in unendlichen Spielen ohne Ordnung zu haben; Schach ist jedoch gut geordnet. In der Tat gibt es aufgrund der 50-Züge-Regel eine Obergrenze für die Anzahl der Züge, die ein Spiel haben kann, und daher gibt es nur endlich viele mögliche Schachpartien (die aufgezählt werden können, um genau zu lösen .. zumindest theoretisch:)

Ihr Ende des Arguments wird durch die Art und Weise gestützt, wie moderne Schachprogramme jetzt funktionieren . Sie funktionieren auf diese Weise, weil es viel zu ressourcenintensiv ist, ein Schachprogramm zu programmieren, um deterministisch zu arbeiten. Sie werden nicht unbedingt immer so arbeiten. Es ist möglich, dass Schach eines Tages gelöst wird , und wenn das passiert, wird es wahrscheinlich von einem Computer gelöst.

6
Bill the Lizard

Aus der Spieltheorie, um die es in dieser Frage geht, lautet die Antwort: Ja. Schach kann perfekt gespielt werden. Der Spielraum ist bekannt/vorhersehbar und ja, wenn Sie die Quantencomputer Ihres Enkels hätten, könnten Sie wahrscheinlich alle Heuristiken beseitigen.

Sie könnten jetzt jeden Tag eine perfekte Tic-Tac-Toe-Maschine in einer beliebigen Skriptsprache schreiben, die sich in Echtzeit perfekt abspielen lässt.

Othello ist ein weiteres Spiel, das aktuelle Computer problemlos perfekt spielen können, aber der Arbeitsspeicher und die CPU des Computers benötigen ein wenig Hilfe

Schach ist theoretisch möglich, aber praktisch nicht möglich (2008)

i-Go ist knifflig, da der Raum der Möglichkeiten die Anzahl der Atome im Universum übersteigt, brauchen wir möglicherweise einige Zeit, um eine perfekte i-Go-Maschine zu entwickeln.

5
Robert Gould

Schach ist ein Beispiel für ein Matrixspiel, das per Definition ein optimales Ergebnis erzielt (denken Sie an das Nash-Gleichgewicht). Wenn Spieler 1 und 2 jeweils optimale Züge ausführen, wird IMMER ein bestimmtes Ergebnis erzielt (ob es sich um eine Niederlage handelt, ist noch nicht bekannt).

5
Jon Smock

Als Schachprogrammierer aus den 1970er Jahren habe ich definitiv eine Meinung dazu. Was ich vor ungefähr 10 Jahren aufgeschrieben habe, ist heute im Grunde immer noch wahr:

"Unvollendete Arbeit und Herausforderungen für Schachprogrammierer"

Damals dachte ich, wir könnten Schach konventionell lösen, wenn wir es richtig machen.

Checkers wurde kürzlich gelöst (Yay, Universität von Alberta, Kanada !!!), aber das wurde effektiv mit Brute Force gemacht. Um konventionell Schach zu spielen, musst du schlauer sein.

Es sei denn natürlich, Quantum Computing wird Realität. Wenn ja, wird Schach genauso einfach gelöst wie Tic-Tac-Toe.

In den frühen 1970er Jahren gab es in Scientific American eine kurze Parodie, die meine Aufmerksamkeit auf sich zog. Es war eine Ankündigung, dass das Schachspiel von einem russischen Schachcomputer gelöst wurde. Es hat sich herausgestellt, dass es einen perfekten Zug für Weiß gibt, der einen Sieg mit perfektem Spiel für beide Seiten garantiert, und dieser Zug lautet: 1. a4!

5
lkessler

Für die Aufzeichnung gibt es Computer, die um Kontrolleure gewinnen oder binden können. Ich bin mir nicht sicher, ob das auch für Schach möglich ist. Die Anzahl der Züge ist viel höher. Die Dinge ändern sich auch, weil Teile sich in jede Richtung bewegen können, nicht nur vorwärts und rückwärts. Ich denke, obwohl ich nicht sicher bin, dass Schach deterministisch ist, aber dass es einfach zu viele mögliche Züge gibt, als dass ein Computer derzeit alle Züge in angemessener Zeit bestimmen könnte.

5
Kibbee

Ich denke, du bist tot auf. Maschinen wie Deep Blue und Deep Thought sind mit einer Reihe vordefinierter Spiele und cleveren Algorithmen programmiert, um die Bäume in die Enden dieser Spiele zu zerlegen. Dies ist natürlich eine dramatische Vereinfachung. Es besteht immer die Möglichkeit, den Computer im Verlauf eines Spiels zu "schlagen". Damit meine ich eine Bewegung, die den Computer zwingt, eine Bewegung auszuführen, die nicht optimal ist (was auch immer das ist). Wenn der Computer vor Ablauf der Zeit den besten Pfad nicht finden kann, kann es sein, dass er einen Fehler begeht, indem er einen der weniger wünschenswerten Pfade auswählt.

Es gibt eine andere Klasse von Schachprogrammen, die echtes maschinelles Lernen oder genetische Programmier-/Evolutionsalgorithmen verwenden. Einige Programme wurden entwickelt und verwenden neuronale Netze, um Entscheidungen zu treffen. In einem solchen Fall würde ich mir vorstellen, dass der Computer "Fehler" macht, aber dennoch zum Sieg führt.

Es gibt ein faszinierendes Buch über diese Art von Allgemeinmediziner namens Blondie24 , das Sie vielleicht lesen werden. Es geht um Dame, aber es könnte auf Schach zutreffen.

5
Jason Jackson

Viele Antworten hier bringen die wichtigen spieltheoretischen Punkte auf den Punkt:

  1. Schach ist ein endliches, deterministisches Spiel mit vollständigen Informationen über den Spielstatus
  2. Sie können ein endliches Spiel lösen und eine perfekte Strategie identifizieren
  3. Schach ist jedoch groß genug, dass Sie es mit einer Brute-Force-Methode nicht vollständig lösen können

Diese Beobachtungen übersehen jedoch einen wichtigen praktischen Punkt: Es ist nicht notwendig, das gesamte Spiel perfekt zu lösen, um eine unschlagbare Maschine zu schaffen .

Es ist in der Tat sehr wahrscheinlich, dass Sie eine unschlagbare Schachmaschine erschaffen könnten (d. H. Sie wird niemals verlieren und immer einen Gewinn oder ein Unentschieden erzwingen), ohne auch nur einen winzigen Bruchteil des möglichen Zustandsraums zu durchsuchen.

Die folgenden Techniken reduzieren beispielsweise den benötigten Suchraum massiv:

  • Baumschnitttechniken wie Alpha/Beta oder MTD-f reduzieren den Suchraum bereits massiv
  • Beweisbare Gewinnposition. Viele Endungen fallen in diese Kategorie: Sie müssen zum Beispiel nicht nach KR vs K suchen, es ist ein bewährter Gewinn. Mit etwas Arbeit ist es möglich, viel mehr garantierte Siege zu beweisen.
  • Fast bestimmte Siege - für ein "gut genug" Spiel ohne dumme Fehler (sagen wir über ELO 2200+?) Sind viele Schachpositionen fast bestimmte Siege, zum Beispiel ein anständiger materieller Vorteil (zum Beispiel ein zusätzlicher Ritter) ohne kompensierenden Positionsvorteil. Wenn Ihr Programm eine solche Position erzwingen kann und über ausreichende Heuristiken zum Erkennen von Positionsvorteilen verfügt, kann es davon ausgehen, dass es mit einer Wahrscheinlichkeit von 100% gewinnt oder zumindest unentschieden spielt.
  • Baumsuchheuristiken - mit ausreichend guter Mustererkennung können Sie sich schnell auf die relevante Teilmenge der "interessanten" Bewegungen konzentrieren. So spielen menschliche Großmeister, es ist also keine schlechte Strategie ... und unsere Mustererkennungsalgorithmen werden ständig besser
  • Risikobewertung - Eine bessere Konzeption der "Risikobereitschaft" einer Position ermöglicht eine effektivere Suche, indem die Rechenleistung auf Situationen konzentriert wird, in denen das Ergebnis ungewisser ist (dies ist eine natürliche Erweiterung von Ruhesuche ).

Mit der richtigen Kombination der oben genannten Techniken würde ich gerne behaupten, dass es möglich ist, eine "unschlagbare" Schachspielmaschine zu schaffen. Wir sind mit der aktuellen Technologie wahrscheinlich nicht allzu weit weg.

Beachten Sie, dass es mit ziemlicher Sicherheit schwieriger ist zu beweisen , dass diese Maschine nicht zu schlagen ist. Es wäre wahrscheinlich so etwas wie die Reimann-Hypothese - wir wären uns ziemlich sicher, dass es perfekt funktioniert, und hätten empirische Ergebnisse, die zeigen, dass es nie verloren hat (einschließlich einiger Milliarden Straight Draws gegen sich selbst), aber wir hätten tatsächlich nicht die Fähigkeit dazu Beweise es.

Zusätzlicher Hinweis zu "Perfektion":

Ich beschreibe die Maschine nicht als "perfekt" im spieltheoretischen Sinne, da dies ungewöhnlich starke zusätzliche Bedingungen mit sich bringt, wie zum Beispiel:

  • Immer gewinnen in jeder Situation, in der es möglich ist, einen Sieg zu erzwingen, egal wie komplex die Gewinnkombination sein mag. Es wird Situationen an der Grenze zwischen Sieg/Unentschieden geben, in denen es äußerst schwierig ist, dies perfekt zu berechnen.
  • Ausnutzen aller verfügbaren Informationen über mögliche Unvollkommenheiten im Spiel Ihres Gegners, beispielsweise den Schluss, dass Ihr Gegner möglicherweise zu gierig ist und absichtlich eine etwas schwächere Linie als üblich spielt, weil dies das Potenzial hat, Ihren Gegner zu Fehlern zu verleiten. Gegen unvollkommene Gegner kann es in der Tat optimal sein, eine Niederlage zu machen , wenn Sie schätzen, dass Ihr Gegner den erzwungenen Sieg wahrscheinlich nicht wahrnimmt und Sie eine höhere Wahrscheinlichkeit haben, selbst zu gewinnen.

Perfektion (besonders bei unvollkommenen und unbekannten Gegnern) ist ein viel schwierigeres Problem, als einfach unschlagbar zu sein.

3
mikera

"Gibt es einen perfekten Algorithmus für Schach?"

Ja da ist. Vielleicht muss Weiß immer gewinnen. Vielleicht muss Schwarz immer gewinnen. Vielleicht ist es für beide immer mindestens zu binden. Wir wissen nicht welche, und wir werden es nie wissen, aber es existiert auf jeden Fall.

Siehe auch

2

Es ist perfekt lösbar.

Es gibt 10 ^ 50 ungerade Positionen. Aus meiner Sicht erfordert jede Position mindestens 64 runde Bytes zum Speichern (jedes Quadrat hat: 2 Zugehörigkeitsbits, 3 Stückbits). Sobald sie sortiert sind, können die Positionen, die Schachmatt sind, identifiziert und die Positionen verglichen werden, um eine Beziehung zu bilden, aus der hervorgeht, welche Positionen zu anderen Positionen in einem großen Ergebnisbaum führen.

Dann muss das Programm nur die untersten nur einseitigen Schachmattwurzeln finden, wenn so etwas existiert. In jedem Fall wurde Schach am Ende des ersten Absatzes ziemlich einfach gelöst.

2
Solomon

wenn Sie den gesamten Bereich aller Kombinationen von Spieler1/2-Zügen durchsuchen, basiert der einzelne Zug, über den der Computer bei jedem Schritt entscheidet, auf einer Heuristik.

Dort gibt es zwei konkurrierende Ideen. Zum einen suchen Sie jede mögliche Bewegung und zum anderen entscheiden Sie sich für eine Heuristik. Eine Heuristik ist ein System, um eine gute Vermutung anzustellen. Wenn Sie jede mögliche Bewegung durchforsten, dann raten Sie nicht mehr.

2
Joel Coehoorn

Ich fand dieses Artikel von John MacQuarrie das Nachschlagewerk des "Vaters der Spieltheorie" Ernst Friedrich Ferdinand Zermelo . Daraus ergibt sich folgende Schlussfolgerung:

Im Schach kann entweder Weiß einen Sieg erzwingen, oder Schwarz kann einen Sieg erzwingen, oder beide Seiten können mindestens ein Unentschieden erzwingen.

Die Logik scheint mir vernünftig.

2
Ben Gartner

Es gibt zwei Fehler in Ihrem Gedankenexperiment:

  1. Wenn Ihre Turing-Maschine nicht "begrenzt" ist (im Speicher, in der Geschwindigkeit, ...), müssen Sie keine Heuristik verwenden, sondern können die Endzustände (Gewinn, Verlust, Unentschieden) berechnen. Um das perfekte Spiel zu finden, müssten Sie nur den Minimax-Algorithmus (siehe http://en.wikipedia.org/wiki/Minimax ) verwenden, um die optimalen Züge für jeden Spieler zu berechnen, die führen würden zu einem oder mehreren optimalen Spielen.

  2. Der Komplexität der verwendeten Heuristik sind keine Grenzen gesetzt. Wenn Sie ein perfektes Spiel berechnen können, können Sie auch eine perfekte Heuristik daraus berechnen. Bei Bedarf ist es nur eine Funktion, die die Schachpositionen wie folgt abbildet: "Wenn ich in dieser Situation bin, ist mein bester Zug M".

Wie andere bereits betonten, wird dies zu drei möglichen Ergebnissen führen: Weiß kann einen Sieg erzwingen, Schwarz kann einen Sieg erzwingen, einer von ihnen kann ein Unentschieden erzwingen.

Das Ergebnis eines perfekten Dame-Spiels wurde bereits "berechnet". Wenn sich die Menschheit vorher nicht selbst zerstört, wird es eines Tages auch eine Berechnung für Schach geben, wenn sich die Computer so weit entwickelt haben, dass sie über genügend Speicher und Geschwindigkeit verfügen. Oder wir haben einige Quantencomputer ... Oder bis jemand (Forscher, Schachexperten, Genie) Algorithmen findet, die die Komplexität des Spiels erheblich reduzieren. Um ein Beispiel zu geben: Was ist die Summe aller Zahlen zwischen 1 und 1000? Sie können entweder 1 + 2 + 3 + 4 + 5 ... + 999 + 1000 berechnen, oder Sie können einfach berechnen: N * (N + 1)/2 mit N = 1000; result = 500500. Nun stellen Sie sich vor, Sie kennen diese Formel nicht, Sie kennen die mathematische Induktion nicht, Sie wissen nicht einmal, wie man Zahlen multipliziert oder addiert Unbekannter Algorithmus, der letztendlich die Komplexität dieses Spiels reduziert und nur 5 Minuten benötigt, um den besten Zug mit einem aktuellen Computer zu berechnen. Vielleicht ist es sogar möglich, es als Mensch mit Stift und Papier oder sogar in Gedanken zu schätzen, wenn man etwas mehr Zeit hat.

Die schnelle Antwort lautet also: Wenn die Menschheit lange genug überlebt, ist es nur eine Frage der Zeit!

1
SDwarfs

Ich bin nur zu 99,9% von der Behauptung überzeugt, dass die Größe des Staatsraums es unmöglich macht, auf eine Lösung zu hoffen.

Sicher, 10 ^ 50 ist eine unglaublich große Zahl. Nennen wir die Größe des Zustandsraums n.

Wie hoch ist die Anzahl der Züge im längsten möglichen Spiel? Da alle Spiele mit einer endlichen Anzahl von Zügen enden, gibt es eine solche Grenze. Nennen Sie es m.

Können Sie ausgehend vom Ausgangszustand nicht alle n Züge im Raum O(m) aufzählen? Sicher, es dauert O(n), aber die Argumente aus der Größe des Universums sprechen das nicht direkt an. O(m) Raum ist möglicherweise nicht einmal sehr groß. Konnten Sie bei O(m) nicht auch während dieser Überquerung verfolgen, ob die Fortsetzung eines Zustands auf dem Pfad, den Sie überqueren, zu EitherMayWin, EitherMayWinOrForceDraw, WhiteMayWin, WhiteMayWinOrForceDraw, BlackMayWin oder BlackMayWinOrForceDraw führt? (Es gibt ein Gitter, je nachdem, wer an der Reihe ist. Kommentieren Sie jeden Zustand in der Geschichte Ihrer Reise mit dem Gittertreffen.)

Es sei denn, ich vermisse etwas, das ist ein O(n) Zeit/O(m) Raumalgorithmus zum Bestimmen, in welche der möglichen Kategorien Schach fällt. Wikipedia zitiert eine Schätzung für das Alter des Universums zu etwa 10 ^ 60. Planck-Zeiten. Lassen Sie uns, ohne auf ein kosmologisches Argument einzugehen, vermuten, dass noch so viel Zeit übrig ist, bis die Hitze/Kälte/der Tod des Universums einsetzt. Das heißt, wir müssen alle 10 ^ 10 Planck-Zeiten oder alle 10 ^ -34 Sekunden einen Zug auswerten. Das ist eine unglaublich kurze Zeit (etwa 16 Größenordnungen kürzer als die kürzesten jemals beobachteten Zeiten). Nehmen wir optimistisch an, dass wir mit einer Super-Duper-Good-Implementierung, die auf dem neuesten Stand der Technik läuft und eine angemessene Teilmenge der NP-Technologie darstellt, die wir evaluieren möchten Wenn Sie einen Schritt vorwärts machen, kategorisieren Sie den resultierenden Zustand in einen Zwischenzustand (oder einen der drei Endzustände) mit einer Rate von 100 MHz (alle 10 ^ -8 Sekunden). Da dieser Algorithmus sehr parallelisierbar ist, benötigen wir 10 ^ 26 solcher Computer oder ungefähr einen für jedes atom in meinem Körper, zusammen mit der Fähigkeit, ihre Ergebnisse zu sammeln.

Ich nehme an, es gibt immer einen Hoffnungsschimmer für eine Brute-Force-Lösung. Wir könnten Glück haben und wenn wir nur einen der möglichen Eröffnungszüge von Weiß untersuchen, wählen beide einen mit einem weit unterdurchschnittlichen Fanout und einen, bei dem Weiß immer gewinnt oder gewinnt oder unentschieden spielt.

Wir könnten auch hoffen, die Definition von Schach etwas zu verkleinern und alle davon zu überzeugen, dass es moralisch immer noch dasselbe Spiel ist. Müssen wir wirklich verlangen, dass Positionen vor einem Unentschieden dreimal wiederholt werden? Müssen wir wirklich die Ausreißergruppe dazu bringen, die Fluchtfähigkeit für 50 Züge zu demonstrieren? Versteht jemand überhaupt, was zur Hölle mit der en passant -Regel los ist? ;) Im Ernst, müssen wir einen Spieler wirklich zwingen, sich zu bewegen (im Gegensatz zum Ziehen oder Verlieren), wenn sein einziger Zug ein Fluchtscheck ist oder eine Pattsituation ein en passant Capture ist? Können wir die Auswahl der Figuren einschränken, auf die ein Bauer befördert werden darf, wenn die gewünschte Beförderung ohne Dame nicht zu einem sofortigen Scheck oder Schachmatt führt?

Ich bin mir auch nicht sicher, inwieweit es hilfreich sein kann, jedem Computer Hash-basierten Zugriff auf eine große Datenbank mit den neuesten Spielständen und deren möglichen Ergebnissen zu gewähren (was auf vorhandener Hardware und mit vorhandenen Endgame-Datenbanken möglicherweise relativ machbar ist), die Suche früher zu beschränken. Natürlich können Sie nicht die gesamte Funktion ohne O(n) -Speicher auswendig lernen, aber Sie könnten eine große Ganzzahl auswählen und sich merken, dass viele Endspiele von jedem möglichen (oder auch nicht leicht nachweisbar unmöglich, nehme ich an) rückwärts aufzählen. Endzustand.

1
Doug McClean

Ich weiß, das ist eine kleine Beule, aber ich muss meine 5 Cent hier reinstecken. Es ist möglich, dass ein Computer oder eine Person jede einzelne Schachpartie beendet, an der er teilnimmt, entweder in einem Gewinn oder einer Pattsituation.

Um dies zu erreichen, müssen Sie jedoch jede mögliche Bewegung und Reaktion usw. bis hin zu jedem einzelnen möglichen Spielergebnis genau kennen und dies visualisieren oder sich eine einfache Methode zum Analysieren dieser Informationen überlegen Es ist eine Mind Map, die sich ständig verzweigt.

Der Mittelknoten wäre der Start des Spiels. Jeder Zweig jedes Knotens würde einen Zug symbolisieren, der sich von den anderen unterscheidet. Die Präsentation in diesem Herrenhaus würde viel Ressourcen in Anspruch nehmen, insbesondere wenn Sie dies auf Papier tun würden. Auf einem Computer würde dies möglicherweise Hunderte von Terrabytes an Daten erfordern, da Sie sehr viele Wiederholungsversuche durchführen müssten, es sei denn, Sie hätten die Verzweigungen zurückgesetzt.

Das Speichern solcher Daten wäre jedoch nicht plausibel, wenn nicht unmöglich. Es wäre möglich, aber nicht plausibel, einen Computer zu veranlassen, den optimalsten Zug aus den (höchstens) 8 sofort möglichen Zügen zu erkennen, da dieser Computer in der Lage sein müsste, alle nach diesem Zug verstrichenen Zweige zu verarbeiten. Zählen Sie alle Schlussfolgerungen, die zu einem Sieg oder einer Pattsituation führen, und reagieren Sie dann auf diese Anzahl von Gewinnschlussfolgerungen, um Schlussfolgerungen zu verlieren. Dazu ist es erforderlich, dass RAM in der Lage ist, Daten zu verarbeiten die Terrabyte oder mehr! Und mit der heutigen Technologie würde ein solcher Computer mehr als das Guthaben der 5 reichsten Männer und/oder Frauen der Welt erfordern!

Nach all diesen Überlegungen konnte es jedoch niemand tun. Eine solche Aufgabe würde 30 der klügsten Köpfe erfordern, die heute leben, nicht nur im Schach, sondern auch in der Wissenschaft und in der Computertechnologie, und eine solche Aufgabe könnte nur auf einer (lassen wir es ganz in der Grundperspektive ausdrücken) ... extrem ultimativ hyper Super-Duper-Computer ... der möglicherweise seit mindestens einem Jahrhundert nicht mehr existiert. Es wird gemacht! Nur nicht in diesem Leben.

1
MrDeeJayy

Mathematisch wurde Schach durch den Minimax-Algorithmus gelöst, der bis in die 1920er Jahre zurückreicht (entweder von Borel oder von Neumann gefunden). Somit kann eine Turingmaschine in der Tat perfektes Schach spielen.

Die rechnerische Komplexität des Schachs macht es jedoch praktisch unmöglich. Gegenwärtige Motoren verwenden verschiedene Verbesserungen und Heuristiken. Heutzutage haben die besten Motoren die besten Menschen in Bezug auf die Spielstärke übertroffen, aber aufgrund der von ihnen verwendeten Heuristiken spielen sie sich möglicherweise nicht perfekt, wenn unendlich viel Zeit zur Verfügung steht (z. B. können Hash-Kollisionen zu falschen Ergebnissen führen).

Die nächsten, die wir derzeit in Bezug auf perfektes Spiel haben, sind Endspiel-Tischbasen . Die typische Technik, um sie zu erzeugen, heißt retrograde Analyse . Derzeit sind alle Positionen mit bis zu sechs Teilen gelöst.

0
Philipp Claßen

Es mag lösbar sein, aber etwas stört mich: Selbst wenn der gesamte Baum durchquert werden könnte, gibt es immer noch keine Möglichkeit, den nächsten Zug des Gegners vorherzusagen. Wir müssen unseren nächsten Zug immer nach dem Zustand des Gegners ausrichten und den "besten" Zug zur Verfügung stellen. Dann, basierend auf dem nächsten Status, machen wir es erneut. Unser optimaler Zug könnte also optimal sein, wenn sich der Gegner auf eine bestimmte Weise bewegt. Für einige Züge des Gegners war unser letzter Zug möglicherweise nicht optimal.

Ich verstehe einfach nicht, wie es in jedem Schritt zu einer "perfekten" Bewegung kommen kann.

Damit dies der Fall ist, muss es für jeden Zustand [im aktuellen Spiel] einen Pfad im Baum geben, der zum Sieg führt, ungeachtet des nächsten Zuges des Gegners (wie in Tic-Tac-Toe), und ich habe einen schweren Zeit, das herauszufinden.

0
E Dominique