当前位置:网站首页 > 深度学习 > 正文

广度优先搜索和深度优先搜索都属于(深度优先搜索算法和广度优先搜索算法)



广度优先搜索,即广搜,也称宽度优先搜索 ( Breadth First Search ),是一种搜索算法,广搜使用队列来实现 ( 所以意思就是你得知道什么是队列 )

所谓队列,就是队列,是一种非常常用的数据结构,同时,它也是一种线性表 ( 好吧其实可以理解为数组 ),里面装了广搜每一步的信息

我们仍然以上一次讲深搜时使用的迷宫 ( 绝对不是懒得画图 )

这样子,z 队列就实现了它的价值,用于记录每一步,它可以为下一步提供帮助,也可以保存答案

广搜的 while 循环中 h 是程序走到的地方,即在 z 数组中的下标,t 是已有的路径中的坐标,也可以说 h 直到 t 都是可以走的下一步,就等待 h 进行处理,这样循环下去,当 h = t 时,就说明下一步没有路了,也就结束了循环

mov 即移动数组,视情况而改变,有时候可能不一样,在 for 中循环枚举下一步的位置,通过对 z 数组 h 位置的 x 和 y 坐标的加减可以推断出下一步的位置

推断出下一步后 if 判断 nx ny 这个位置是否能够走,其中的内容也是视情况而定的,将所有必要的条件都放入进去,例如这个点 ( nx , ny ) 不能为 1 ( Map[nx][ny]!=1 ),这个点不能被走过 ( !data[nx][ny] ),这个点不能越界 ( nx>=0&&ny>=0&&nx<10&&ny<10 ) 等等

如果这些条件都满足了,就可以进行下一步,将这个新的点加入至 z 数组中,等待 h 来处理,两个赋值操作都是将新的点的坐标记录下来,t++ 会将可用的位置增加 1,最后别忘了将走过了的标记也赋值,最后一个 if 就是用于判断是否成功到达了这个点

广搜的遍历就像是一棵树,就像这张图

如果用广搜搜索,就会以这样的方式遍历

从一开始,拓展 2,3,4,然后开始拓展 2 得到 5,6,拓展 3 得到 7,拓展 4 得到 8

然后又开始拓展由 2 得到的 5 得到 9,拓展 6 得到 10,拓展 7 得到 11,拓展 8 得到 12 和 13,依次类推,最后拓展 12 时就会发现最终答案 16

总的来说,广搜是比较好理解的,没有深搜那样的递归回溯,并且利用队列来执行

深搜的处理方式就是一路搜到底,没路了才一步步回溯;而广搜将所有可用的点放入数列中,等到之后再利用这些点继续拓展

广搜与深搜都是按照顺序遍历每一个点,只是方向不一样

另外广搜和深搜不一定只是用在图中的,它们同样可以用在其它地方

好的如果你觉得本篇文章对你有所帮助的话请不要忘记支持!

题解还在肝

到此这篇广度优先搜索和深度优先搜索都属于(深度优先搜索算法和广度优先搜索算法)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 微信小程序学习笔记-(9)-仿智行火车票2025-11-05 08:54:07
  • 微信小程序学习笔记-(10)-猫眼电影案例2025-11-05 08:54:07
  • webpack5学习与实战-(一)-webpack的初步认识2025-11-05 08:54:07
  • webpack5学习与实战-(三)-引入其他资源模块2025-11-05 08:54:07
  • webpack5学习与实战-(五)-直接加载资源2025-11-05 08:54:07
  • 广度优先搜索和深度优先搜索各有什么特点(深度优先搜索算法和广度优先搜索算法)2025-11-05 08:54:07
  • linux学习(linux怎样学)2025-11-05 08:54:07
  • 广度优先搜索和深度优先搜索的优缺点(深度与广度优先搜索)2025-11-05 08:54:07
  • 广度优先搜索和深度优先搜索都属于什么算法(广度优先搜索序列和深度优先搜索序列)2025-11-05 08:54:07
  • linux学习(linux就这么学)2025-11-05 08:54:07
  • 全屏图片