DFS/BFS 初印象

今天进行算法的学习,大一的学生没有对数据结构有一定的认识和了解,大二的七院和软件学院已经对数据结构有了解了,所以一些基础知识都懂了。开始今天的学习。

首先的是,大一大二同学都应该掌握的递归方法,这是一个很重要的东西,在一些重复的复杂的问题当中都会用到递归来简单的解决问题,下面开始递归的讲解: (很不错的讲解博客)

https://cuijiahua.com/blog/2018/01/alogrithm_10.html DFS/BFS 基础认识。

递归:

https://blog.csdn.net/sinat_38052999/article/details/73303111  这篇博客写的很好,基本吧递归的应用点都写出来了,写的很好。

DFS:深度优先搜索算法

DFS 运用了递归的方法,达到独特的效果。  是一个 动态演示的基础博客。dfs是应用递归来实现的。

优点:

我们看到名字也是知道了,是一个深度优先搜索,可以说是不达目的不死心,一点一点去搜索,不丢下每一个角落。虽然dfs能达到将所有的情况都搜到的完美状态,

缺点:

但是我们也知道dfs递归的复杂度取决于数据量的大小,也就是递归的深度(程度),有的题目数据量很大,但是有的情况我们是不需要都考虑的,这样的话,我们直接跳过这部分的递归,直接开始下一步的递归解决问题。这就是 剪枝,将一些无用功减去。

BFS:广度优先搜索算法

与DFS不同的是,DFS采取的是 队列数据结构来实现算法的,所以说没有DFS递归那样难以理解,但是将BFS使用到彻底也是需要大量的练习的。

没有很大的复杂程度,只要是应用于单一的最短路径上面,实在一种层次上的算法,就好像上面动态图中的找方块一样,明显的与DFS区别。应用了队列数据结构。

BFS 常用于找单一的最短路线,它的特点是 "搜到就是最优解",而 DFS 用于找所有解的问题,它的空间效率高,而且找到的不一定是最优解,必须记录并完成整个搜索,故一般情况下,深搜需要非常高效的剪枝。

https://blog.csdn.net/u011437229/article/details/53188837  DFS/BFS 相关的模板。

发布了123 篇原创文章 · 获赞 83 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/tsam123/article/details/102982054