【发布时间】:2020-04-19 11:19:44
【问题描述】:
考虑下面给出的有向循环图;
如果指定了起点(例如:顶点 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
【问题讨论】:
-
根据原图构建一个新图,节点(u,depth)和从(u,depth)到(v,depth +1)的边,然后只到BFS/DFS找到所有路径从起始节点 (u,0) 到所有节点 (x, maxDepth)
-
我认为你可以增加一个 BFS 来跟踪深度。当它达到正确的深度时,将路径(保存在内存中)添加到路径集合中。
-
@LiorKogan 因此,即使可能有算法解决方案,我将要实现的算法会成倍增长吗?我将查看什么样的时间复杂度?
-
@shapiroyaacov 我最初的想法是这样,但这对我来说似乎是一种非常暴力的方法。有什么方法可以优化方法吗?
标签: algorithm data-structures graph directed-graph