Algorithmique et Programmation Projet : Plus petit ancetre commun Ecole normale superieure Departement d'informatique 2011-2012 Le probleme du Lowest Common Ancestor (LCA) est le suivant : etant deux noeuds u et v dans un arbre donne, il s'agit de trouver quel est l'ancetre commun a u et a v qui est le plus eloigne possible de la racine. Il existe un algorithme quasi-trivial qui resout la question en temps O (h) ou h designe la hauteur de l'arbre. On pourrait aussi precalculer le resultat pour toutes les paires de sommets, afin de pouvoir repondre en temps constant, mais apres un precalcul en O ( n2 ) , et en utilisant un espace O ( n2 ) . On sait depuis 1984 [3] qu'il est possible de resoudre le probleme en temps constant, si on a pu faire au prealable un precalcul lineaire en la taille de l'arbre. Le but de ce projet est de programmer un algorithme exhibant ces performances. 1 Correspondance avec Range Minimum Queries Le probleme Lowest Common Ancestor est etroitement lie a un autre probleme, Range Minimum Queries. Dans cet autre probleme, on a un tableau A contenant n entiers, et il s'agit de calculer RMQA(i, j) = arg min i≤k≤j A[k] ou arg mink .
- bloc quelconque
- zero dans l'ordre du parcours prefixe
- minimum de l'intervalle
- probleme du lowest common
- arbre
- probleme rmq
- arbre binaire
- bloc