Algorithm 我如何在迪克斯特拉找到邻居;s算法?

Algorithm 我如何在迪克斯特拉找到邻居;s算法?,algorithm,lua,path-finding,Algorithm,Lua,Path Finding,如何查找节点的邻居?什么使某个节点成为另一个节点的邻居?顺便说一句,我用Lua编写代码时,使用了A*,您定义了三件事: 从一个相邻节点移动到另一个相邻节点的成本 给定节点与目标节点之间的距离 与任何给定节点相邻的节点 第一个可以是你想要的简单或复杂。当我在进行简单的基于网格的寻路时,所有节点之间的距离都相同,对于非常简单的寻路,我总是返回1 Dijkstra的算法实际上覆盖了第二个,通常只返回0 但你的问题是关于第三件事: 如果你在网格上做这件事,你可以找到网格空间,它是你所看到的网格空间的欧几

如何查找节点的邻居?什么使某个节点成为另一个节点的邻居?顺便说一句,我用Lua编写代码时,使用了A*,您定义了三件事:

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

    Dijkstra的算法实际上覆盖了第二个,通常只返回0

    但你的问题是关于第三件事:

    如果你在网格上做这件事,你可以找到网格空间,它是你所看到的网格空间的欧几里得邻域。也就是说,对于网格空间x2y2,在欧几里德空间中相邻的是x1y2、x3y2、x2y1和x2y3


    如果您没有处理网格,我怀疑您希望的方式是,在将每个节点放置到世界中或直接放置在世界中时,为每个节点填充同级数据,然后将其存储在与该节点关联的列表中。您可以通过计算从一个节点到其他每个节点的距离,并找到最短的节点或类似的东西来实现这一点。这可能会非常昂贵,但一开始你只需要做一次,所以如果这些节点不是动态的,那就没问题了。

    “是什么让某个节点成为另一个节点的邻居?”两个节点之间的边。@DanielFischer说了什么,但要获得更具描述性的答案,请举例说明如何表示图形/网格(如果是正方形网格,是否允许对角移动?)这是一个三维环境,我试图用节点块找到开始和结束之间的最短距离。我认为邻居指的是所有连接的节点。使用dijkstra,你可以得到每个节点的最短距离,在这种情况下,有有限距离的节点是你的邻居。。