Minmax Algorithmus Verständnisproblem

member42

Aktives Mitglied
Hallo,
ich versuche gerade den Pseudocode für Minmax Algorithmus von Wikipedia zu verstehen.

Code:
 int gewuenschteTiefe = 4;
 gespeicherterZug = NULL;

int max(int spieler, int tiefe) {
   if (tiefe == 0 or keineZuegeMehr(spieler))
      return bewerten();
   int maxWert = -unendlich;
   generiereMoeglicheZuege(spieler);
   while (noch Zug da) {
      fuehreNaechstenZugAus();
      int wert = min(-spieler, tiefe-1);
      macheZugRueckgaengig();
      if (wert > maxWert) {
         maxWert = wert;
         if (tiefe == gewuenschteTiefe)
            gespeicherterZug = Zug;
      }
   }
   return maxWert;
 }

max() und min() rufen sich gegenseitig mit verringerte Tiefe auf, so werden alle möglichen Konfigurationen bis zur Suchtiefe erstellt und dann mit einer Bewertungsfunktion bewertet.

Aber wie wird dieses (if tiefe == gewuenschteTiefe) erreicht? tiefe wird doch eigentlich immer um 1 verringert. Wird an der Stelle dann auch der beste Zug gespeichert und von einem besseren überschrieben?
 
Aber wie wird dieses (if tiefe == gewuenschteTiefe) erreicht? tiefe wird doch eigentlich immer um 1 verringert.
tiefe wird nicht verringert, es wird nur eine "andere" Methode mit einer niedrigeren Tiefe aufgerufen.

Java:
void a(int zahl) {
    System.out.println(zahl);
    b(zahl-1);
    System.out.println(zahl);
}
Beim Aufruf von a(10) wirst Du von Methode a zweimal die Zahl 10 ausgegeben bekommen.
 

Neue Themen


Zurück
Oben