int miniMax(int spieler, int tiefe,
int alpha, int beta) {
if (tiefe == 0 or keineZuegeMehr(spieler))
return bewerten(spieler);
int maxWert = alpha;
Zugliste = generiereMoeglicheZuege(spieler);
for each (Zug in Zugliste) {
fuehreZugAus(Zug);
int wert = -miniMax(-spieler, tiefe-1,
-beta, -maxWert);
macheZugRueckgaengig(Zug);
if (wert > maxWert) {
maxWert = wert;
if (tiefe == gewuenschteTiefe)
gespeicherterZug = Zug;
if (maxWert >= beta)
break;
}
}
return maxWert;
}
maxwert=alpha
auch für verdächtig, weil damit der negierte beta-Wert der tiefe-1 zum Vergleich wert > maxwert
genommen wird. Das könnte bessere Züge der aktuellen Suchtiefe ausblenden, glaube ich.-unendlich
zugewiesen (, um sicherzustellen, dass maxwert in der aktuellen Tiefe ermittelt wird(?), wodurch alle Züge der aktuelle Tiefe einbezogen werden).Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill