几种搜索算法原理比一比

  1. A搜索:总代价 f(n) = g(n) + h(n),其中g(n)为从初始状态到达该状态的代价(这里一个状态也就是A算法里常说的一个节点),h(n)为从当前状态到目标状态的预估代价。因此,该算法的思路就是,每次寻找总代价f(n)最小的点进行扩展,直到找到终点。A*的具体过程可参考这篇博客,可参考这篇博客:https://blog.csdn.net/hitwhylz/article/details/23089415

  2. 贪心搜索:代价f(n) = h(n),每次只考虑(可到达的)离目标节点最近的点进行扩展

  3. IDS深度迭代搜索:在有界的深度优先搜索的基础上迭代的设置边界,即先考虑一层的DFS,若找不到目标则找两层的DFS,一直迭代下去直到找到目标节点。所以这种方法也是一定能找到界的,只是时间消耗会很多。

  • Dilkstra算法只考虑当点代价最小的点(f = g),所以需要扩展的节点是最多的,耗时是最长的,但是这种方法一定能找到最优解(也即是路径最短的解)
  • 而贪心每次只考虑离目标节点最近的点(f = h),所以很容易很快就能找到目标节点,但是这种方法找到的解往往不是最优的(也就是找到的路径往往不是最短的)
  • 那么,A就是结合了二者的优点 (f = g + h),既考虑当前的代价,有考虑离目标点的预估代价,既保证了找到的解是最优的,又使得所搜速度相对于Dijkstra变快了,因此,A算法是这几种方法中效率最高的完备(能找到最优解)的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值