Search A*搜索算法陷入困境

Search A*搜索算法陷入困境,search,xna,a-star,Search,Xna,A Star,我正在尝试实现一个A*搜索算法。现在,我只是想找到一条穿过布满墙壁的环境的好路。墙是随机生成的,在某些情况下,我的路径会“卡住”。如果搜索在它前面遇到一堵墙,以及它的所有侧面(除了导致它陷入混乱的那堵墙),它就会停止。 我能做些什么来防止这种情况?我使用的是一个“像乌鸦一样”的点系统来计算我的H值,它忽略了墙壁,只是估计到达目的地需要多远。这有时会导致它陷入这个陷阱 谢谢。对于A*,低估距离是“合适的” 但听起来你有深度/广度的问题 在评估给定位置的选项时,应将它们添加到选项列表中,以按分数对其

我正在尝试实现一个A*搜索算法。现在,我只是想找到一条穿过布满墙壁的环境的好路。墙是随机生成的,在某些情况下,我的路径会“卡住”。如果搜索在它前面遇到一堵墙,以及它的所有侧面(除了导致它陷入混乱的那堵墙),它就会停止。 我能做些什么来防止这种情况?我使用的是一个“像乌鸦一样”的点系统来计算我的H值,它忽略了墙壁,只是估计到达目的地需要多远。这有时会导致它陷入这个陷阱


谢谢。

对于A*,低估距离是“合适的”

但听起来你有深度/广度的问题


在评估给定位置的选项时,应将它们添加到选项列表中,以按分数对其进行检查和排序。在评估某个职位后,您应该没有理由立即检查该职位的可用选项,即每个职位的所有选项都应归入同一列表。这样,当你遇到一个死胡同时,它就不会产生更多的选项,你可以从列表中选择得分最高的选项并对其进行评估。

对于一个*,低估距离是“合适的”

但听起来你有深度/广度的问题


在评估给定位置的选项时,应将它们添加到选项列表中,以按分数对其进行检查和排序。在评估某个职位后,您应该没有理由立即检查该职位的可用选项,即每个职位的所有选项都应归入同一列表。这样,当你遇到一个死胡同时,它不会产生更多的选项,你可以从列表中选择得分最高的选项并进行评估。

如果它被引入了死胡同,这应该不会是一个问题。你的A*算法应该简单地找到下一个启发式最低的非阻塞节点,然后重新开始。

如果它被引入了死胡同,这应该不是问题。你的A*算法应该简单地找到下一个启发式最低的非阻塞节点,然后重新开始。

将状态空间想象成一个有向无环图,如果A*遇到一个不是终端节点的叶节点,这不应该是问题,因为该节点已经被移动到关闭列表中


如果您的*实现在遇到非终端(目标)叶节点后立即停止,并且开放列表中还有其他节点,那么您的*实现是不正确的。

将状态空间看作一个有向无环图,如果*遇到的叶节点不是终端节点,则不应该是问题,因为该节点已经被移动到关闭列表中


如果*的实现在遇到非终端(目标)叶节点后立即停止,并且打开列表中还有其他节点,则*的实现不正确。

这就是问题所在。我在实施过程中遇到了一些问题。我正在进一步调查,谢谢。这就是问题所在。我在实施过程中遇到了一些问题。我正在进一步研究它,谢谢。我已经把它修好了,它必须从我的开放选项列表中获得另一个“节点”。问题是它不是。我已经修复了它,它必须从我的打开选项列表中获取另一个“节点”。问题是它不是。