Ich war kürzlich in einer Diskussion mit einer Nicht-Codierer-Person über die Möglichkeiten von Schachcomputern. Ich bin theoretisch nicht gut versiert, aber ich glaube, ich weiß genug.
Ich argumentierte, dass es keine deterministische Turing-Maschine geben könne, die beim Schach immer gewann oder ins Stocken geriet. Ich denke, selbst wenn Sie den gesamten Raum aller Kombinationen von Spieler-1/2-Zügen 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 ausführen könnte.
Mein Freund dachte im Gegenteil, dass ein Computer immer gewinnen oder unentschieden spielen würde, wenn er niemals einen "Fehler" machen würde (aber definieren Sie das?). Als Programmierer, der CS genommen hat, weiß ich jedoch, dass selbst Ihre guten Entscheidungen - angesichts eines weisen Gegners - Sie am Ende dazu zwingen können, "Fehler" zu machen. Selbst wenn Sie alles wissen, ist Ihr nächster Schritt gierig darin, 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 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 argumentieren, dass Schach etwas komplizierter ist als Dame, da ein Sieg nicht unbedingt durch numerische Erschöpfung der Figuren, sondern durch einen Partner erfolgt. Meine ursprüngliche Behauptung ist wahrscheinlich falsch, aber andererseits denke ich, dass ich auf etwas hingewiesen habe, das (formal) noch nicht zufriedenstellend bewiesen ist.
Ich denke, mein Gedankenexperiment war, dass der Algorithmus (oder die gespeicherten Pfade) immer dann, wenn ein Zweig im Baum genommen wird, einen Pfad zu einem Partner finden muss (ohne sich zu paaren), damit sich ein möglicher Zweig des Gegners bewegt. Nach der Diskussion werde ich kaufen, dass bei mehr Gedächtnis, als wir uns nur erträumen können, all diese Wege gefunden werden könnten.
quelle
Antworten:
"Ich habe argumentiert, dass es keine deterministische Turing-Maschine geben kann, die beim Schach immer gewonnen oder ins Stocken geraten ist."
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 einfach WIRKLICH groß.
Deshalb greift Schach auf Heuristiken zurück - der Staatsraum ist zu groß (aber endlich). Selbst aufzuzählen - viel weniger nach jedem perfekten Zug in jedem Verlauf eines möglichen Spiels zu suchen - wäre ein sehr, sehr großes Suchproblem.
Eröffnungen werden per Skript erstellt, um Sie zu einer Spielmitte zu bringen, die Ihnen eine "starke" Position gibt. Kein bekanntes Ergebnis. Selbst Endspiele - wenn es weniger Teile gibt - sind schwer aufzuzählen, um den besten nächsten Zug zu bestimmen. Technisch sind sie endlich. Aber die Anzahl der Alternativen ist riesig. Sogar ein 2 Türme + König hat ungefähr 22 mögliche nächste Züge. Und wenn es 6 Züge dauert, um sich zu paaren, sehen Sie 12.855.002.631.049.216 Züge.
Rechnen Sie beim Öffnen von Zügen. Während es nur etwa 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 Schachspiele 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.
quelle
Ich weiß so gut wie nichts darüber, was tatsächlich über Schach entdeckt wurde. Aber als Mathematiker hier meine Argumentation:
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.
Nehmen wir nun an, dass es für Schwarz keine perfekte Strategie gibt , mit der er immer gewinnen / in eine Pattsituation geraten kann. Dies bedeutet, dass Weiß unabhängig davon, was Schwarz tut, eine Strategie verfolgen kann, um zu gewinnen. Warten Sie eine Minute - das heißt, es gibt eine perfekte Strategie für Weiß!
Dies sagt uns , dass zumindest einer der beiden Spieler hat eine perfekte Strategie hat , die diese Spieler können immer Sieg oder Unentschieden.
Es gibt also nur drei Möglichkeiten:
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.
quelle
Für das Dame-Spiel wurde bewiesen, 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.
Ja, Sie können Schach lösen, nein, Sie werden es nicht so bald tun.
quelle
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 es eine solche Strategie gibt, 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, um zu vermeiden, dass Sie das Spiel verlieren, wenn Sie es von Anfang an richtig machen.
Sie müssten also beweisen, dass eine solche Strategie auch für Schach existiert oder nicht. Es ist im Grunde das gleiche, nur der Raum möglicher Bewegungen ist weitaus größer.
quelle
Ich komme sehr spät zu diesem Thread und dass Sie einige der Probleme bereits erkannt haben. Aber als Ex-Meister und Ex-Profi-Schachprogrammierer dachte ich, ich könnte ein paar nützliche Fakten und Zahlen hinzufügen. Es gibt verschiedene Möglichkeiten, die Komplexität des Schachs zu messen :
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.
quelle
Einige Spiele wurden tatsächlich gelöst. Tic-Tac-Toe ist sehr einfach, um eine KI zu bauen, die immer gewinnt oder unentschieden spielt. Vor kurzem wurde auch Connect 4 gelöst (und es hat sich gezeigt, dass es dem zweiten Spieler gegenüber unfair ist, da ein perfektes Spiel dazu führt, dass er verliert).
Schach wurde jedoch nicht gelöst, und ich glaube, es gibt keinen Beweis dafür, dass es sich um ein faires Spiel handelt (dh ob das perfekte Spiel zu einem Unentschieden führt). Aus theoretischer Sicht hat Schach eine begrenzte Anzahl möglicher Stückkonfigurationen. Daher ist der Suchraum endlich (wenn auch unglaublich groß). Daher gibt es eine deterministische Turing-Maschine, die perfekt spielen könnte. Ob man jemals gebaut werden könnte, ist eine andere Sache.
quelle
Der durchschnittliche 1000-Dollar-Desktop kann bis zum Jahr 2040 Checkers in nur 5 Sekunden lösen (5x10 ^ 20 Berechnungen).
Selbst bei dieser Geschwindigkeit würden 100 dieser Computer ungefähr 6,34 x 10 ^ 19 Jahre brauchen , um Schach zu lösen. Immer noch nicht machbar. Nicht annähernd.
Um 2080 werden unsere durchschnittlichen Desktops ungefähr 10 ^ 45 Berechnungen pro Sekunde haben. Ein einzelner Computer verfügt über die Rechenleistung, um Schach in etwa 27,7 Stunden zu lösen. Es wird definitiv bis 2080 fertig sein, solange die Rechenleistung weiter wächst wie in den letzten 30 Jahren.
Bis 2090 wird auf einem 1000-Dollar-Desktop genügend Rechenleistung vorhanden sein, um Schach in etwa 1 Sekunde zu lösen. Bis zu diesem Datum wird dies also völlig trivial sein.
Angesichts der Tatsache, dass die Kontrolleure 2007 gelöst wurden und die Rechenleistung, um sie in 1 Sekunde zu lösen, um etwa 33 bis 35 Jahre zurückbleiben wird, können wir wahrscheinlich grob schätzen, dass Schach irgendwo zwischen 2055 und 2057 gelöst wird. Wahrscheinlich früher, wenn mehr Rechenleistung verfügbar ist (was in 45 Jahren der Fall sein wird), kann mehr für solche Projekte aufgewendet werden. Ich würde jedoch frühestens 2050 und spätestens 2060 sagen.
Im Jahr 2060 würde es 100 durchschnittliche Desktops 3,17 x 10 ^ 10 Jahre dauern, um Schach zu lösen. Stellen Sie fest, 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 Größenordnung der Rechenleistung schneller zu. Stellen Sie sich vor, ein Supercomputer kann jetzt 2,33 x 10 ^ 15 Berechnungen pro Sekunde und ein 1000-Dollar-Computer etwa 2 x 10 ^ 9 ausführen. Zum Vergleich: Vor 10 Jahren betrug der Unterschied 10 ^ 5 statt 10 ^ 6. Bis 2060 wird der Unterschied in der Größenordnung wahrscheinlich 10 ^ 12 betragen, und selbst dieser kann schneller als erwartet zunehmen.
Vieles davon hängt davon ab, ob wir als Menschen den Antrieb haben, Schach zu lösen, oder nicht, aber die Rechenleistung wird es um diese Zeit möglich machen (solange unser Tempo anhält).
Außerdem hat das viel einfachere Spiel Tic-Tac-Toe 2.653.002 mögliche Berechnungen (mit offenem Brett). Die Rechenleistung zur Lösung von Tic-Tac-Toe in ungefähr 2,5 (1 Million Berechnungen pro Sekunde) Sekunden wurde 1990 erreicht.
Im Jahr 1955 hatte ein Computer die Fähigkeit, Tic-Tac-Toe in etwa einem Monat zu lösen (1 Berechnung pro Sekunde). Dies basiert wiederum auf den 1000 US-Dollar, die Sie erhalten würden, wenn Sie sie in einen Computer packen könnten (ein 1000-Dollar-Desktop gab es 1955 offensichtlich nicht), und dieser Computer wäre der Lösung von Tic-Tac-Toe gewidmet gewesen Dies war 1955 einfach nicht der Fall. Die Berechnung war teuer und wurde nicht für diesen Zweck verwendet, obwohl ich nicht glaube, dass es ein Datum gibt, an dem Tic-Tac-Toe von einem Computer als "gelöst" eingestuft wurde, aber ich bin es sicher, dass es hinter der tatsächlichen Rechenleistung zurückbleibt.
Berücksichtigen Sie außerdem, dass 1000 US-Dollar in 45 Jahren etwa viermal weniger wert sind als jetzt, sodass viel mehr Geld in Projekte wie dieses fließen kann, während die Rechenleistung weiterhin billiger wird.
quelle
Es ist tatsächlich möglich, dass beide Spieler Gewinnstrategien in unendlichen Spielen ohne gute Reihenfolge 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 Schachspiele (die aufgezählt werden können, um genau zu lösen .. theoretisch, wenigstens :)
quelle
Ihr Ende des Arguments wird durch die Art und Weise unterstützt, wie moderne Schachprogramme jetzt funktionieren . Sie arbeiten so, weil es viel zu ressourcenintensiv ist, ein Schachprogramm zu codieren, um deterministisch zu arbeiten. Sie werden nicht unbedingt immer so funktionieren. Es ist möglich, dass Schach eines Tages gelöst wird , und wenn dies passiert, wird es wahrscheinlich von einem Computer gelöst.
quelle
Für die Aufzeichnung gibt es Computer, die bei Dame 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. Außerdem ändern sich die Dinge, weil sich Teile 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.
quelle
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 bis zum Ende dieser Spiele zu analysieren. Dies ist natürlich eine dramatische Vereinfachung. Es besteht immer die Möglichkeit, den Computer im Laufe eines Spiels zu "schlagen". Damit meine ich eine Bewegung, die den Computer dazu zwingt, eine Bewegung auszuführen, die nicht optimal ist (was auch immer das ist). Wenn der Computer vor dem Zeitlimit für den Umzug nicht den besten Pfad finden kann, kann er einen Fehler machen, indem er einen der weniger wünschenswerten Pfade wä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 einen Sieg erringt.
Es gibt ein faszinierendes Buch über diese Art von GP namens Blondie24 , das Sie vielleicht lesen werden. Es geht um Dame, aber es könnte für Schach gelten.
quelle
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 eliminieren.
Sie können heutzutage eine perfekte Tic-Tac-Toe-Maschine in jeder 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 Speicher 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, der Raum der Möglichkeiten geht über die Anzahl der Atome im Universum hinaus, sodass wir möglicherweise einige Zeit brauchen, um eine perfekte i-Go-Maschine herzustellen.
quelle
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 einen Gewinn-Verlust-Verlust handelt, ist noch nicht bekannt).
quelle
Als Schachprogrammierer aus den 1970er Jahren habe ich definitiv eine Meinung dazu. Was ich vor ungefähr 10 Jahren geschrieben habe, ist heute noch im Grunde wahr:
"Unvollendete Arbeit und Herausforderungen für Schachprogrammierer"
Damals dachte ich, wir könnten Schach konventionell lösen, wenn es richtig gemacht würde.
Checkers wurde kürzlich gelöst (Yay, Universität von Alberta, Kanada !!!), aber das wurde effektiv Brute Force getan. Um konventionell Schach zu spielen, muss man schlauer sein.
Es sei denn natürlich, Quantum Computing wird Realität. In diesem Fall ist Schach genauso einfach zu lösen 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 wurde festgestellt, dass es einen perfekten Zug für Weiß gibt, der einen Sieg mit perfektem Spiel beider Seiten garantiert, und dieser Zug lautet: 1. a4!
quelle
Viele Antworten hier machen die wichtigen spieltheoretischen Punkte:
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 schaffen könnten (dh 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 erforderlichen Suchraum massiv:
Mit der richtigen Kombination der oben genannten Techniken würde ich gerne behaupten, dass es möglich ist, eine "unschlagbare" Schachspielmaschine zu schaffen. Mit der aktuellen Technologie sind wir 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 ziemlich sicher, dass es perfekt spielt und empirische Ergebnisse hätten, 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 achte darauf, die Maschine nicht als "perfekt" im spieltheoretischen Sinne zu bezeichnen, da dies ungewöhnlich starke zusätzliche Bedingungen impliziert, wie zum Beispiel:
Perfektion (insbesondere bei unvollkommenen und unbekannten Gegnern) ist ein viel schwierigeres Problem als einfach unschlagbar zu sein.
quelle
Dort gibt es zwei konkurrierende Ideen. Zum einen suchen Sie jede mögliche Bewegung, zum anderen entscheiden Sie sich anhand einer Heuristik. Eine Heuristik ist ein System, um eine gute Vermutung anzustellen. Wenn Sie jede mögliche Bewegung durchsuchen, raten Sie nicht mehr.
quelle
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 erfahren, aber es existiert auf jeden Fall.
Siehe auch
quelle
Ich fand diesen Artikel von John MacQuarrie , der auf Arbeiten des "Vaters der Spieltheorie" Ernst Friedrich Ferdinand Zermelo verweist . Es zieht die folgende Schlussfolgerung:
Die Logik scheint mir vernünftig.
quelle
Es ist perfekt lösbar.
Es gibt 10 ^ 50 ungerade Positionen. Nach meiner Einschätzung erfordert jede Position mindestens 64 runde Bytes zum Speichern (jedes Quadrat hat: 2 Zugehörigkeitsbits, 3 Stückbits). Sobald sie zusammengestellt sind, können die Positionen, die Schachmatt sind, identifiziert und Positionen verglichen werden, um eine Beziehung zu bilden, die zeigt, welche Positionen zu anderen Positionen in einem großen Ergebnisbaum führen.
Dann muss das Programm nur die niedrigsten nur eine Seite Schachmattwurzeln finden, wenn so etwas existiert. In jedem Fall wurde Schach am Ende des ersten Absatzes ziemlich einfach gelöst.
quelle
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 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 Bewegungen im O (m) -Raum aufzählen? Sicher, es dauert O (n) Zeit, aber die Argumente aus der Größe des Universums sprechen das nicht direkt an. O (m) Raum könnte nicht einmal sehr viel sein. Könnten Sie für O (m) -Raum während dieser Durchquerung nicht auch verfolgen, ob die Fortsetzung eines Zustands entlang des von Ihnen durchquerten Pfades zu EntwederMayWin, EntwederMayForceDraw, 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 Durchquerung mit dem Gittertreffen.)
Wenn mir nichts fehlt, ist dies ein O (n) Zeit / O (m) Raum-Algorithmus, um zu bestimmen, in welche der möglichen Kategorien Schach fällt. Wikipedia zitiert eine Schätzung für das Alter des Universums zu ungefähr 10 ^ 60. Planck-Zeiten. Lassen Sie uns raten, dass vor der Hitze / Kälte / dem Tod des Universums noch so viel Zeit verbleibt, ohne auf ein kosmologisches Argument einzugehen. Daher müssen wir alle 10 bis 10 Planck-Zeiten oder alle 10 bis 34 Sekunden einen Zug auswerten. Das ist eine unglaublich kurze Zeit (ungefähr 16 Größenordnungen kürzer als die kürzesten jemals beobachteten Zeiten). Lassen Sie uns optimistisch sagen, dass wir mit einer Super-Duper-Good-Implementierung, die über der Linie der gegenwärtigen oder vorausgesehenen Nicht-Quanten-P-ist-eine-richtige-Teilmenge der NP-Technologie läuft, hoffen könnten, sie zu bewerten (nehmen Sie eine Einzelschritt vorwärts, Kategorisieren Sie den resultierenden Zustand als Zwischenzustand oder als einen der drei Endzustände mit einer Rate von 100 MHz (einmal alle 10 ^ -8 Sekunden). Da dieser Algorithmus sehr parallelisierbar ist, benötigen wir für jedes Atom in meinem Körper 10 bis 26 solcher Computer oder etwa einen, 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 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 Positionen benötigen, die vor einem Unentschieden dreimal wiederholt werden müssen? Müssen wir die weglaufende Gruppe wirklich dazu bringen, die Fähigkeit zu demonstrieren, für 50 Züge zu fliehen? Versteht jemand überhaupt, was zum Teufel 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 nur der Kontrolle entgeht oder eine Pattsituation eine en passant Gefangennahme ist? Könnten wir die Auswahl der Teile einschränken, auf die ein Bauer befördert werden kann, wenn die gewünschte Beförderung ohne Königin nicht zu einem sofortigen Scheck oder Schachmatt führt?
Ich bin mir auch nicht sicher, inwieweit das Zulassen eines Hash-basierten Zugriffs auf eine große Datenbank mit späten Spielzuständen und deren möglichen Ergebnissen (die auf vorhandener Hardware und mit vorhandenen Endspieldatenbanken relativ machbar sein könnten) dazu beitragen könnte, die Suche früher zu bereinigen. Natürlich können Sie sich nicht die gesamte Funktion ohne O (n) -Speicher merken, aber Sie könnten eine große Ganzzahl auswählen und sich so viele Endspiele merken, die von jedem möglichen (oder sogar nicht leicht nachweisbar unmöglichen) Endzustand rückwärts aufgezählt werden.
quelle
Ich weiß, dass dies eine kleine Beule ist, aber ich muss meine 5 Cent hier reinstecken. Es ist möglich, dass ein Computer oder eine Person jedes einzelne Schachspiel, an dem er / sie / es teilnimmt, entweder in einem Sieg oder in einer Pattsituation beendet.
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 eine einfache Möglichkeit zur Analyse dieser Informationen finden es als Mind Map, die sich ständig verzweigt.
Der Mittelknoten wäre der Start des Spiels. Jeder Zweig aus jedem Knoten würde eine Bewegung symbolisieren, wobei sich jeder von seinen bretheren Bewegungen 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 Terrabyte an Daten erfordern, da Sie sehr viele Wiederholungsbewegungen ausführen würden, es sei denn, Sie hätten die Zweige zurückgebracht.
Das Speichern solcher Daten wäre jedoch unplausibel, wenn nicht unmöglich. Es wäre möglich, aber nicht plausibel, einen Computer die optimalste Bewegung erkennen zu lassen, um aus den (höchstens) 8 sofort möglichen Bewegungen herauszukommen. Da dieser Computer in der Lage sein müsste, alle Zweige nach dieser Bewegung zu verarbeiten, Zählen Sie bis zu einer Schlussfolgerung alle Schlussfolgerungen, die zu einem Sieg oder einer Pattsituation führen, und reagieren Sie dann auf diese Anzahl von Gewinn-Schlussfolgerungen, um Schlussfolgerungen zu verlieren. Dies würde RAM erfordern, das Daten in den Terrabytes oder mehr verarbeiten kann! Und mit der heutigen Technologie würde ein solcher Computer mehr als das Bankguthaben der 5 reichsten Männer und / oder Frauen der Welt erfordern!
Nach all diesen Überlegungen konnte es also getan werden, aber niemand konnte es 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 Computertechnologie, und eine solche Aufgabe könnte nur auf einer (lassen Sie es uns ganz in die grundlegende Perspektive bringen) ... extrem letztendlich hyper erledigt werden Super-Duper-Computer ... der möglicherweise seit mindestens einem Jahrhundert nicht mehr existieren könnte. Es wird gemacht! Nur nicht in diesem Leben.
quelle
In Ihrem Gedankenexperiment gibt es zwei Fehler:
Wenn Ihre Turing-Maschine nicht "begrenzt" ist (Speicher, Geschwindigkeit, ...), müssen Sie keine Heuristiken verwenden, aber Sie 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, was zu einem oder mehreren optimalen Spielen führen würde.
Der Komplexität der verwendeten Heuristik sind ebenfalls keine Grenzen gesetzt. Wenn Sie ein perfektes Spiel berechnen können, gibt es auch eine Möglichkeit, daraus eine perfekte Heuristik zu berechnen. Bei Bedarf ist es nur eine Funktion, die Schachpositionen wie folgt abbildet: "Wenn ich in dieser Situation bin, ist mein bester Zug M".
Wie andere bereits betont haben, 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ören wird, 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) einige 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 einfach berechnen: N * (N + 1) / 2 mit N = 1000; Ergebnis = 500500. Stellen Sie sich vor, Sie wissen nichts über diese Formel, Sie wissen nichts über mathematische Induktion, Sie wissen nicht einmal, wie man Zahlen multipliziert oder addiert, ... Also, Es ist möglich, dass es einen derzeit unbekannten Algorithmus gibt, der letztendlich die Komplexität dieses Spiels verringert, und es würde nur 5 Minuten dauern, um den besten Zug mit einem aktuellen Computer zu berechnen. Vielleicht wäre es sogar möglich, es als Mensch mit Stift und Papier einzuschätzen, oder sogar in Ihrem Kopf, wenn Sie etwas mehr Zeit haben.
Die schnelle Antwort lautet also: Wenn die Menschheit lange genug überlebt, ist es nur eine Frage der Zeit!
quelle
Es ist vielleicht lösbar, 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 auf den Zustand des Gegners stützen und den "besten" Zug zur Verfügung stellen. Dann machen wir es basierend auf dem nächsten Zustand 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 sehe einfach nicht ein, wie es in jedem Schritt zu einem "perfekten" Zug 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, unabhängig vom nächsten Zug des Gegners (wie bei Tic-Tac-Toe), und ich habe es schwer Zeit, das herauszufinden.
quelle
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 tatsächlich perfektes Schach spielen.
Die rechnerische Komplexität des Schachs macht es jedoch praktisch unmöglich. Aktuelle Motoren verwenden verschiedene Verbesserungen und Heuristiken. Die heutigen Top-Motoren haben die besten Menschen in Bezug auf die Spielstärke übertroffen, aber aufgrund der von ihnen verwendeten Heuristik spielen sie möglicherweise nicht perfekt, wenn sie unendlich lange Zeit haben (z. B. können Hash-Kollisionen zu falschen Ergebnissen führen).
Die nächsten, die wir derzeit in Bezug auf perfektes Spiel haben, sind Endgame-Tabellen . Die typische Technik, um sie zu erzeugen, heißt retrograde Analyse . Derzeit sind alle Positionen mit bis zu sechs Teilen gelöst.
quelle
Ja , in der Mathematik wird Schach als entschlossenes Spiel klassifiziert, das heißt, es hat einen perfekten Algorithmus für jeden ersten Spieler. Dies gilt nachweislich auch für unendliche Schachbretter. Eines Tages wird wahrscheinlich eine Quanten-KI die perfekte Strategie finden. und das Spiel ist weg
Mehr dazu in diesem Video: https://www.youtube.com/watch?v=PN-I6u-AxMg
Es gibt auch Quantenschach, bei dem es keinen mathematischen Beweis dafür gibt, dass es sich um ein bestimmtes Spiel handelt. Http://store.steampowered.com/app/453870/Quantum_Chess/
und dort gibt es ein detailliertes Video über Quantenschach https://chess24.com/en/read/news/quantum-chess
quelle
Natürlich gibt es nur 10 hoch fünfzig mögliche Kombinationen von Teilen auf dem Brett. In Anbetracht dessen müssten Sie, um bei jeder Berechnung zu spielen, weniger als 10 hoch fünfzig machen (einschließlich Wiederholungen multiplizieren Sie diese Zahl mit 3). Es gibt also weniger als zehn hoch hundert Schachzüge. Wählen Sie einfach diejenigen aus, die zu Schachmatt führen, und Sie können loslegen
quelle
64-Bit-Mathematik (= Schachbrett) und bitweise Operatoren (= nächste mögliche Züge) sind alles, was Sie brauchen. Also einfach. Brute Force findet normalerweise den besten Weg. Natürlich gibt es keinen universellen Algorithmus für alle Positionen. Im wirklichen Leben ist die Berechnung auch zeitlich begrenzt, das Timeout stoppt sie. Ein gutes Schachprogramm bedeutet schweren Code (bestanden, doppelte Bauern usw.). Kleiner Code kann nicht sehr stark sein. Das Öffnen und Beenden von Datenbanken spart nur Verarbeitungszeit, eine Art vorverarbeiteter Daten. Das Gerät, meine ich - das Betriebssystem, das Threading, die Umgebung und die Hardware definieren die Anforderungen. Programmiersprache ist wichtig. Auf jeden Fall ist der Entwicklungsprozess interessant.
quelle