广度优先遍历(Breadth First Traversal)
优质
小牛编辑
152浏览
2023-12-01
广度优先搜索(BFS)算法以宽幅运动遍历图形并使用队列记住在任何迭代中发生死角时获取下一个顶点以开始搜索。

如在上面给出的示例中,BFS算法首先从A到B到E到F,然后到C和G,最后到D.它采用以下规则。
Rule 1 - 访问相邻的未访问顶点。 将其标记为已访问。 显示它。 将其插入队列中。
Rule 2 - 如果未找到相邻顶点,则从队列中删除第一个顶点。
Rule 3 - 重复规则1和规则2,直到队列为空。
步 | 穿越 | 描述 |
---|---|---|
1 | ![]() | Initialize the queue. |
2 | ![]() | 我们从访问S (起始节点)开始,并将其标记为已访问。 |
3 | ![]() | 然后我们从S看到一个未访问的相邻节点。 在这个例子中,我们有三个节点,但按字母顺序我们选择A ,将其标记为已访问并将其排入队列。 |
4 | ![]() | 接下来,来自S的未访问的相邻节点是B 我们将其标记为已访问并将其排入队列。 |
5 | ![]() | 接下来,来自S的未访问的相邻节点是C 我们将其标记为已访问并将其排入队列。 |
6 | ![]() | 现在, S没有未访问的相邻节点。 所以,我们出列并找到A |
7 | ![]() | 从A我们有D作为未访问的相邻节点。 我们将其标记为已访问并将其排入队列。 |
在这个阶段,我们没有未标记(未访问)的节点。 但是根据算法我们继续出列以获得所有未访问的节点。 当队列清空时,程序结束。
用C编程语言实现该算法可以在这里看到 。