This document discusses breadth-first search (BFS), an algorithm for traversing graphs in a level-by-level fashion starting from a root node. It describes how BFS works by marking vertices as undiscovered, discovered, or processed and maintaining a queue of discovered vertices. BFS is used to find shortest paths in unweighted graphs by discovering vertices in order of distance from the root. The document also discusses applications of BFS like finding connected components and testing if a graph can be two-colored.