TD d’algorithmique avancée

Programming, Math · course

Voir tous les documents en programmation

TD d’algorithmique avancée

TD 8 : Dénombrement sur les arbres binaires

Jean-Michel Dischler et Frédéric Vivien

Dénombrement sur les arbres binaires

Dans cet exercice on notera n le nombre de nœuds d’un arbre binaire, f son nombre de feuilles et h sa

hauteur. Tous les arbres considérés seront supposés non vides.

1. Quelle est la hauteur maximale d’un arbre à n nœuds ?

2. Quel est le nombre maximal de feuilles d’un arbre de hauteur h ?

3. Quel est le nombre maximal de nœuds d’un arbre de hauteur h ?

4. Quelle est la hauteur minimale d’un arbre de n nœuds ?

5. Montrez que le nombre de branches vides — nombre de fils gauches et de fils droits vides — d’un arbre

a n nœuds est égal a n + 1.

Indication : on distinguera les nœuds ayant zéro, un et deux fils.

6. Montrez que le nombre de feuilles est inférieur ou égal à n+1

2

seulement si chaque nœud de l’arbre est soit une feuille, soit a deux fils.

Indication : se servir du raisonnement utilisé à la question précédente.

Publicité

(f ≤ n+1

2 ) et qu’il y a égalité si et

7. Montrez que le nombre de feuilles d’un arbre est égal au nombre de nœuds de degré deux, plus un.

Complexité du tri

Les algorithmes de tris par comparaison peuvent être considérés de façon abstraite en termes d’arbres de

décision. Un arbre de décision représente les comparaisons (à l’exclusion de toute autre opération) effectuées

par un algorithme de tri lorsqu’il traite une entrée de taille donnée. La figure 1 présente l’arbre de décision

correspondant à l’algorithme de tri par insertion s’exécutant sur une liste de trois éléments.

Soient (cid:104)a1, a2, ..., an(cid:105) les n valeurs à trier. Dans un arbre de décision chaque nœud interne est étiqueté

par une expression ai ≤ aj, pour certaines valeurs de i et de j, 1 ≤ i, j ≤ n. L’exécution de l’algorithme

de tri suit un chemin qui part de la racine de l’arbre de décision pour aboutir a une feuille. A chaque

nœud interne, on effectue une comparaison ai ≤ aj et les comparaisons suivantes auront lieu dans le sous-

arbre gauche si ai ≤ aj et dans le sous-arbre droit sinon. Chaque feuille est désignée par une permutation

(cid:104)π(1), π(2), ..., π(n)(cid:105) : si l’algorithme de tri aboutit en la feuille (cid:104)π(1), π(2), ..., π(n)(cid:105), les valeurs à trier

vérifient : aπ(1) ≤ aπ(2) ≤ ... ≤ aπ(n).

a2 ≤ a3

≤

Publicité

(cid:104)1, 2, 3(cid:105)

≤

a1 ≤ a2

≤

>

>

≤

a1 ≤ a3

>

a1 ≤ a3

(cid:104)2, 1, 3(cid:105)

a2 ≤ a3

(cid:104)1, 3, 2(cid:105)

>

(cid:104)3, 1, 2(cid:105)

≤

(cid:104)2, 3, 1(cid:105)

Publicité

>

(cid:104)3, 2, 1(cid:105)

Fig. 1 – Arbre de décision correspondant au traitement de trois éléments au moyen du tri par insertion.

1. Quel est le nombre de feuilles d’un tel arbre de décisions ?

2. En déduire une borne inférieure sur la hauteur de l’arbre de décision.

3. En déduire une borne inférieure sur la complexité du tri de n éléments.

Indication : d’après la formule de Stirling, on a n! >

n

.

n

e (cid:1)

(cid:0)

Arbres binaires de recherche

1. Montrez que le temps de création d’un arbre binaire de recherche à partir d’une liste quelconque de n

éléments est Ω(n log n).

2. Écrivez un algorithme qui teste si un arbre binaire est un arbre binaire de recherche.