何为广度优先遍历呢?

广度优先遍历(BFS),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深挖下去。

基本思想是:

1、从图中某个顶点V0出发,并访问此顶点;

2、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点;

3、重复步骤2,直到全部顶点都被访问为止。

下面给出广度优先遍历的例子:(广度优先遍历不是唯一的哦,只要满足“广度”的含义即可)

访问顺序为:0,2,1,5,3,4(看图很快就可得知)(将离根节点最近的节点先遍历出来,再继续深挖下去。)

知道了BFS之后,我们又要怎么通过编程来实现BFS呢?

下面给上详细的分析:

首先,先准备一个队列(利用队列的结构)和一个Set(Set用来作为类似于注册的作用,防止节点重复进入队列)

step1.先把根节点1放入队列中,同时将1注册到set中去,证实它进过队列(上面两步是同步的)

step2.把1poll出来,同时打印出来(System.out...)(前面两步也是同步的),同时将1的所有next节点都放到队列中去(放到队列中去时要提前判断这些元素之前是否有注册过,即有没有在set中)

step3.如果一个节点已经没有next节点的时候,那就直接将该节点弹出去就行,不用注册也不用添加到队列中。

下面流程图可以用来参考,下面也有源代码,源代码有注释,很好理解,看不清楚的欢迎留言~

下面附上源代码:

八数码宽度优先搜索python代码_图之遍历--广度优先遍历相关推荐

  1. [python 那些事儿] 八数码问题(深度搜索、宽度搜索、输出最优解、提前判断无解状态!A算法!)

    导引 理论 宽度优先搜索算法 (python代码) 宽度优先--未输出最优解方法 宽度优先--输出最优解方法 深度优先算法(python代码) 深度优先--未输出最优解方法 深度优先--输出最优解方法 ...

  2. 八数码问题的三种解决方式,其一:宽度优先搜索

    老师要求写一下八数码问题的三种解决方法,,,哎真的是苦了孩子了,只有在网上找找大佬们的代码来扩展了一下思路才勉强写出来,这里也分享一下自己的理解. 宽度优先与深度优先算法在八数码问题上的主要操作大同小 ...

  3. 野人与传教士——宽度优先搜索(完整报告,含全部代码)

    题目: 野人与传教士渡河问题:3个野人与3个传教士打算乘一条船到对岸去,该船一次最多能运2个人,在任何时候野人人数超过传教士人数,野人就会把传教士吃掉,如何用这条船把所有人安全的送到对岸?在实现基本程 ...

  4. 广度优先搜索、宽度优先搜索,《学点算法吧,Python》

    一.广度优先搜索 广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. 广度优先搜索是一种用于图的查找方法,可以帮助解决两个问题: 从节点A出发,有前 ...

  5. 层层递进——宽度优先搜索(BFS)

    问题引入 我们接着上次"解救小哈"的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLi ...

  6. 广度/宽度优先搜索(BFS)详解

    1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名. 一般可以用它做什么呢?一 ...

  7. 算法学习(九)之“宽度优先搜索”

    什么是宽度优先搜索? 面试题: 小岛问题 题目: 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相 ...

  8. 生成图-深度优先搜索/宽度优先搜索

    问题提出: 考虑如下图所示的简单图所表示的缅因州的道路系统.在冬天里保持道路通路通畅的唯一方式就是经常扫雪.高速公路部分希望只扫尽可能少的道路上的雪,而确保总是存在连接任何两个乡镇的干净道路.如何才能 ...

  9. ACM算法笔记(十)深度优先搜索与宽度优先搜索

    深度优先搜索 事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 下面 ...

最新文章

  1. 使用自己的按钮关闭或刷新RadWindow
  2. UA MATH636 信息论8 线性纠错码
  3. 基于FPGA的目标点的提取与定位系统设计
  4. vue项目实现记住密码到cookie功能
  5. 前端 html border-right: 1px solid red;
  6. Python基础学习----参数和返回值
  7. 阿里云:Table Store(OTS) Writer
  8. 揭秘一家网络推广公司的引流变现套路
  9. 凯利公式自动计算表_钢结构计算公式(公式表)
  10. Atitti 摘要算法 散列算法SHA1 和 MD5  crc32 目录 1.1. CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长 1 1.1.1. 数据摘要算
  11. Solidworks默认模板无效问题?修改字体问题
  12. 二维vector初始化,赋值
  13. excel冻结窗格参与排序_冻结窗格以在Excel中隐藏行
  14. pdf怎么删除其中一页?
  15. vue页面实现短信验证码60秒倒计时
  16. KL,JS,Wasserstein距离
  17. 学习 lt MATLAB gt 心得,lt;lt;MATLAB可视化大学物理学gt;gt;使大学物理更具体,更有趣。 - 物理 - 小木虫 - 学术 科研 互动社区...
  18. 什么是MySQL| 什么是数据库 | 数据库详解
  19. 如何解决PS“不能完成请求,因为意外的遇到文件尾”?
  20. 日乒赛-马龙爆冷止步次轮 朱雨玲陈梦率先进8强

热门文章

  1. 浅析ERP软件企业资源的关系与发展
  2. jquery根据滚动像素显示隐藏顶部导航条
  3. OpenResty入门
  4. python中类的创建_如何在python中为类动态创建类方法
  5. python编程函数_python函数式编程
  6. python处理json文件_python读取json文件转成excel
  7. 代码chaid_R或Python中的CHAID决策树
  8. Wavenet基础学习
  9. 窗函数(Window Function)在信号处理当中的应用
  10. key php 转小写_PHP开发常识