Université Jean Monnet Licence d’Informatique
Analyse des algorithmes
Contrôle Continu - Décembre 2013
Durée : 2 heures
Tous documents manuscrits autorisés (sauf la copie du voisin bien sûr)
Barême (indicatif et provisoire)
Question I II III.1 III.2
sur 6 pts 4 pts 5 pts 5 pts
Difficulté Facile Facile Dur Moyen
CONSEILS :
– lire tout l’énoncé avant de commencer ;
– une preuve d’arrêt et de correction de chacun des algorithmes demandés, même sommaire
pourvu qu’elle soit correcte, serait la bienvenue.
I (Chose promise, chose due) - On considère l’ordre d’insertion suivant dans un B-arbre
d’ordre 2 (c’est-à-dire un 2,3,4-arbre) :
mvzunwxjfarbpktcglhiydoqse
1 . Donner le B-arbre final si l’insertion se fait avec éclatement à la remontée.
2 . Donner le B-arbre final si l’insertion se fait avec éclatement à la descente.
3 . On considère le B-arbre suivant :
|________________________________________hs_____________________________________|
|_____________be__________|_____________lp__________|______________w____________|
|____a__|____cd_|_____fg__|____ijk|____mno|_____qr__|_______tuv___|_______xyz___|
On enlève successivement h,g,fpuis a. Donner le B-arbre final.
II (Chemins de traverse) - Un chemin entre deux sommets xet yd’un arbre binaire Aest une
liste récursive de sommets de A, dont les extrémités sont xet y,sans répétition de sommets,
et dans laquelle deux sommets adjacents sont père et fils dans A.
Soit chemin(A,x) un algorithme qui donne le chemin reliant la racine d’un arbre binaire A
à l’un de ses sommets x, sous la forme d’une liste récursive de sommets dont le premier est la
racine de Aet le dernier est x. Écrire un algorithme utilisant chemin qui, prenant en entrée un
arbre binaire Aet deux sommets xet yde A, renvoie le chemin (sous forme de liste récursive de
sommets) dans Areliant xày. La liste retournée par votre algorithme peut commencer par xet
se terminer par you l’inverse.
NB : on ne demande pas d’écrire chemin(A,x), et on considèrera que sa complexité est linéaire
en le nombre de sommets de A.
III (The postman always rings twice) - On se propose d’écrire deux algorithmes construisant
l’arbre correspondant à une expression arithmétique ; pour le premier, l’expression est donnée sous
forme préfixe, pour l’autre sous forme postfixe. L’expression est dans une liste récursive, et on
supposera que l’on dispose de la fonction opérande?(x) qui renvoie vrai si et seulement si xest
une opérande.
Par exemple, la liste [+,*,x,+,x,2,*,-,x,4,x] devrait donner l’arbre