Thanx, an den Beispielen kann man es erklären.
Dein erstes Beispiel mit Suchtiefe 2 ist korrekt.
Und wir sehen ja auch beide, wie minimax und alphabeta eine gleiche Lösung bringen.
Das zweite Beispiel mit Suchtiefe 3 ist fehlerhaft, da du einen Cut machst, der gemäß alphabeta nicht gerechtfertigt ist.
Dass die Verwaltung des Cuts danach auch fehlerhaft geschieht, sei dabei gleich miterwähnt.
Die
linke Hälfte des Baumes bewertest du korrekt
Auch den alphabeta-Cut, der zu '6x' führt, erkanntest du korrekt.
Der erste Zug (gemeint: der erste in der Zugliste für den ersten tatsächlichen Zug) des Anziehenden bringt also den Wert 8, und er möchte schauen, ob ein anderer Zug aus der Liste noch einen kleineren Wert bringt. Dann würde er ja den nehmen wollen.
Die ersten beiden Antwortzüge auf seinen zweiten Zug bringen wirklich mit 1 und 4 kleinere Werte. Hier kann also sicher kein Cut gemacht werden, weil der Anziehende doch unbedingt prüfen will, ob auch der letzte Zug des Nachziehenden einen kleinen Wert bringt.
Alphabeta würde also sicher
nicht in dieser Situation einen Cut machen.
Alphabeta würde hier
nur einen Cut machen, wenn der Nachziehende einen für ihn guten (größer als 8) Antwortzug gefunden hätte. Der Anziehende würde
Wie kommst du auf diesen Cut?Weil bei kleiner Suchtiefe an dieser Stelle ein Cut war?
Alphabeta erlaubt dir nicht, diesen Cut zu übernehmen. Du musst jeden Suchdurchgang mit einer Tiefe für sich betrachten. Hier können solche Cuts aber über mehrere Ebenen hinweg gelten.
Wenn du als Entwickler dies aber trotzdem tust, also einen Cut aus kleinerer Suchtiefe einfach bei der tieferen Suche übernimmst, so hast du einen deutlich abgewandelten und eben mutmaßenden Algorithmus. Sowas könnte sinnvoll sein. Dies zu Prüfen wäre dann deine Aufgabe. Das minimax-Ergebnis liefert dieser nicht-alphabeta-Algorithmus dann natürlich nicht.
Vollkommen unklar ist mir übrigens geblieben, wie du auf die Idee gekommen bis, der Ausgangsstellung für die yy den Wert 7 zu geben.
Wenn du
keine Folgestellungen bewertest, dann muss auch die dazugehörende Ausgangsstellung undbewertet bleiben, und da ist nur dann legitim, wenn du gemäß Alhabeta erkannt hast, dass dieser Wert eh irrelevant ist.
Und dass du diesen unbegründetenWert dann noch weiter nach ober reichst, verfälscht das Ergebnis natürlich noch mehr.
Du hast also:
1) einen unerlaubten Cut durchgeführt, der das Ergebnis verfälscht
2) diesen Cut dann auch noch fehlerhaft verwaltetBenno
PS:Ich habe mit Toga mit irgendwie Ähnlichem mal herumprobiert.
Die Suche macht hier prinzipiell:
für den 1. ZUg aus der Liste eine (alpha,beta)-Analyse.
für die weiteren Züge dann jeweils (alpha,alpha+1)-Analysen.
Toga erkennt so zunächst nur, ob diese Züge besser oder schlechter als der erste sind.
Und wenn er als besser erkannt wird, bequemt sich Toga für diesen Zug, eine (alpha,beta)-Analyse nachzuholen und den ZUg wirklich zu bewerten.
Und ich ließ diese (alpha,alpha+1)-Analyse mal mit kleinerer Tiefe laufen.
War aber nichts. 'Mein' Toga wurde dadurch schlapper