在A *启发式中,有一个步骤如果找到到该节点的更好的路由,则更新节点的值。但是,如果我们具有无负边缘和正确启发式函数(目标感知,安全且一致)怎么办。是真的,因为我们总是总是通过最短的路径首先到达该状态,所以不再需要更新吗?
考虑到欧几里德距离启发法,在我看来它是可行的,但我无法在我的思想中归纳出为什么应该这样做。如果没有,有人可以给我提供反例吗,或者在其他情况下可以确认我的姓名缩写吗?
上下文:我正在用启发式功能解决一个我不太了解并且不需要的任务(提供了伪代码),但可以保证它是(目标意识,安全且一致的) )。状态空间很大,因此我无法构建图,因此我正在寻找一种方法来完全省略对图的记忆并仅保留一个哈希图,这样我就知道我以前是否访问过特定状态,因此避免了循环。
因此,我在各种情况下检验了我的假设,似乎即使启发式算法(目标感知,安全且一致)且“图形”没有消极边缘,但进入状态的第一次入口可能不在最短的路径。 (仅当支持重新访问和更新状态并将其推回到由A *持有的openSet中时,某些实例似乎才能给出正确的结果。)
我无法找出原因,但是在调试时,某些状态在较短的路径上被多次访问。我的猜测是,当我们朝目标迈进时,可能会发生这种情况,但是在图中增加了一个偏离目标的邻居。因此,如果我们沿着目标的方向从起点开始朝该节点前进,则走的可能是更长的路径。