Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在有向图中获取从A到E的所有路由_Javascript_Graph_Directed Graph - Fatal编程技术网

Javascript 无法在有向图中获取从A到E的所有路由

Javascript 无法在有向图中获取从A到E的所有路由,javascript,graph,directed-graph,Javascript,Graph,Directed Graph,我在获取图表中的所有路线时遇到一些问题。它对一些人有效,但很明显,由于它无法获得从A到E的所有路线,所以有些地方出了问题 let图={ 'A':['B','D','E'], “B”:[C'], 'C':['D','E'], “D”:[C”,“E'], “E”:[“B”] }; 函数搜索(开始、结束、图形){ let queue=[…graph[start]]; 让我们访问=[]; while(queue.length){ 计数=1; 让节点=queue.shift(); if(图[节点]){

我在获取图表中的所有路线时遇到一些问题。它对一些人有效,但很明显,由于它无法获得从A到E的所有路线,所以有些地方出了问题

let图={
'A':['B','D','E'],
“B”:[C'],
'C':['D','E'],
“D”:[C”,“E'],
“E”:[“B”]
};
函数搜索(开始、结束、图形){
let queue=[…graph[start]];
让我们访问=[];
while(queue.length){
计数=1;
让节点=queue.shift();
if(图[节点]){
让answer=recursiveStep(node,end,graph,str=node,visit=newset(),nodes=[]);
若有(答复){
访问。推送(应答);
}
}
}
回访;
}
函数递归步骤(开始、结束、图形、str、访问、节点){
如果(结束===开始){
如果(str.length 3)返回str=“”;
nodes.push(…图形[开始])
while(nodes.length){
start=nodes.shift();
str+=开始
返回递归步骤(开始、结束、图形、str、访问、节点)
}
回访
}

log(search('A','E',graph));
您可以采用较小的方法,迭代实际节点并省略较长的路径和访问的项目

然后检查是否未到达终点,并迭代下一个节点

或者推动结果

函数搜索(开始、结束、图形){
功能iter(节点,已访问){
图[node].forEach(n=>{
如果(访问长度>2 | |访问包括(n))返回;
如果(n!==end)返回iter(n,[…已访问,n]);
结果。推送([…已访问,n]。加入(“”));
});
}
var结果=[];
国际热核实验堆(start,[]);
返回结果;
}
设图={A:['B',D',E'],B:['C'],C:['D',E'],D:['C',E'],E:['B']};

log(搜索('A','E',graph));
调试是学习如何编程时需要掌握的一项关键技能。我建议您学习一些技巧和窍门。