获取连接的 id 的"路径"

我一直困惑不已... 我有一个包含与其他 id 相连接的 id 信息的表格。我需要找到从ID1ID2的"最便宜"的连接

local ids = {
   [15] = {
      [18] = {
      },
      [23] = {
      },
      [24] = {
      },
   },
   [18] = {
      [15] = {
      },
      [21] = {
      },
      [50] = {
      },
      [248] = {
      },
      [330] = {
      },
      [378] = {
      },
      [914] = {

      },
      [1185] = {
      },
   },
   [21] = {
      [18] = {
      },
      [20] = {
      },
   },
   [248] = {
      [18] = {
      },
   },
}

期望的结果如下:

local table_path = {
   15,
   18,
   21,
}
点赞
用户14979083
用户14979083

我猜最便宜的连接应该是最短的,所以你想要做的是广度优先搜索。你需要额外保存到每个节点的路径,因为这正是你想要获得的。一旦你找到 ID2,你就可以停止并采取这条路径。由于这是广度优先,第一次找到 ID2也保证是最短路径。

https://en.wikipedia.org/wiki/Breadth-first_search

我刚刚搜索了一下,发现:

BFS算法使用Lua在两个节点之间找到最短路径

在这个答案中,有一个已经实现的Lua广度优先搜索。如果需要,你可以从中开始并进行更改以适应你的用例。

2021-02-05 12:14:28