搜索——基于路径的搜索

本文深入探讨了搜索算法,包括无信息搜索的深度优先、广度优先、一致代价等策略,以及有信息搜索的贪心和A*搜索。分析了算法的完备性、最优性、时间与空间复杂度,强调了目标检测时机的重要性。
摘要由CSDN通过智能技术生成

一、问题形式和搜索框架

(一)、问题的组成部分

搜索问题包含五个基本组成部分:初始状态可能行动转移模型目标测试路径消耗

(二)、基本搜索框架

搜索问题包含两个基本的搜索框架,即树搜索图搜索

树搜索伪代码

边界fringe是用于存放当前所有待扩展的叶结点的集合。REMOVE-FRONT为以某种策略从边界fringe中选择叶结点进行扩展(扩展的意思是访问到当前结点并将其后继结点加入边界),扩展操作用EXPAND函数实现。不同的搜索算法不同之处在于:从边界选择结点的策略不同。特别注意:目标检测GOAL-TEST判断需要根据算法的不同决定是在扩展时进行,而是在选择后进行(在所有算法介绍完后我们会比较这一点)。

图搜索伪代码

closed集合用于存放当前已被扩展过的结点。 

两个搜索算法最主要的区别是:树搜索允许对某一结点重复扩展,而图搜索在树搜索上进行改进,不会对结点进行重复扩展,即在扩展结点前判断该结点是否已被访问过。

(三)、算法的性能

完备性:当问题有解时,算法是否能保证找到解。

最优性:算法是否能找到最优解。

时间复杂度:找到解花费的时间。

空间复杂度:算法需要的内存。

复杂度通常由以下三个量来表达:b——分支因子:任何结点的最多后继数;d——目标结点所在的最浅深度;m——状态空间中路径的最大长度(可能是无穷),即树的最大深度。

(以下我们讨论完备性和最优性时,没有特别说明这是在图搜索算法还是树搜索算法中时,就是都满足。)

二、无信息搜索(Uninformed Search)

无信息搜索(也称盲目搜索)策略,是指除了问题定义中提供的状态信息外没有任何附加信息,该类算法要做的是生成后继结点并判断是否是目标状态。

(一)、深度优先搜索(Depth-First Search)

深度优先搜索总是扩展搜索树的当前边界结点中最深的结点。并且一个节省内存的做法是:已被探索并且在边界中没有后代的结点可以从内存中删除

未探索区域用浅灰色表示。已被探索并且在边界中没有后代的结点可以从内存中删除。M已是目标结点

完备性:DFS在树搜索算法框架下是不完备的。这是因为如果当前搜索空间状态图中存在回路,那么DFS将会陷入无限循环,永远无法找到解。但是如果在图搜索算法框架下࿰

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值