DFS is called "depth first" because it descends into the graph as quickly as possible.
Breadth-search first, in contrast, explores nodes by following a "wave front". It explores in order of their distance from the start vertex.
BFS(graph G, vertex v) FIFO_Queue Q; Array<int> distance(-1); distance[v] = 0; insert vertex v into the queue Q. while (Q is not empty) take the next vertex W off the front of the queue Q for each neighbor X of W do if (distance[X] == -1) then distance[X] = distance[W] + 1 add vertex X to the tail of the queue Q end
(example here)
Upper bounds on its running time:
O(n+m) is linear in the input size, because encoding the graph takes Θ(n+m) space.
Algorithms that run in time linear in the input size are often the best possible, because for many problems, any algorithm must at least examine the entire input.