查找树中两个给定顶点之间的路径的最有效方法

时间:2019-06-15 13:18:49

标签: algorithm tree graph-theory

我有一棵树。 给出了两个顶点a,b作为输入,我们需要打印它们之间的路径。 一种方法是从a找到所有路径并打印以b结尾的路径,有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

让您的两个节点为A, B

简单的解决方案是将其视为任何Path finding problem,并忽略图形的tree属性。在这种情况下,BFSBi Directional BFS比查找所有路径并在O(|V|)中找到最短路径要有效得多。

通过这种方法,您可以从A / B运行BFS,或者从两者运行双向BFS,以获得最短路径。


更复杂的技术包括将树视为根,然后首先可以在树中找到AB中的Lowest Common Ancestor。设为S。然后,最短的路径就是A->...->S->...->B

这可以在O(h)时间完成,其中h是树的高度。