Der beste Algorithmus zur Verbesserung von Alpha-Beta?


8

Ich studiere KI. Mein Lehrer gab uns den Quellcode eines schachartigen Spiels und bat uns, ihn zu verbessern. Meine Übung besteht darin, den in diesem Spiel implementierten Alpha / Beta-Algorithmus zu verbessern. Der Programmierer verwendet bereits Transpositionstabellen, MTD (f) mit Alpha / Beta + -Speicher (MTD (f) ist der beste Algorithmus, den ich bei weitem kenne). Gibt es also einen besseren Algorithmus zur Verbesserung der Alpha-Beta-Suche oder eine gute Möglichkeit, MTD (f) beim Codieren eines Spiels zu implementieren?

Antworten:


6

Ich werde allgemein dann genauer antworten. Erstens gehe ich meiner Erfahrung nach, wenn ein Professor fragt, ob es einen besseren Weg gibt. Ich gehe sofort zum Buch und suche nach Dingen, die der Autor als Mängel des fraglichen Algorithmus notiert hat. Zweitens betrachte ich Optimierungen, die mir in der Vergangenheit geholfen haben.

Bei einem Baumsuchalgorithmus wie Alpha-Beta würde ich eine Heuristik hinzufügen, die die Anzahl der Suchvorgänge verringert oder dazu führt, dass sie zuerst an wahrscheinlicheren Stellen angezeigt wird.

Ich würde Pfaden Gewichte zuweisen, die im Baum basierend auf früheren Ergebnissen verwendet werden können. Wenn ein Pfad in der Vergangenheit zu einer höheren Punktzahl geführt hat, ist dies wahrscheinlich ein guter Weg, um ihn erneut zu nehmen. Um es kurz zu machen, fügen Sie den Pfaden Heuristiken hinzu und wählen Sie diese, damit der Algorithmus früher beendet werden kann.

Beachten Sie, dass ich mich nicht wirklich an den spezifischen Algorithmus erinnere, nur dass es sich um einen Baum handelt und die naive Herangehensweise daran diese Heuristik nicht beinhaltet.


Ich denke, Sie sprechen über en.wikipedia.org/wiki/Killer_heuristic
Adam

Schaut so aus. Ich habe versucht, eine weniger spezifische Antwort zu geben, um bei zukünftigen Problemen zu helfen, da der Ansatz alle gleich ist. Das eigentliche Problem war nicht, dass Risa die Alpha-Beta-Optimierung nicht kennt, sondern dass sie den gemeinsamen Ansatz von Optimierungen kennen müssen, insbesondere in der KI, da dies ein sehr suchbezogenes Feld ist.
Brandon

4

Sie haben weder das Beschneiden von Nullbewegungen noch die Reduzierung von verspäteten Bewegungen erwähnt. Sie sind relativ einfach zu implementieren und reduzieren die Suchgröße noch effektiver als das Alpha-Beta-Bereinigen. Sucherweiterungen sind auch wichtig, um den Horizonteffekt abzuschwächen. Insbesondere die Ruhesuche ist eine sehr wichtige Komponente für eine Schach-KI.


1

Schauen Sie sich die Reihenfolge der Bewegungen und die Suche nach Hauptvariationen an

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.