启发式搜索算法之贪婪最佳优先搜索算法和A*算法

启发式搜索算法之贪婪最佳优先搜索算法和A*算法

  • 启发式搜索算法

启发式搜索又称为有信息搜索,是相对于广度优先搜索和深度优先搜索这类无信息搜索的搜索算法。该类算法是基于能够获得辅助算法的额外信息进行运算,这些信息称为启发信息。其中启发式搜索中最具代表性的就是贪婪最佳优先算法和A*算法。

启发式搜索算法满足三个条件:
1.具有启发函数:估计结点n距离达到目标还需要多少代价。在求最短路径的问题中,该函数为以相同的速度到达两个城市间的时间代价。
2.具有评价函数:根据搜索算法的不同,评价函数不同。评价函数是用以选择最优的边缘结点。
3.辅助信息:即启发信息,是用以额外地帮助搜索的信息。例如,各结点到目标结点的最短距离。

  • 贪婪最佳优先算法

贪婪最佳优先算法,即评价函数=启发函数。
不足之处:
1.有时候找到的路径不是最优的。
2.由于启发函数=评价函数,因此选择结点容易陷入死循环。

因此,在此基础上修改评价函数即得到A*算法。

  • A*算法

A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。 --百度百科

A*算法的评价函数公式表示为: f(n)=g(n)+h(n)

其中f(n)是评价函数,g(n)是当前最小开销代价,h(n)是后续最小开销代价。

对于A*算法的启发函数的设计需要满足两个特性:可容性和一致性。

可容性:即估计代价小于实际代价。在最小路径例子中,将时间作为启发式函数值是可容的,因为估计值是通过两城市间最短路径算出来的时间,而实际两城市间的道路长度必要大于或等于两者间的最小距离,因此估计值小于实际值,即由估计值得到的结果不会超出实际,即该启发式函数是可容的。

一致性:又称单调性。即满足
h(n) <= c( n,a, n1) + h(n1)

这里c( n,a, n1) 表示结点n通过动作a到达后续结点n1的代价,h(n)即结点n的启发函数取值函数。
在最短路径例子中,启发函数定义为城市间的最短距离,则一致性表现为:结点n到目标城市的距离是小于等于结点n到下一个结点n1的距离加上结点n1到目标城市的距离之和的。这样的话就保证了选择的结点就是最短路径的结点。

在树搜索中,若h(n)可容,则A*算法最优;在图搜索中,h(n)一致,则A*最优。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值