Graph Breadth-First Search
BFS explores a graph level by level using a queue. In an unweighted graph it finds shortest paths by number of edges.
Beginne mit diesem mentalen Modell
BFS explores a graph level by level using a queue. In an unweighted graph it finds shortest paths by number of edges.
So funktioniert es – ohne unnötigen Jargon
Enqueue the start and mark it visited.
Repeatedly dequeue one node and enqueue unseen neighbors.
Lies den Algorithmus als Folge von Entscheidungen
Define directed/undirected and weighted/unweighted assumptions.
Choose the graph representation.
Track algorithm state and handle disconnected/cyclic cases explicitly.
Read a tiny input by hand and write down the state after every important operation. For Graph Breadth-First Search, the goal is to make the invariant visible rather than to memorize code.
function bfs(graph, start) {
const seen = new Set([start]);
const queue = [start];
let head = 0;
while (head < queue.length) {
const node = queue[head++];
for (const next of graph[node] ?? []) {
if (!seen.has(next)) {
seen.add(next);
queue.push(next);
}
}
}
return seen;
}Lerne die Syntax nicht auswendig. Folge dem Zustand, der sich in jeder Zeile ändert, und verbinde ihn mit der oben beschriebenen Invariante.
O(V+E)
Do not quote this complexity mechanically. Ask which operation or input dimension it describes, then derive the cost from the loops, recursion depth, data-structure operations and any preprocessing assumptions.
Gut geeignet
- Use the algorithm only when its graph assumptions match the problem.
Was typischerweise schiefgeht
- Forgetting disconnected components.
- Mixing weighted and unweighted shortest-path algorithms.
- Not protecting against revisits/cycles.
Struktur einer professionellen Antwort
The queue is not an implementation detail—it creates level order, which is exactly why unweighted shortest paths work.
What problem does Graph Breadth-First Search solve?
BFS explores a graph level by level using a queue. In an unweighted graph it finds shortest paths by number of edges.
Was sollte ich zur Komplexität erwähnen?
Its typical cost here is O(V+E), but a complete answer should connect that cost to the representation, input constraints and the dominant operations.
Was ist der häufigste Fehler?
Forgetting disconnected components.