为什么A*算法的启发式不可接受?

 懒懒加菲猫爱小狐狸 发布于 2023-02-11 09:46

我会通过CS 188菱向公众edx.org.现在我必须为A*搜索开发一个启发式算法来吃掉所有的颗粒,如下所示: 吃豆子

我确信可行的启发式方法(可接受和一致)是这样的:

将名为h的启发式累加器初始化为0

将pos初始化为pacman的当前位置

虽然没有吃颗粒:

使用astar搜索(曼哈顿距离作为启发式)从pos获取最近的颗粒

添加到h的距离

从颗粒中取出颗粒

将pos设置为颗粒的位置

我还缓存了先前计算的距离,因此如果在另一个状态计算之前已经完成,则不进行寻找最近的颗粒的astar搜索.它能够非常快速地解决问题,并且结果是最佳的.

当我在自动编程器中使用此算法时,它未通过可接受性测试.

别担心,我不是要求解决问题,只是为什么我目前的解决方案不被允许?当我在脑海中的图片中看到这个例子时,启发式算法永远不会过高估计成本.

因此,如果有人能够理解这一点,并有任何想法,您的意见非常感谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有