Wie bewerten Schachmaschinen eine Position, wenn sich die Position mitten in einem Austausch befindet?

7

Im Minimax-Algorithmus führen Schach-Engines eine Tiefensuche durch, soweit sie im Voraus berechnen können, und bewerten dann alle diese Endpositionen. Mit diesen Auswertungen arbeiten sie dann jeweils eine Bewegung rückwärts und weisen den vorherigen Positionen Werte zu. Schließlich erreichen sie die aktuelle Startposition und geben ihr einen Bewertungswert.

Wie würden Minimax-Schach-Engines jedoch eine endgültige Position bewerten, wenn sie sich mitten in einem Austausch befänden? Nehmen Sie zum Beispiel Folgendes:

  1. e4 e5 2. Sf3 Sc6 3. Lb5 a6 4. Lxc6

Nehmen wir an, die Tiefenkapazität eines Motors betrug 7 Lagen (ein Zug von beiden Spielern) und erreichte diese Position als eine der letzten Positionen in seinen Berechnungen von Beginn des Spiels an. Es wäre nicht in der Lage, weiter zu rechnen (und zu sehen, dass Schwarz 4 ... dxc6 spielen könnte) und müsste diese Position jetzt bewerten. Mir scheint, es müsste dieser Endposition einen Vorteil von +3 für Weiß zuweisen, aber ich weiß, dass Schach-Engines einen Weg finden, dies zu umgehen.

Meine Frage ist, wie kommen Schachmaschinen um dieses Szenario herum?

Trägheitsunwissenheit
quelle

Antworten:

12

Eine gute Schachmaschine stoppt nicht nach einer vorgegebenen Anzahl von Zügen, sondern sucht weiter, bis die Position "ruhig" ist, was grob gesagt bedeutet, dass keine Erfassungen oder Überprüfungen anstehen. Siehe Quiescence Suche in wikispaces für eine ausführlichere Erklärung chessprogramming.

itub
quelle
4

@itub ist absolut richtig. Im Allgemeinen stoppt die Computerschachmaschine erst, wenn die Position zumindest in Bezug auf die Materialerfassung klar ist. Wenn Sie eine Engine auffordern, nach Tiefe = 10 zu suchen, bedeutet dies nicht, dass Variationen bis zu Tiefe = 10 gesucht werden.

Die Ruhesuche ist wichtig, um den Horizonteffekt zu minimieren.

SmallChess
quelle
Es kann sinnvoll sein zu beachten, dass in den meisten Positionen die Anzahl der möglichen Eroberungen und Schecks eher begrenzt ist und die Anzahl der verfügbaren Züge in den meisten Fällen, in denen der König in Schach ist, eher begrenzt ist. Eine Engine, die bis zur Tiefe 6 arbeiten soll, sucht möglicherweise, während ein Tiefenzähler kleiner als 96 ist, und erhöht diesen Zähler nach einer Nicht-Prüfung-Nicht-Erfassung um 16, nach einer Erfassung um 1 und bei einer Bewegung um N beinhaltet eine Überprüfung und es gab N solche Bewegungen in der aktuellen Zeile. Ziemlich einfach, und ich denke, so funktionieren viele Schachprogramme der 1980er Jahre.
Supercat