|
Der Nega-Scout-Algorithmus
Zunächst sei erwähnt, daß der Nega-Scout-Algorithmus
nicht zwangsläufig besser ist als der Alpha-Beta. Unter welchen
Umständen er für mehr Schnitte sorgt und somit insgesamt
zu einer Performance-
Die Idee des Nega-Scout-
Diese Vorgehensweise ist vor allem dann effektiv, wenn
mit geeigneten Heuristiken sichergestellt wird, daß auch
tatsächlich aussichtsreiche Züge zuerst untersucht werden.
Die Ersparnis der Suche mit Nullfenster ist dann in der Regel
so groß, daß der Mehraufwand gelegentlicher Wiederholungssuchen
bei weitem aufgewogen wird.
Der nachfolgend vorgestellte Algorithmus implementiert diese Idee.
Die Unterschiede zum Alpha-Beta sind (bis auf die Namensgebung)
blau gekennzeichnet.
Konventionen:
Es gelten die gleichen Konventionen wie beim
Alpha-Beta.
Prozeduren:
Die zusätzlich verwendete Funktiom First
soll das erste Element der Liste zurückgeben.
PreHeuristic (optional) sorgt für eine grobe
Vorsortierung der Züge in MoveList.
Im wesentlichen ist nur der Teil für die Wiederholungssuche neu. Sie
wird durchgeführt, wenn der untersuchte Zug nicht der erste war, das
Ergebnis der (ersten) Suche besser als der Alpha-Wert (s.o.) aber
nicht schlechter als der Beta-Wert (sonst fällt diese Variante
sowieso einem Schnitt zum Opfer) und noch zwei mindestens Halbzüge bis
zum erreichen der maximalen Tiefe fehlen. Bei der Wiederholungssuche
kann der bessere Wert Value als neuer "Alpha"-Wert
genommen werden.
Beispiel: Der unten dargestellte Baum veranschaulicht
die Funktionsweise des Nega-
Würde die zweite Variante von Schwarz den zweiten Zug von Weiß
nicht wiederlegen (also die Bewertungen im gelb markierten Unterbaum
wären größer als sechs), so müßte der gesamte rechte Teilbaum nocheinmal
durchsucht werden. Die Wiederholungssuche ist unten veranschaulicht:
hier befindet sich die korrekte Bewertung sogar in dem zuvor durch die
Nullfenstersuche abgeschnittenen Blatt.
An diesem kleinen Beispiel wird bereits klar: Wiederholungssuchen sind
gar nicht schön. Es ist daher empfehlenswert nach der Generierung der
Züge eine grobe Vorsortierung derselben vorzunehmen; sonst ist es
durchaus möglich, daß der Nega-Scout langsamer wird als der Alpha-Beta
(hier ist es besonders sinnvoll, die Suchtiefe sukzessiv zu erhöhen
und die Züge der Ausgangsstellung zwischendurch zu sortieren;
siehe auch Anmerkungen in
LittleChess)
Anregungen:
|