【问题标题】:Pathfinding - Jump Point Search - open and closed lists寻路 - 跳转点搜索 - 打开和关闭列表
【发布时间】:2013-08-30 02:14:45
【问题描述】:

我想制作一个高效的寻路算法,所以我开始了跳跃点搜索。我阅读了有关它的出版物以及在线材料。它很好地解释了这个过程,但是,我找不到关于它应该如何与 A* 合并的材料。 例如,我不确定该算法是否曾多次尝试将同一个节点添加到打开列表中,因为该算法应该消除相同长度的对称路径。 我应该在每次添加新节点之前检查一下,还是应该将找到的每个跳转点添加到打开列表中?

所以简而言之,我想知道如何在跳转点搜索算法中处理打开和关闭列表。

【问题讨论】:

    标签: algorithm path-finding a-star


    【解决方案1】:

    由于 JPS 仅适用于 8 连通网格图,并且 8 连通网格图具有 consistent heuristicChebyshevEuclidean 距离,具体取决于您的图表),您无需多次将任何节点添加到 OPEN 列表中。

    【讨论】:

    • 我的问题不是我是否必须这样做。在 A* 中,您必须检查一个节点是否已经在关闭或打开列表中。如果不这样做,它将多次添加一个节点。我在问这是否会发生在这里。
    • @user2154375:如果您使用不一致的启发式算法,您可能需要多次将节点添加到打开列表中。如果您有一个一致的启发式,您只需将一个节点添加到打开列表中一次。在 A* 和 JPS 中都是如此。
    • 就像我说的,在 A* 中你必须检查一个节点是否已经在列表中。如果是,则不添加,而是计算替代G值,如果新的G值低于前一个,则将父节点切换到最后一个关闭的节点。我问f这在jps中是必要的。换句话说,算法能否从不同的位置到达同一个节点?如果是这样,它可能会尝试多次声明它为跳转点,从而将其多次添加到打开列表中,这意味着打开/关闭列表检查是必要的。
    • “就像我说的,在 A* 中,你必须检查一个节点是否已经在列表中 [然后] 计算替代 G 值并切换父节点” - 就像我说,如果您使用的启发式方法是一致的,那就不是真的。如果您有一致的启发式,则在 A* 中不需要这样做。如果你有一个不一致的启发式,它必要的。 JPS 并没有改变这一事实。而且由于 JPS 仅适用于某些类型的图,我相信它们始终具有一致的启发式,在 JPS 中没有必要这样做。我不知道如何才能做到这一点清除。
    • 我在这里学到了 A* policyalmanac.org/games/aStarTutorial.htm 正如我所提到的,算法每次都会检查,检查“A* 方法的总结”\2)\c) 如何使启发式一致? ...
    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多