gpt4 book ai didi

javascript - 从网络节点集计算路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:55 27 4
gpt4 key购买 nike

我有一组节点连接,定义如下:

var arr = ['1-2','1-6','2-6','2-3','1-4','1-5','6-7','4-7','7-8'];

1-2 表示节点 1 连接到节点 2,依此类推。如您所见,存在多个连接。

如果操作正确,您会注意到各种独特的路径,例如 1-2-6-7-8、1-5 等。我想将路径计算为:

path = ['1-2-6-7-8','1-6-7-8','1-2-3','1-4-7-8','1-5']

我已经通过用另一组检查每一组来完成,但我认为我的代码太长而且性能不佳。获取路径数组的最佳方法是什么。 (路径结束于叶节点)

谢谢。

enter image description here

最佳答案

这个解决方案怎么样,我认为它只适用于 DAG:有向无环图

function toGraph(arr){
d = {}
for (var e=0; e<arr.length; e++){
var edge = arr[e].split('-')
if(!d[edge[0]]){d[edge[0]]=[]}
if(!d[edge[1]]){d[edge[1]]=[]}
d[edge[0]].push(edge[1])
}
return d
}

function DFS(G,node,path,paths,visited){
visited[node] = true
path.push(node)
if (G[node].length==0 && path.length>1) paths.push('['+path.join('-')+']')

for (var s=0; s<G[node].length; s++){
successor = G[node][s]
if(!visited[successor]){
DFS(G,successor,path,paths,visited)
}
}
visited[node] = false
path.pop()
}

function go(){
var arr = ['1-2','1-6','2-6','2-3','1-4','1-5','6-7','4-7','7-8']
var paths = []
DFS(toGraph(arr),'1',[],paths,{})
return paths.toString()
}

当您调用 go() 时,您会得到以下输出

[1-2-6-7-8], [1-2-3], [1-6-7-8], [1-4-7-8], [1-5]

关于javascript - 从网络节点集计算路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701584/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com