[英]Algorithm to find any two nodes with distance of at least half the (undirected) graph's diameter
[英]Find two paths in a graph that are in distance of at least D(constant)
问题的实例:无向和未加权图G =(V,E)。 两个源节点a和b,两个目标节点c和d以及一个常数D(完全正数)。(我们可以假设lambda(c,d),lambda(a,b)> D,当lambda(x,y) )是G)中x和y之间的最短路径。 我们有两个人站在节点a和b上。
定义 :调度程序集 - 调度程序集是一组命令,这样在每个步骤中只有一个人从他的节点v移动到v个邻居之一,当它们的起始位置在节点a,b和结束位置在节点c中,dA“调度程序集”缺失 - 如果在每个步骤中两个民族之间的距离> D则失调。
我需要找到一种算法,决定是否存在“缺失调度程序集”。
有什么建议?
一个简单的解决方案是首先使用来自O(n *(n + m))中的每个节点的n个广度优先搜索来求解所有对最短路径 。
然后使用lambda(x,y)> D创建有效节点对(x,y)的图形,边缘指示可能的移动。 如果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))。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.