Erklärung
Bei der iterativen Vertiefung sucht eine zunächst mit einer kleinen Grenze und wiederholt die Analyse anschließend mit schrittweise größeren Grenzen. Im Schach wird Tiefe häufig in Plies gemessen, wobei ein Ply ein Zug nur einer Seite ist.
Das wirkt zunächst verschwenderisch, weil Stellungen nahe am Anfang mehrfach besucht werden. Frühere Iterationen liefern jedoch wertvolle Informationen: einen vorläufig besten Zug, die Hauptvariante, also die momentan als beste angesehene Zugfolge, gespeicherte Ergebnisse und Hinweise für die . Werden in der nächsten Iteration vielversprechende Möglichkeiten zuerst untersucht, können häufig mehr Zweige früh beendet werden, was einen großen Teil der Wiederholung ausgleicht.
Der deutlichste praktische Vorteil liegt in der Zeitsteuerung. Wenn die Uhr die Engine während einer tieferen Iteration zum Abbruch zwingt, besitzt sie noch immer das vollständige Ergebnis der vorherigen. Sie muss nicht alles auf eine Suche setzen, die möglicherweise unvollendet bleibt.
Iterative Vertiefung bedeutet nicht, nur eine bevorzugte Variante zu verlängern. Jede Iteration betrachtet die Ausgangsstellung mit einer größeren Grenze erneut, auch wenn selektive Techniken innerhalb des Baums unterschiedliche lokale Tiefen zuweisen können. Sie verschiebt außerdem den nach außen, ohne ihn zu beseitigen.
Verwendung und Kontext
Oberflächen zeigen häufig die Tiefe der aktuellen Iteration an, doch eine größere Zahl allein beweist nicht, dass zwei verschiedene Engines vergleichbare Arbeit geleistet haben.
Häufige Verwechslungen
Nutzlose Wiederholung
Frühere Arbeit liefert Zugsortierung, eine Hauptvariante und gespeicherte Suchinformationen. Die nächste Iteration beginnt daher nicht wirklich bei null.
Vertiefung und selektive Erweiterung
Iterative Vertiefung erhöht die Gesamtgrenze zwischen den Durchläufen. Eine Erweiterung fügt bestimmten Varianten lokale Suchtiefe hinzu.
Quellen
- 1.Depth-first iterative-deepening: An optimal admissible tree search, Artificial Intelligence / Elsevier
- 2.Iterative Deepening, Chess Programming Wiki
- 3.search.cpp, Stockfish
