【问题标题】:Staggered Isometric Pathfinder交错等距探路者
【发布时间】:2013-10-05 14:09:01
【问题描述】:

我在试图弄清楚如何为交错的等距地图实施寻路系统时遇到了问题。

我阅读了 A* 算法并试图了解它在等轴测图上的表现形式,结果将我带到了这里。

所以问题就出在这里(我对便宜的显示器感到抱歉)

所以,我目前在绿色瓷砖 (2,3) 上,我试图找到通往红色瓷砖 (3,1) 的路径。

基于 A* 算法,我尝试计算相邻图块的 F 值(我只对这 3 个图块进行了计算)。
由于图像显示 (2,1) 的 F 值低于 (2,2) 并且这是所有问题的根源,因此具有 j+2 和 j-2 的对角线图块将(几乎)每次都低于F值比“逻辑”选择。
所以不是去(2,2),而是去(2,1)。

我该如何解决这个问题?有人可以给我一些提示我应该怎么做吗?

【问题讨论】:

  • 如何计算 G 和 H?哦,根据给定的值,看起来你的 H 不是admissible。从(2,2)到(3,1)应该需要10,但你说需要20(即你高估了)。
  • 我这样计算 (x1,y1) 和 (x2,y1) 之间的距离 H = (Math.Abs​​(x2-x1) + Math.Abs​​(y2-y1)) * 10,至于 G,我用 10 表示直接路径,14 表示对角线。

标签: algorithm path isometric


【解决方案1】:

根据给定的值,您的 H 似乎不是 admissible。由于从 (2,3) 到 (2,2) 需要 10,我认为从 (2,2) 到 (3,1) 需要 10,但是您的 H 说需要 20(即您高估)。

一个可能的 H 是到目标的直接距离(类似于 Manhattan distance 或欧几里得)。

第一步,我们探索所有邻居。我们的 G 值如下所示:(G = 绿色,R = 红色)

    14
  10  10
14   R  14
  10  10
G   14

让我们将 H 视为类似于曼哈顿距离的东西,其中 14 是对角线跳跃,而 10 是向直接邻居的移动。这实际上是本示例的完美启发式方法,因为它与实际距离完全相同。一旦道路上有障碍物,情况就会有所不同。

然后我们得到 H 值:

    34
  24  30
14   R  34
  10  24
G   14

所以我们的 F 值 (= G + H) 是:

    48
  34  40
28   R  48
  20  34
G   28

然后找到最小值,即 20,探索所有(未探索的)邻居并找到最小值,这将是本例中的目标。

请注意,一旦邻居之一是目标,而不是我们当前正在探索的节点,就停止是一个简单的错误。如果我们这样做,可接受的启发式并不能保证我们会找到到达目标的最佳路径。

【讨论】:

  • 如何识别对角线跳跃?
  • @SanduCezar 我不确定。你的坐标系是如何工作的?如果(1,5)(2,5),我可能会得到它,那么看起来 2 行在同一个 x 坐标上。使用起来确实有点复杂,至少计算不会那么简单。作为一个更简单的选择,只需将当前的 H 除以 2 即可(即乘以 5 而不是 10),尽管这会更糟 - 需要更长的时间才能得到结果。
  • 哦,对不起。看来我犯了一个错误,再次为混乱感到抱歉,是的,你是对的,它应该是 (2,5) 而不是 (1,5)。
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多