在编译器中,两个基本块的最近公共祖先是可以放置计算以使其对两个块都可用的位置。这可能对消除常见子表达式或插入phi节点进行SSA转换很有用。这些算法已经发展成熟且高度优化,因此LCA本身可能难以观察,例如SSA和PRE。
不知道它在哪里被使用,但我有几个想法可能会用到: 计算机图形学:通常将3D场景分割成立方体,形成树状结构。如果你有一个对象包含在两个这样的立方体中,LCA算法会给出最小的包含更大的立方体。 基因分析,以找到物种之间的关系和它们的最近公共祖先 版本控制系统的合并算法
我刚刚写了一篇关于如何在元基因组的环境下实现一个(具有任意长度节点的)分类树问题的自己的算法的博客文章: http://blog.bio4j.com/2012/02/finding-the-lowest-common-ancestor-of-a-set-of-ncbi-taxonomy-nodes-with-bio4j/ 祝好, Pablo