Antepasado menos común

El ancestro menos común ( el ancestro común más bajo ) de los vértices u y v en el árbol con raíz T es el vértice más distante de la raíz del árbol, que se encuentra en ambos caminos desde u y v hasta la raíz, es decir, es el ancestro de ambos vértices. La abreviatura generalmente aceptada es LCA del inglés.  ancestro común más bajo (menos) .

Algoritmos

El algoritmo más simple e ingenuo para encontrar el ancestro menos común es calcular las profundidades de u y v y avanzar gradualmente en el árbol desde cada vértice hasta encontrar un vértice común:

Procedimiento ACV( u , v ): h1 := profundidad( u ) // profundidad( x ) = profundidad del vértice x h2 := profundidad( v ) mientras que h1 ≠ h2: si h1 > h2: u  := padre( u ) h1 := h1 - 1 más : v  := padre( v ) h2 := h2 - 1 while u ≠ v : u  := padre( u ) // padre( x ) = ancestro inmediato de x v  := padre( v ) te devuelvo

El tiempo de ejecución de este algoritmo es O ( h ), donde h  es la altura del árbol. Además, es posible que se requiera un preprocesamiento de tiempo O ( n ) para encontrar el ancestro inmediato de todos los nodos en el árbol (pero esta estructura generalmente ya está presente en el árbol).

Sin embargo, hay algoritmos más rápidos:

Literatura

Enlaces