图论(四)宽度优先搜索BFS
来源:互联网 发布:ubuntu root 登录 编辑:程序博客网 时间:2024/06/05 04:51
宽度优先搜索(BFS, Breadth First Search)是一个针对图和树的遍历算法。发明于上世纪50年代末60年代初,最初用于解决迷宫最短路径和网络路由等问题。
对于下面的树而言,BFS方法首先从根节点1开始,其搜索节点顺序是1,2,3,4,5,6,7,8。
BFS使用队列(queue)来实施算法过程,队列(queue)有着先进先出FIFO(First Input First Output)的特性,BFS操作步骤如下:
1、把起始点放入queue;
2、重复下述2步骤,直到queue为空为止:
1) 从queue中取出队列头的点;
2) 找出与此点邻接的且尚未遍历的点,进行标记,然后全部放入queue中。
下面结合一个图(graph)的实例,说明BFS的工作过程和原理:
(1)将起始节点1放入队列中,标记为已遍历:
(2)从queue中取出队列头的节点1,找出与节点1邻接的节点2,3,标记为已遍历,然后放入queue中。
(3)从queue中取出队列头的节点2,找出与节点2邻接的节点1,4,5,由于节点1已遍历,排除;标记4,5为已遍历,然后放入queue中。
(4)从queue中取出队列头的节点3,找出与节点3邻接的节点1,6,7,由于节点1已遍历,排除;标记6,7为已遍历,然后放入queue中。
(5)从queue中取出队列头的节点4,找出与节点4邻接的节点2,8,2属于已遍历点,排除;因此标记节点8为已遍历,然后放入queue中。
(6)从queue中取出队列头的节点5,找出与节点5邻接的节点2,8,2,8均属于已遍历点,不作下一步操作。
(7)从queue中取出队列头的节点6,找出与节点6邻接的节点3,8,9,3,8属于已遍历点,排除;因此标记节点9为已遍历,然后放入queue中。
(8)从queue中取出队列头的节点7,找出与节点7邻接的节点3, 9,3,9属于已遍历点,不作下一步操作。
(9)从queue中取出队列头的节点8,找出与节点8邻接的节点4,5,6,4,5,6属于已遍历点,不作下一步操作。
(10)从queue中取出队列头的节点9,找出与节点9邻接的节点6,7,6,7属于已遍历点,不作下一步操作。
(11)queue为空,BFS遍历结束。
- 图论(四)宽度优先搜索BFS
- 宽度优先搜索(BFS)
- BFS(宽度优先搜索)
- 宽度优先搜索(BFS)
- 宽度优先搜索 BFS
- 宽度优先搜索BFS
- 宽度优先搜索bfs
- poj 3278(bfs宽度优先搜索)
- BFS宽度优先搜索思想
- 广度/宽度优先搜索(BFS)
- 广度/宽度优先搜索(BFS)
- BFS宽度优先搜索算法
- BFS宽度优先搜索思想
- 广度/宽度优先搜索(BFS)
- BFS宽度优先搜索思想
- 广度/宽度优先搜索(BFS)
- 广度/宽度优先搜索(BFS)
- 广度/宽度优先搜索(BFS)
- 【uml】动态图之活动图、状态图
- JZOJ 3823【NOIP2014模拟9.9】遇见
- ant基础学习
- php compact函数
- dockerUI 的安装以及使用
- 图论(四)宽度优先搜索BFS
- tensorflow学习笔记(一)-基础模型
- VC++孙鑫-第二章-C++回顾
- Unix高级编程:操作系统 、计算机语言、大型软件组织
- HTML5.1——14项新增特性以及使用案例
- 初学Android,对项目的结构分析感想
- hrbust 1143 泉水
- 史上最全设计模式导学目录(完整版)
- php interface