搜索算法与学习方法论

● 每周一言

闻道有先后,术业有专攻。

导语

去年的基础算法系列中并未讲到搜索算法,考虑到搜索算法的重要性和其思想的普适性,本节就来讲讲搜索算法的基本原理,以及其中所表现的学习方法论。

搜索

搜索顾名思义,即对关系数据集的元素逐一进行检索。按检索顺序,通常划分成两种方式:深度优先搜索(Depth First Search)宽度优先搜索(Breadth First Search)

DFS,又叫深度优先遍历,每一次检索会优先遍历单条关系,直到不能继续向前遍历为止。

BFS,又叫宽度优先遍历,每一次检索会优先遍历当前所有关系,层层深入直到不能继续遍历为止。

fig1

举个例子,如上连通图,从节点1开始节点遍历。
DFS的结果依次为:1,2,3,4,5,6;
BFS的结果依次为:1,2,5,3,6,4。

DFS一般通过递归函数实现,递归遍历每一条关系,具体递归讲解可以参见我之前的文章 算法基础篇(3)——递归与分治

BFS一般用队列实现,按入队出队顺序逐层遍历节点。

fig2

DFS和BFS这两种不同的搜索方式,恰好体现了两种不同的学习方法论。

DFS类似一种打破砂锅问到底的方式,其重点在于问题研究的深度;而BFS则是一种全面思考的方式,其重点在于问题研究的宽度。

由于DFS和BFS最终都会遍历整个关系数据集,所体现的这两种学习方法论并无优劣之分。

fig3

不过,每个人的精力尤其是在某一段时间内的精力是有限的。因此需要具体情况具体分析,可以针对具体问题选择DFS或BFS学习方法论,提高效率。

以上便是小斗理解的搜索算法与学习方法论,敬请期待下节内容。

结语

感谢各位的耐心阅读,后续文章于每周日奉上,敬请期待。欢迎大家关注小斗公众号 对半独白

face

猜你喜欢

转载自blog.csdn.net/cherrylvlei/article/details/79115559
今日推荐