如果该点不在open,colse,障碍物列表内,则计算出F值,再逐一push到open列表内,再从open列表尾部开始遍历,最小的f值,作为下一个起始点,所以当有多个相同的F值时,会取最后一个添加到open的点,就出现了如下图这种情况,这种情况该怎么处理,或者思路方面有什么问题吗
**图片说明:
F = 计算出来的值;
No = 当前走的第几步;
绿色 = 起点;
红色 = 终点;
黑色 = 障碍物
黄色 = close列表的点 **
如果该点不在open,colse,障碍物列表内,则计算出F值,再逐一push到open列表内,再从open列表尾部开始遍历,最小的f值,作为下一个起始点,所以当有多个相同的F值时,会取最后一个添加到open的点,就出现了如下图这种情况,这种情况该怎么处理,或者思路方面有什么问题吗
**图片说明:
F = 计算出来的值;
No = 当前走的第几步;
绿色 = 起点;
红色 = 终点;
黑色 = 障碍物
黄色 = close列表的点 **
…
佛祖保佑 卐 永无Bug
…
…
佛祖保佑 卐 永无Bug
…
A*寻路的主要算法,就是评估, 已经达到此步的距离 + 预计这一步到达目的地的距离, 选择附近下一个最优的放进close,其他的放进open, 一直持续下去,直到达到目的地。
第二张图的路径是正常的,但是No.8的F值开始直至后面的都不对;第一张图No.10开始的F值明显有问题,但是看图真不好判断问题在哪
每个点的F值是已经经过的路程加上预计剩余路程,明显你的F值计算有误
第一张图都走了一个蛇线了,已经经过的距离都不止11了,F值还等于11
第二张图NO.7到NO.8就不对了,计算到NO.7这里,NO.8的F值就不可能是最小的,绿色上方的NO.1F值绝对比NO.8小
谢谢,已经搞定了,主要原因是我的g值参数错了,导致最后的f值错误,谢谢楼上两位大佬提醒!!!!