Explicație
Adâncirea iterativă face ca un să caute mai întâi cu o limită mică și apoi să repete analiza cu limite din ce în ce mai mari. În șah, adâncimea este măsurată frecvent în plies, unde un ply este o mutare efectuată de o singură parte.
La început, aceasta pare o risipă, deoarece pozițiile apropiate de start sunt vizitate în mod repetat. Iterațiile anterioare produc însă informații valoroase: o cea mai bună mutare provizorie, varianta principală, adică linia considerată în acel moment cea mai bună, rezultate stocate și indicii pentru . Căutarea opțiunilor promițătoare mai întâi în iterația următoare permite adesea oprirea timpurie a mai multor ramuri și compensează mare parte din munca repetată.
Cel mai clar avantaj practic este gestionarea timpului. Dacă ceasul obligă motorul să se oprească în timpul unei iterații mai adânci, acesta păstrează rezultatul complet al iterației anterioare. Nu trebuie să riște totul într-o căutare care ar putea rămâne neterminată.
Adâncirea iterativă nu înseamnă extinderea unei singure variante favorite. Fiecare iterație reexaminează poziția inițială cu o limită mai mare, deși tehnicile selective pot atribui adâncimi locale diferite în interiorul arborelui. Ea deplasează spre exterior și , fără să îl elimine.
Utilizare și context
Interfețele afișează adesea adâncimea iterației curente, însă un număr mai mare nu demonstrează singur că două motoare diferite au efectuat o muncă comparabilă.
Confuzii frecvente
Repetiție inutilă
Munca anterioară furnizează ordinea mutărilor, o variantă principală și informații stocate ale căutării, astfel că iterația următoare nu pornește cu adevărat de la zero.
Adâncire și extensie selectivă
Adâncirea iterativă mărește limita generală între treceri, iar o extensie adaugă căutare locală anumitor variante.
Surse
- 1.Depth-first iterative-deepening: An optimal admissible tree search, Artificial Intelligence / Elsevier
- 2.Iterative Deepening, Chess Programming Wiki
- 3.search.cpp, Stockfish
