无法在有向图中获得从A到E的所有路线

问题描述 投票:0回答:1

我在获取图中的所有路线时遇到了一些麻烦。它适用于某些情况,但显然有些问题,因为它无法获得从A到E的所有路线。

let graph = {
    'A': ['B', 'D', 'E'],
    'B': ['C'],
    'C': ['D', 'E'],
    'D': ['C', 'E'],
    'E': ['B']
};

function search(start, end, graph) {
    
    let queue = [...graph[start]];
    let visited =  [];
    while (queue.length) {
      count = 1;
      let node = queue.shift();
      if (graph[node]){
          let answer = recursiveStep(node, end, graph, str = node, visit = new Set(), nodes = []);
          if (answer){
            visited.push(answer);
          }
      }
    }
    return visited;
}

function recursiveStep(start, end, graph, str, visit, nodes) {   
    if (end === start) {
        if (str.length <= 3 && !visit.has(str)) {
            visit.add(str)
            return str};
    }
    if (str.length > 3) return str = ""; 
    nodes.push(...graph[start])
    while (nodes.length) {
        start = nodes.shift();
        str += start
        return recursiveStep(start, end, graph, str, visit, nodes)
    }
    return visit
}


console.log(search('A', 'E', graph));

输出为['DCE','E'],但是由于我需要所有小于或等于3的路由,因此应为:['E','DCE','BCE']。如果您想使用node复制和粘贴代码,则该代码有效。也许有一个错误,不是太确定,但是我也尝试过反复进行,但是几天之后,我被卡住了。非常感谢您的帮助。

javascript graph directed-graph
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.