如何在Dijkstra算法中找到邻居?

时间:2013-06-11 15:14:42

标签: algorithm lua path-finding

如何寻找节点的邻居?是什么使某个节点成为另一个节点的邻居?顺便说一下,我在Lua中编写代码

1 个答案:

答案 0 :(得分:1)

使用A *,您可以定义三件事:

  1. 从一个相邻节点移动到另一个节点的成本
  2. 给定节点与目标节点之间的距离
  3. 与任何给定节点相邻的节点
  4. 第一个可能是你想要的简单或复杂。当我在进行简单的基于网格的寻路时,所有节点的距离相同,我只是一直返回1,以便进行非常简单的查找。

    Dijkstra的算法实际上涵盖了其中的第二种算法,通常只返回0。

    但你的问题是第三件事:

    如果您在网格上执行此操作,则可以找到网格空间,这些网格空间是您正在查看的网格空间的欧几里德邻居。也就是说,对于网格空间x2y2,邻域在欧几里德空间中是x1y2,x3y2,x2y1和x2y3。

    如果你没有处理网格,我怀疑你想要做的就是当你把它们放在世界上或之后直接存储它时,为每个节点填充兄弟数据与该节点关联的列表。您可以通过计算从节点到每个其他节点的距离并找到最短的节点或类似的节点来实现。它可能非常昂贵,但你只会在一开始就做一次,所以如果这些节点不是动态的,它应该没问题。