繁体   English   中英

在给定起始顶点和深度限制的情况下查找循环有向图中的所有可能路径

[英]Finding all possible paths in a cyclic directed graph given a starting vertex and a depth limitation

考虑下面给出的有向循环图;

在此处输入图像描述

如果指定了起点(例如:顶点 0)和允许的最大深度(例如:5),可以使用什么算法来查找所有可能的路径(注意:给定的顶点可以多次访问)?

实现这个图问题的最有效算法是什么?

上图的一些可能路径在下面没有特定顺序给出(从顶点 0 开始,允许的最大深度为 5)。

  • 0 -> 1 -> 2 -> 4 -> 1 -> 3
  • 0 -> 1 -> 2 -> 4 -> 5 -> 1
  • 0 -> 1 -> 2 -> 4 -> 5 -> 6
  • 0 -> 1 -> 3 -> 5 -> 1 -> 3

用于此的伪算法将是一个增强的 BFS,它跟踪它所经过的路径。 当它达到所需的深度时,它会注册路径然后终止。

像这样的东西(node.js 风格的语法):

const requiredDepth = X
const relevantPaths = {}

const runBFS = (curNode, curPath = []) => {
    if (crPath.length === requiredDepth) {
        relevantPaths.push(curPath)
        return
    }

    for (let neighbor of curNode.neighbors) {
        const newPath = [ ...curPath, getEdge(curNode, neighbor) ]
        runBFS(neighbor, newPath)
    }
}

runBFS(root)

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM