码迷,mamicode.com
首页 > 其他好文 > 详细

A*和IDA*介绍

时间:2018-06-08 17:22:55      阅读:1319      评论:0      收藏:0      [点我收藏+]

标签:一模一样   turn   通过   scoi2005   迭代   超过   数码   这一   show   

\(A*\)算法是一种很神奇的搜索方法,它属于启发式搜索中的一种。A最主要的功能当然就是用来剪枝,提高搜索的效率。A主要的实现方法是通过一个估价函数,每次对下一步进行一个估价,根据估价出的值来决定下一步往哪走。因此,**估价函数的好坏决定了A*算法的优劣**。

估价函数分为三种情况:

  • 如果估计的距离小于到目标状态的实际距离,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解
  • 如果估计的距离等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的
  • 如果估计的距离大于最短距离,搜索的点数少,搜索范围小,效率高,但不能保证得到最优解

所以大部分情况下估价函数都是第一种情况,即向乐观的情况去估计,鲜有第二种情况,而第三种情况完全就是一个看脸算法,比赛时不建议使用。

以上就是对A*算法的一个介绍,例题实在是懒得放了(逃

给大家推荐几道题吧:

接下来我们谈谈IDA,IDA是将迭代加深搜索和启发式搜索合二为一的一种算法。在迭代加深的过程中,一旦这一步的估价超过了我设定的层数,就直接\(\mathfrak{return}\),以此来达到剪枝的目的。

它的情况也分三种,和A*是一模一样的。

题目推荐:

A*和IDA*介绍

标签:一模一样   turn   通过   scoi2005   迭代   超过   数码   这一   show   

原文地址:https://www.cnblogs.com/wxl-Ezio/p/9156494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!