基本算法——第六单元 回溯

第六单元 回溯

一、定义

回溯算法也叫试探法,一种系统地搜索问题的解的方法。

 

二、方法

1.针对问题,定义包含问题解的空间。

2.不断的向前搜索。

3.判断是否正确,正确则结束搜索,错误则恢复之前状态,返回上一层,向前搜索。

 

三、优化方式

1.剪枝:通过条件限制,避免一些不必要的遍历过程。有效的剪枝能够大量减少算法复杂度。

2.减少每次判断所花时间。

 

四、深度优先搜索(DFS)

1.对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

2.方法:同回溯。

 

五、广度优先搜索(BFS)

1.沿层次向横向扩展搜索。即从该层开始,搜索生成下一层节点,检查生成的节点中是否存在目标节点,若没有,再用下一层节点搜索生成新的一层节点,直到发现目标节点为止。

2.方法:使用队列

(1)将起点入队。

(2)出队一个元素,作为搜索节点。

(3)将搜索节点的符合条件的子节点入队。

(4)如果队空结束,否则跳到第2步。

3.注意:每个节点只能入队一次,节约时间,防止陷入死循环。

 

DFS

BFS

优点

方便记忆化搜索。

(1)     较快解决“最少步数”、“深度最小”等问题。

(2)     找到答案能立刻停止搜索。

(3)     方便输出路线。

缺点

不容易输出路线。

占的空间一般比DFS大。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值