Lua 获得;路径“;连接ID的数量

Lua 获得;路径“;连接ID的数量,lua,Lua,我只是一次又一次地把自己弄糊涂了。。。 下表包含了哪个id连接到其他id的信息。我需要找到从ID1到ID2的“最便宜”连接 本地ID={ [15] = { [18] = { }, [23] = { }, [24] = { }, }, [18] = { [15] = { }, [21] = { }, [50] = { }, [248] = { }, [330] = { }, [378] = { }, [914] = { }, [1185] = { }, }, [21] = { [18] = { }

我只是一次又一次地把自己弄糊涂了。。。 下表包含了哪个id连接到其他id的信息。我需要找到从ID1到ID2的“最便宜”连接

本地ID={
[15] = {
[18] = {
},
[23] = {
},
[24] = {
},
},
[18] = {
[15] = {
},
[21] = {
},
[50] = {
},
[248] = {
},
[330] = {
},
[378] = {
},
[914] = {
},
[1185] = {
},
},
[21] = {
[18] = {
},
[20] = {
},
},
[248] = {
[18] = {
},
},
}
预期结果是:

localtable\u路径={
15,
18,
21,
}

我想最便宜的连接应该是最短的,所以你要做的是广度优先搜索。您需要另外保存每个节点的路径,因为这是您想要得到的。一旦你找到ID2,你就可以停下来走这条路。因为这是广度优先,所以您第一次发现ID2时也保证是最短路径

我只是搜索了一下,发现:


在这个问题的答案中,有一个在Lua中实现的广度优先搜索。您可以从这里开始,并根据需要对您的用例进行更改。

为什么元素ID[someID][connectedID]表会再次出现?这些元素包含信息,但不一定会影响功能,它只是镜像我的表结构,因为我最终将使用它。最重要的是,它是:ids[someID][connceedid]=无论什么值OK,请注意不要将其设置为nil,否则就好像从表中删除了它一样!谢谢!那个链接正是我所需要的!