在图中找到距离至少为D(常数)的两条路径

时间:2014-05-08 15:37:36

标签: algorithm graph path nodes distance

问题的实例: 无向和未加权图G =(V,E)。 两个源节点a和b,两个目标节点c和d以及一个常数D(完全正数)。(当我们可以假设λ(c,d),lambda(a,b)> D,当λ(x, y)是G)中x和y之间的最短路径。 我们有两个人站在节点a和b上。

定义:调度程序集 - 调度程序集是一组命令,使得在每个步骤中,当它们的起始位置在节点a,b中并且结束位置在节点c,dA"调度程序集"如果在每个步骤中两个民族之间的距离是> d。

我需要找到一种算法来决定是否存在"缺失 - 调度程序集"或不。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

一个简单的解决方案是首先使用O(n *(n + m))中每个节点的n个广度优先搜索来解决all-pairs shortest paths

然后用lambda(x,y)>创建有效节点对(x,y)的图形。 D,边缘表示可能的移动。如果v = x,则存在边{(v,w),(x,y)}并且原始图中存在边{w,y}或者如果w = y并且存在边{v,x}在原始图表中。这个新图有O(n ^ 2)个节点和O(nm)边。

现在您只需要检查(c,d)是否可以从新图中的(a,b)到达。这可以使用DFS或BFS来实现。

总运行时间为O(n *(n + m))。