1. Cos'è la Visita in Profondità (Depth-First Search)?
La DFS (Depth-First Search) è un algoritmo di attraversamento dei grafi che procede esplorando il più in fondo possibile lungo ciascun ramo prima di effettuare il retrostepping (tornare indietro). Partendo da un nodo sorgente, l'algoritmo seleziona un vicino non visitato e ripete il procedimento finché non incontra un vicolo cieco, momento in cui risale al nodo precedente per esplorare altre ramificazioni.
Concettualmente, la DFS sfrutta una struttura dati di tipo Pila (Stack), basata sulla politica LIFO (Last In, First Out). Questa logica è gestita naturalmente in modo elegante attraverso le chiamate di funzione ricorsive (sfruttando lo stack di sistema dei programmi).
2. Proprietà e Complessità
- Applicazioni principali: Rilevamento di cicli nel grafo, ordinamento topologico, calcolo delle componenti fortemente connesse e risoluzione di labirinti/puzzle.
- Complessità Temporale $\mathcal{O}(V + E)$: Ciascun vertice e ciascun arco del grafo vengono esaminati esattamente una volta (supponendo di utilizzare una lista di adiacenza).
- Complessità Spaziale $\mathcal{O}(V)$: Lo spazio è occupato dal vettore booleano di marcatura dei nodi visitati e dalla pila di ricorsione (o esplicita), la cui profondità massima nel caso peggiore (grafo lineare) coincide con il numero di vertici $V$.
3. Simulatore Interattivo: Configurazione Esplorazione DFS
Configura i parametri di esecuzione della visita ricorsiva in profondità impostando i nodi e la sorgente di avvio.