急!有哪些启发式算法,为什么选择A*算法,A*集合数据结构的选择
我的毕业设计是基于A*算法的一个小机器人寻路,只知道A*过程,结果老师问1、除了A*还有哪些启发式算法,为什么选择A*算法。2、Open集合和Closed集合的选择,备选为无序表,有序表,跳表,堆,哈希表。问题1一点不会,问题2我把所有数据结构操作的时间复杂度说了一遍,最后选堆,老师说答的不够好,让我下午交答案。应该怎么答? 算法 数据结构 机器人 毕业设计
[解决办法]
1:启发式搜索方法有:Best-First,AStar,模拟退火,爬山算法,禁忌搜索,遗传算法,蚁群算法。
为何选用AStar,只要估价函数合适,我们总能选择到最优解。注意,A*总是用当前搜到的最优解替换之前搜索到的在Open表中的解,这样能保证Open表中始终是最有可能得到最优解的结点。但是可能会出现搜索深度过深,搜索树单一的情况,这时候需要使用迭代加深A*算法限定搜索树深度。
2:Open表用堆,Close表用无序表。