最低共同祖先算法的实际应用是什么?

时间:2010-08-22 17:19:31

标签: algorithm tree least-common-ancestor

我正在查看this question,然后阅读Tarjan's least common ancestors algorithm。我之前从未遇到任何LCA算法的应用。

常用的LCA算法在哪里?

3 个答案:

答案 0 :(得分:4)

在编译器中,两个基本块的LCA是一个可以进行计算的地方,因此它可供两者使用。这可能对于消除常见的子表达式或插入用于SSA转换的phi-node非常有用。然而,这些算法已经很好地发展和高度优化,因此LCA本身可能很难看到,例如,SSAPRE

答案 1 :(得分:3)

不知道它在哪里使用,但我有一些想法可以使用它:

  • 计算机图形:通常3D风景被分割成立方体,形成树状结构。如果你有一个包含在两个这样的立方体中的物体,那么LCA算法会给你最小的包含更大的立方体。

  • 为了找到物种与其最低共同祖先之间的关系,
  • 对一族的分析

  • 合并版本控制系统的算法

答案 2 :(得分:-1)

我刚刚写了一篇博文,内容是关于如何在宏基因组学的背景下为分类树实现我自己的算法来解决这个问题(扩展到一组任意长度的节点):

http://blog.bio4j.com/2012/02/finding-the-lowest-common-ancestor-of-a-set-of-ncbi-taxonomy-nodes-with-bio4j/

干杯,

巴勃罗