给定一棵树T =(V,E),找到从顶点v到顶点w的直接路径

时间:2019-05-25 15:26:18

标签: python tree pseudocode direct-path

我被困在算法分配中,该算法要求在时间复杂度O(dist(v,w)中找到从顶点v到顶点w有n个顶点(无环间接图)的n个树(V,E)中的直接路径。 ))。我必须找到一个预处理程序(在O(n)中运行)来存储一些信息,以便可以实现时间复杂度O(dist(v,w))。

我需要对预处理中的哪些存储有所了解,这将对以后的算法有所帮助。

没有完整的解决方案。

我已经尝试存储可能的路径,但是要创建全局调整列表,我需要二次时间O(n ^ 2)。 Dijkstra的运行也超过了要求的时间复杂度(以及网络的所有路由算法)。 一棵树中的两个节点具有唯一的路径。

也尝试使用动态编程来存储已经发现的所有路径,但是我认为我克服了线性时间。运行BFS并存储所有先前的路径,例如:AndroidManifest.xml

(node, node) : next hop

因此,我需要(A, B) : B and (B, A) : A (B, C) : C (C, B): B (A, C) : B and (C, A): B

1 个答案:

答案 0 :(得分:0)

如果您的网络是一棵树,则每个顶点只有一个“入站”边。因此,您应该尝试遍历从W到V的链接(遵循入站边),而不是其他方式。这将为您提供相反的路径。将其存储在列表中并反转以产生结果。

请注意,如果您尚无从下到上遍历树的方法,则可能需要构建一个顶点字典{child:parent}。构建此词典将花费O(E)时间,然后找到路径将花费dist(V,W)时间。