Algoritmo di visita in ampiezza per grafi e alberi, ideale per trovare percorsi minimi.
L'algoritmo Breadth-First Search esplora un grafo o un albero visitando i nodi livello per livello. È impiegato di frequente nelle coding interview per trovare il percorso più breve in strutture senza pesi o per verificare la connettività dei nodi.
Utilizza BFS quando:
Variante | Descrizione |
---|---|
Iterativo con coda | Implementazione standard che sfrutta una struttura FIFO |
Bidirezionale | Partenza contemporanea da sorgente e destinazione per ridurre lo spazio di ricerca |
Layered BFS | Utile per costruire livelli o per problemi di flusso |
from collections import deque def shortest_path(grid, start, end): rows, cols = len(grid), len(grid[0]) queue = deque([(*start, 0)]) visited = set([start]) while queue: r, c, dist = queue.popleft() if (r, c) == end: return dist for dr, dc in [(1,0), (-1,0), (0,1), (0,-1)]: nr, nc = r + dr, c + dc if 0 <= nr < rows and 0 <= nc < cols and grid[nr][nc] != '#' and (nr, nc) not in visited: visited.add((nr, nc)) queue.append((nr, nc, dist + 1)) return -1
✅ Complessità:
O(V + E)
O(V)
Nome | Difficoltà | Pattern | Link |
---|---|---|---|
Binary Tree Level Order Traversal | Easy | BFS di albero | Leetcode #102 |
Shortest Path in Binary Matrix | Medium | BFS su griglia | Leetcode #1091 |
Word Ladder | Hard | BFS su grafo | Leetcode #127 |
Ricevi tips settimanali, nuovi pattern e aggiornamenti esclusivi per migliorare costantemente le tue skills algoritmiche
No spam, unsubscribe anytime. Privacy policy compliant.