Last updated 5 years ago
用广度优先搜索从图G=<V,E>G = <V,E>G=<V,E>的顶点v0v_0v0开始遍历所有顶点。
广度优先搜索需要设置一个队列queuequeuequeue,然后进行以下操作:
(1)(1)(1) 初始时将v0v_0v0加入队列queuequeuequeue中作为等待访问的顶点,并染红;
(2)(2)(2) 重复从队列queuequeuequeue中取出头节点viv_ivi访问,将viv_ivi的所有邻节点都加入队列queuequeuequeue中作为下次等待访问的顶点,并染红;
重复第(2)(2)(2)步操作直到queuequeuequeue为空,算法结束。下图演示搜索过程:
VI.Graph Algorithms - 22.Elementary Graph Algorithms - 22.2.Breadth-first search
BreadthFirstSearch.h
BreadthFirstSearch.cpp
BreadthFirstSearchTest.cpp
顶点访问的顺序为[0,4,5,3,1,2][0, 4, 5, 3, 1, 2][0,4,5,3,1,2]。广度优先搜索时间复杂度为O(∥V∥)O(\| V \|)O(∥V∥)。