\(A*\)算法是一种很神奇的搜索方法,它属于启发式搜索中的一种。A最主要的功能当然就是用来剪枝,提高搜索的效率。A主要的实现方法是通过一个估价函数,每次对下一步进行一个估价,根据估价出的值来决定下一步往哪走。因此,**估价函数的好坏决定了A*算法的优劣**。
估价函数分为三种情况:
- 如果估计的距离小于到目标状态的实际距离,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。
- 如果估计的距离等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的。
- 如果估计的距离大于最短距离,搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。
所以大部分情况下估价函数都是第一种情况,即向乐观的情况去估计,鲜有第二种情况,而第三种情况完全就是一个看脸算法,比赛时不建议使用。
以上就是对A*算法的一个介绍,例题实在是懒得放了(逃
给大家推荐几道题吧:
接下来我们谈谈IDA,IDA是将迭代加深搜索和启发式搜索合二为一的一种算法。在迭代加深的过程中,一旦这一步的估价超过了我设定的层数,就直接\(\mathfrak{return}\),以此来达到剪枝的目的。
它的情况也分三种,和A*是一模一样的。
题目推荐:
原文地址:https://www.cnblogs.com/wxl-Ezio/p/9156494.html
时间: 2024-11-10 11:41:03