深度优先搜索

欢迎来到我的第一个博客


作为一个萌新,让我们浅谈下可爱的深度优先搜索吧。。。


简单介绍

中文名 深度优先搜索
外文名 Depth-First-Search
提出者 霍普克洛夫特与罗伯特·塔扬
应用学科 计算机
这里写图片描述


基本思路

深度优先遍历图的方法是,从图中某顶点v出发:
(1)访问顶点v;
(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS).


基本框架(伪代码)

dfs(状态)
{
if 状态是目标状态   then
        dosomething
else
     for 每个新状态
        if 新状态合法
            dfs(新状态)
}            
主程序: 
            dfs(初始状态)

一些注意事项

-当不存在可供搜索的新状态时返回上一层函数
-已遍历对象应作标记避免重复遍历
这里写图片描述
遍历顺序:ADGHFCBE
例:当遍历到D时,与之相邻的有ACG三个点,此时A已遍历,然后搜索到可遍历的点G,调用函数到G,搜索与G相邻的点。


总结

其实DFS还是很简单的,作为很多算法的基础和不会做时的替代选择,推荐大家掌握。

引用的部分资料:

https://baike.baidu.com/item/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2/5224976?fr=aladdin&fromid=5055&fromtitle=DFS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值