Whatever-First Search
Explore the Whatever-First Search algorithm, a general framework for graph traversal that includes depth-first search as a special case. Understand how to implement recursive and iterative DFS, how reachability is determined, and how the algorithm builds spanning trees in undirected graphs. This lesson equips you with the concepts and coding skills to traverse graphs efficiently in C++.
We'll cover the following...
Depth-first search
So far, we have only discussed local operations on graphs; arguably, the most fundamental global question we can ask about graphs is reachability. Given a graph and a vertex in , the reachability question asks which vertices are reachable from ; that is, for which vertices is there a path from to ? For now, let’s consider only undirected graphs; we’ll consider directed graphs briefly at the end of this section. For undirected graphs, the vertices reachable from are precisely the vertices in the same component as .
Perhaps the most natural reachability algorithm—at least for people like us who are used to thinking recursively—is depth-first search. This algorithm can be written either recursively or iteratively. It’s exactly the same algorithm either way; the only difference is that we can actually see the “recursion” stack in the non-recursive version.
Algorithm
...