Logo NEXUS

NEXUS didattica

← Torna indietro
Informatica / Lezione Teorico-Pratica

Visita in Profondità (DFS)

Algoritmo di esplorazione esaustiva dei grafi basato su strategia ricorsiva o pila (LIFO).

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à

// Implementazione ricorsiva DFS in C++ con std::vector #include <vector> #include <iostream> void dfsUtil(int curr, const std::vector<std::vector<int>>& adjList, std::vector<bool>& visited) { visited[curr] = true; std::cout << curr << " "; for (int neighbor : adjList[curr]) { if (!visited[neighbor]) { dfsUtil(neighbor, adjList, visited); } } } void dfs(int startNode, const std::vector<std::vector<int>>& adjList) { int n = adjList.size(); std::vector<bool> visited(n, false); dfsUtil(startNode, adjList, visited); }

3. Simulatore Interattivo: Configurazione Esplorazione DFS

Configura i parametri di esecuzione della visita ricorsiva in profondità impostando i nodi e la sorgente di avvio.

dfs-engine@nexus-core:~# Depth-First Simulation
> Inserisci i parametri e avvia la simulazione dello stack di chiamata ricorsivo LIFO.