不幸的是,隧道有点“非欧几里得”,因为向右走实际上意味着向左走。这可以通过几种不同的方式解决。一种方法可能是预处理网格,这样每个节点的 h 成本就会存储起来,而不是在节点添加到打开列表时计算,从而允许它与其余的关卡数据一起加载。不过,将每个节点的 h 成本存储到每个节点可能会非常昂贵!另一种方法是将节点标记为“特殊”并需要额外处理 - 也许如果一个节点知道它连接到一个“非欧几里得”节点,那么计算出的启发式方法就是从终点到目标的距离,而不是从节点本身的距离。这只有在节点被考虑在打开列表中时才有效 - 如果路径直接扩展到相反方向,这将不起作用。