Logo NEXUS

NEXUS didattica

← Torna indietro
Informatica / Lezione Teorico-Pratica

Visita in Ampiezza (BFS)

Algoritmo di esplorazione sistematica dei grafi per livelli successivi basato su struttura dati Coda (FIFO).

1. Cos'è la Visita in Ampiezza (Breadth-First Search)?

La BFS (Breadth-First Search) è un algoritmo di attraversamento e ricerca in un grafo che esplora i nodi procedendo per strati concentrici (o livelli). Partendo da un vertice sorgente $s$, l'algoritmo visita prima tutti i vicini diretti (distanza 1), poi i vicini dei vicini (distanza 2) e così via, prima di approfondire ulteriormente la ricerca.

A differenza della DFS che utilizza una pila (o la ricorsione), la BFS richiede tassativamente una struttura dati di tipo Coda (Queue) che opera secondo la politica FIFO (First In, First Out), garantendo l'ordine corretto di visita per livelli.

2. Proprietà e Complessità

// Implementazione BFS in C++ con std::vector e std::queue #include <vector> #include <queue> #include <iostream> void bfs(int startNode, const std::vector<std::vector<int>>& adjList) { int n = adjList.size(); std::vector<bool> visited(n, false); std::queue<int> q; visited[startNode] = true; q.push(startNode); while (!q.empty()) { int curr = q.front(); q.pop(); std::cout << curr << " "; for (int neighbor : adjList[curr]) { if (!visited[neighbor]) { visited[neighbor] = true; q.push(neighbor); } } } }

3. Simulatore Interattivo: Configurazione Esplorazione BFS

Simula i parametri operativi dell'attraversamento BFS inserendo il numero di vertici del grafo e il nodo di partenza.

bfs-engine@nexus-core:~# Breadth-First Simulation
> Inserisci i parametri e avvia la simulazione della struttura di coda FIFO.