Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Iterative_deepening_depth-first_search
Iterative_deepening_depth-first_search
Iterative deepening depth-first search - Teknopedia
Vai al contenuto
Menu principale
Navigazione
  • Pagina principale
  • Ultime modifiche
  • Una voce a caso
  • Nelle vicinanze
  • Vetrina
  • Aiuto
  • Sportello informazioni
  • Pagine speciali
Comunità
  • Portale Comunità
  • Bar
  • Il Teknopediano
  • Contatti
Teknopedia L'enciclopedia libera
Ricerca
  • Fai una donazione
  • registrati
  • entra
  • Fai una donazione
  • registrati
  • entra

Indice

  • Inizio
  • 1 Valutazione della strategia
    • 1.1 Ottimalità e completezza
    • 1.2 Complessità spaziale e temporale
  • 2 Algoritmo
  • 3 Note
  • 4 Collegamenti esterni

Iterative deepening depth-first search

  • Deutsch
  • English
  • Español
  • فارسی
  • עברית
  • Magyar
  • 日本語
  • 한국어
  • Nederlands
  • Српски / srpski
  • ไทย
  • Українська
  • 中文
Modifica collegamenti
  • Voce
  • Discussione
  • Leggi
  • Modifica
  • Modifica wikitesto
  • Cronologia
Strumenti
Azioni
  • Leggi
  • Modifica
  • Modifica wikitesto
  • Cronologia
Generale
  • Puntano qui
  • Modifiche correlate
  • Link permanente
  • Informazioni pagina
  • Cita questa voce
  • Ottieni URL breve
  • Scarica codice QR
Stampa/esporta
  • Crea un libro
  • Scarica come PDF
  • Versione stampabile
In altri progetti
  • Elemento Wikidata
Aspetto
Da Teknopedia, l'enciclopedia libera.
Iterative deepening depth-first search
ClasseAlgoritmo di ricerca
Struttura datiGrafo
Caso peggiore temporalmente O ( b d ) {\displaystyle O(b^{d})} {\displaystyle O(b^{d})}[1]
Caso peggiore spazialmente O ( d ) {\displaystyle O(d)} {\displaystyle O(d)}[2]
OttimaleSì
CompletoSì
Manuale

Iterative deepening depth-first search o IDDFS è una strategia di ricerca in uno spazio di stati (state space search) nella quale è eseguita ripetutamente una ricerca depth-limited, incrementando il limite di profondità (depth limit) ad ogni iterazione sino al raggiungimento di d {\displaystyle d} {\displaystyle d}, la profondità più piccola in cui trovare lo stato obiettivo.[3]

