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

Laz*_*zer 5 algorithm tree least-common-ancestor

我正在看这个问题,然后阅读有关Tarjan最不常见的祖先算法.我之前从未遇到任何LCA算法的应用.

常用的LCA算法在哪里?

Jen*_*der 5

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

  • 计算机图形学:通常 3D 风景被分割成形成树状结构的立方体。如果您有一个包含在两个此类立方体中的对象,则 LCA 算法会为您提供包含较大立方体的最小立方体。

  • 分析基因以找出物种与其最低共同祖先之间的关系

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


Dou*_*rie 5

在编译器中,两个基本块的LCA是您可以放置​​计算的位置,因此对两者均可用。这对于消除常见的子表达式或插入phi-node进行SSA转换可能很有用。不过,这些算法已经很好地发展和高度优化,因此LCA本身可能很难看清,例如SSAPRE