Dans cet article, on va illustrer le fonctionnement de l’algorithmique sur un exemple suffisamment typique pour montrer comment ça marche, et suffisamment simple pour ne pas nécessiter de connaissances préalables sur la théorie des graphes ou la structure interne des ordinateurs. Il s’agit du calcul du temps minimal qu’il faut pour parcourir un arbre équilibré.
L’algorithmique est l’étude des algorithmes, en particulier du point de vue de la comparaison de leurs performances.
Position du problème
Une activité fréquente en informatique est la recherche d’une donnée dans une base de données. Par exemple, le succès du moteur de recherche Google montre l’importance qu’il y a à pouvoir retrouver une donnée, autant que la difficulté que représente cette tâche lorsque la base de données est immense...
Un exemple de méthode de recherche est l’algorithme de recherche par dichotomie : Supposons que je veuille chercher un mot dans le dictionnaire, en ayant une connaissance parfaite de l’ordre alphabetique. Je peux très bien ouvrir le dictionnaire pile au milieu de celui-ci, puis, si le mot cherché est avant la lettre que je vois, l’ouvrir au premier quart, sinon aux trois quarts, etc. Ce procédé me permettra à coup sûr de trouver le mot que je cherche mais le permet-il rapidement ? Il va de soi que si on cherche un mot comme « abeille » ou « zygomatique » la méthode par dichotomie n’est pas la plus adaptée... Cela est dû à ce que les lettres extrêmes ont beaucoup moins de pages que les lettres du milieu en français, et que l’arbre de recherche n’est pas équilibré.
Définitions
- Un arbre est dit binaire si, de chaque nœud, partent au plus deux branches (ou arêtes). C’est le cas de l’arbre obtenu par dichotomie.
- La profondeur d’un arbre est le nombre maximal d’arêtes qui séparent une feuille (nœud terminal) de sa racine (premier nœud).
- Un arbre équilibré est un arbre binaire tel que les deux sous-arbres partant de chaque nœud autre qu’une feuille ont des profondeurs différant au maximum de 1.
Un exemple d’arbre très déséquilibré est la liste, où chaque nœud a un seul fils, et qui revient à chercher un mot dans le dictionnaire en commençant par « abacule », puis en passant à « abaque » etc...
Pour chercher le temps maximal mis à parcourir un arbre équilibré, lequel est mesuré par sa profondeur, on va inverser le problème et chercher dans un premier temps le nombre minimal de nœuds d’un arbre équilibré de profondeur
pour toute valeur de
. En notant
la suite obtenue, on cherche essentiellement une valeur asymptotique de
, pour
tendant vers l’infini.
Expression récurrente de la suite
Voici les premiers arbres équilibrés minimaux, numérotés par leurs profondeurs à partir de la profondeur nulle (un seul sommet) :
Par simple comptage des nœuds, on voit que
,
,
,
et
.
Mais on voit aussi que l’arbre équilibré minimal de profondeur
contient, à sa gauche, l’arbre équilibré minimal de profondeur
et, à sa droite, celui de profondeur
. L’exemple
est illustré en couleur, à ceci près que pour des raisons de place disponible on a retourné l’arbre
, représenté en bleu. Et comme en plus des sous-arbres rouge et bleu, il y a aussi le sommet de l’arbre, on a pour tout
,
![]()
L’essentiel du problème d’algorithmique étudié ici consiste alors à trouver une expression analytique de
fonction de
, à partir de laquelle on aura l’expression asymptotique voulue.
Pour commencer, on peut calculer les premiers termes de
avec un tableur et représenter graphiquement la suite. Pour le calcul des termes, on a ceci :
| 0 | 1 |
| 1 | 2 |
| 2 | 4 |
| 3 | 7 |
| 4 | 12 |
| 5 | 20 |
| 6 | 33 |
| 7 | 54 |
| 8 | 88 |
| 9 | 143 |
| 10 | 232 |
La représentation graphique donnée par SciLab en coordonnées logarithmiques suggère que la suite
est asymptotiquement géométrique, de raison supérieure à 1 :
Expression analytique
Pour trouver
en fonction de
, on utilise sa fonction génératrice

définie sur
ou plus précisément sur le disque de centre 0 et de rayon
, rayon de convergence de la série, qu’il reste à déterminer.
L’utilisation de la relation de récurrence dans la définition de
donne alors une relation algébrique vérifiée par
, laquelle permet à son tour de déterminer ![]()
![]()
Ensuite on factorise le dénominateur pour trouver la série de Taylor de
qui donnera par identification des coefficients, la valeur voulue de
.
![]()
expression dont il est d’ailleurs difficile de deviner que c’est un entier !
Ordre de grandeur
On déduit enfin de l’expression analytique ci-dessus que, lorsque
tend vers l’infini,
est équivalente à
, le second terme tendant vers 0 en tant que suite géométrique de raison inférieure à 1 en module, et le troisième terme, constant, étant négligeable devant le premier.
Il ne reste plus pour conclure l’exemple, qu’à inverser l’approximation ci-dessus :


![]()
Or
, donc les deux premiers termes du second membre sont négligeables devant le reste qui tend vers l’infini :
![]()
et finalement

ce qu’on note
: La profondeur (donc, à un facteur près, le temps mis à parcourir l’arbre) d’un arbre binaire équilibré est en « log(n) », ce qui est très bon si on compare à d’autres algorithmes bien connus, de complexité polynomiale (
) voire exponentielle (
). Reste à voir si le temps mis à équilibrer l’arbre ne diminue pas trop les performances lorsqu’il s’agit de parcourir celui-ci, mais ceci est une autre histoire...
En conclusion
Tout ceci ressemble quand même beaucoup à des maths, non ? Et même des maths de haut niveau, surtout si on s’attaque à des problèmes plus complexes d’algorithmique, où la fonction génératrice vérifie une équation algébrique polynomiale, voire une équation différentielle. Dans ce cas on utilise souvent le théorème des résidus !
Sans parler du fait que l’un des sept problèmes de la fondation Clay concerne lui aussi l’algorithmique !
L’algorithmique, comme toute science qui se respecte, possède sa « bible », facétieusement titrée L’art de la programmation des ordinateurs par son auteur, Donald Knuth. En effet, si la programmation est un art, l’algorithmique est une science, et l’ouvrage de D. Knuth décrit bel et bien cette science et non la programmation elle-même.
Et c’est bien de programmation qu’il s’agit en Seconde, et pas de calculs comme ceux qui ont été exposés ci-dessus (et qui, rappelons-le, concernent un des exemples les plus simples du tome 3 du Knuth !).
Sur les arbres équilibrés (on utilise aussi l’expression « un arbre AVL »), on consultera avec intérêt l’article de Ben Pfaff sur le sujet, ou, de façon plus générale, le cours d’algorithmique de Jean-Jacques Lévy pour l’école polytechnique.






et 
. Par ailleurs, on peut trouver la série de Taylor de 



, 



obtenue par diagonalisation de celle-ci, comme on peut le voir en consultant 
Commentaires