È una strategia di ricerca particolarmente efficace, poiché ad ogni iterazione, visita i nodi nell'albero di ricerca nello stesso ordine di una ricerca depth-first, ma in questo caso l'ordine cumulativo nel quale i nodi sono visitati per primi (assumendo l'assenza di pruning) è effettivamente una ricerca in ampiezza.

Valutazione della strategia

[modifica | modifica wikitesto]

Ottimalità e completezza

[modifica | modifica wikitesto]

La ricerca iterative deepening depth-first combina l'efficienza in spazio della ricerca depth-first e la completezza della ricerca breadth-first (quando il branching factor è finito). Dal momento che la strategia restituisce lo stato soluzione legato al nodo con la profondità minore nell'albero di ricerca, è ottimale quando il costo del percorso è una funzione non-decrescente (monotona) della profondità del nodo.

Complessità spaziale e temporale

[modifica | modifica wikitesto]

La complessità in spazio dell'IDDFS è O ( d ) {\displaystyle O(d)} {\displaystyle O(d)},[2] dove d {\displaystyle d} {\displaystyle d} è la profondità della soluzione più vicina alla radice. Questo è dovuto al fatto che l'algoritmo non è altro che un susseguirsi di ricerche in profondità, quindi in memoria verrà mantenuto uno stack di al più d {\displaystyle d} {\displaystyle d} stati contemporaneamente.

L'iterative deepening genera più volte gli stessi nodi e ciò potrebbe sembrare dispendioso, ma in fin dei conti non lo è tanto, in quanto in un albero la maggior parte dei nodi sono nel livello più basso, quindi non preoccupa molto il fatto che i livelli superiori siano visitati più volte.[3] Maggiore è il branching factor, minore è l'overhead dell'espansione ripetuta degli stati intermedi, ma anche quando il branching factor è 2, l'iterative deepening spende solo il doppio in tempo rispetto ad una ricerca breadth-first completa.

Il maggior vantaggio in questo algoritmo nella ricerca su alberi è che le prime ricerche tendono a migliorare le euristiche maggiormente utilizzate, come la euristica killer e la potatura alfa-beta, e quindi si ha una stima più accurata del peso dei vari nodi alla fine della ricerca in profondità, e il completamento della ricerca avviene più velocemente in quanto effettuata in un ordine migliore.

Infatti la complessità in tempo dell'IDDFS in alberi bilanciati è dello stesso ordine della ricerca in profondità — O ( b d ) {\displaystyle O(b^{d})} {\displaystyle O(b^{d})}, dove b {\displaystyle b} {\displaystyle b} è il branching factor.

In una ricerca iterative deepening i nodi posti in basso sono espansi una volta, quelli successivi all'ultimo livello sono espansi due volte, e così via, sino alla radice dell'albero di ricerca, che è espanso d + 1 volte. Così il numero totale di espansioni in una ricerca iterative deepening è

( d + 1 ) b 0 + d b 1 + ( d − 1 ) b 2 + ⋯ + 3 b d − 2 + 2 b d − 1 + b d {\displaystyle (d+1)b^{0}+db^{1}+(d-1)b^{2}+\dots +3b^{d-2}+2b^{d-1}+b^{d}} {\displaystyle (d+1)b^{0}+db^{1}+(d-1)b^{2}+\dots +3b^{d-2}+2b^{d-1}+b^{d}}

Sia ad esempio b = 10 e d = 5, allora si avrà

6 + 50 + 400 + 3 , 000 + 20 , 000 + 100 , 000 = 123 , 456 {\displaystyle 6+50+400+3,000+20,000+100,000=123,456} {\displaystyle 6+50+400+3,000+20,000+100,000=123,456}

Una ricerca iterative deepening che parte dalla profondità 1 e cerca per tutte le strade sino alla profondità d espande circa l'11 % di nodi in più rispetto a una singola ricerca breadth-first o a una ricerca depth-limited con limite d {\displaystyle d} {\displaystyle d}, quando b = 10 {\displaystyle b=10} {\displaystyle b=10}.

In generale, l'iterative deepening è la ricerca preferita quando c'è un vasto spazio di ricerca e la profondità della soluzione non è nota a priori.

Algoritmo

[modifica | modifica wikitesto]

Questo algoritmo (in pseudocodice) è una possibile implementazione della strategia di iterative deepening: sfrutta l'algoritmo di ricerca in profondità limitata incrementando a ogni iterazione la profondità massima a cui cercare.

IterativeDeepening(root, goal){
  for(profondità = 1; root != goal; profondità++) => : root = DLS(root, goal, profondità) 
}

DepthLimitedSearch(nodo, goal, profondità){
  if(profondità >= 0):
    if(nodo == goal) => : return(nodo)
    foreach(child in visita(nodo)) => : DepthLimitedSearch(child, goal, profondità-1)
}

Note

[modifica | modifica wikitesto]
  1. ^ dove b {\displaystyle b} {\displaystyle b} è il fattore di ramificazione (branching factor) e d {\displaystyle d} {\displaystyle d} è la profondità della soluzione più vicina alla radice
  2. ^ a b (EN) Richard E. KORF, Depth-first iterative deepening (PDF), 1985.
  3. ^ a b Stuart Russell and Peter Norvig, Artificial Intelligence A Modern Approach 2nd Edition, pp. 88-90, Upper Saddle River, New Jersey, Pearson Education, 2003, ISBN 0-13-080302-2.

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Denis Howe, iterative deepening, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
V · D · M
Algoritmi di ricerca su grafi ed alberi
RicercaPotatura alfa-beta · Algoritmo di Bellman-Ford · Algoritmo di Tarjan · Bidirectional search · D* · Depth-limited search · Algoritmo di Dijkstra · Algoritmo di Floyd-Warshall · Hill climbing · Iterative deepening depth-first search · Algoritmo di Johnson · Lexicographic breadth-first search · Ricerca in ampiezza · Ricerca in profondità · Uniform-cost search · Ricerca ad albero Monte Carlo (MCTS)
Ricerca informataAlgoritmo A* · Algoritmo B* · Beam search · Best-first search · Iterative deepening A* · Ricerca best-first ricorsiva · Memory-bounded A* (SMA*)
Voci correlateProgrammazione dinamica
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Iterative_deepening_depth-first_search&oldid=136193512"
Categorie:
  • Algoritmi di ricerca
  • Algoritmi sui grafi
Categoria nascosta:
  • Pagine che utilizzano collegamenti magici ISBN
  • Questa pagina è stata modificata per l'ultima volta il 29 ott 2023 alle 15:37.
  • Il testo è disponibile secondo la licenza Creative Commons Attribuzione-Condividi allo stesso modo; possono applicarsi condizioni ulteriori. Vedi le condizioni d'uso per i dettagli.
  • Informativa sulla privacy
  • Informazioni su Teknopedia
  • Avvertenze
  • Contatti legali e di sicurezza
  • Codice di condotta
  • Sviluppatori
  • Statistiche
  • Dichiarazione sui cookie
  • Versione mobile
  • Wikimedia Foundation
  • Powered by MediaWiki
Iterative deepening depth-first search
Aggiungi argomento

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022