Définitions récursives des arbres

27 Apr 2019 27 Apr 2019 9613 vues ESSADDOUKI Mostafa 7 min de lecture
Complexité algorithmique
1 Introduction à l'analyse des algorithmes 2 Notations asymptotiques 3 Opérations élémentaires et modèles de coût 4 Complexité temporelle et spatiale 5 Méthode de comptage des pas 6 Méthode de comptage des pas pour les boucles
Diviser pour régner & algorithmes de tri
7 Rappel sur l'approche récursive 8 Diviser pour régner 9 la recherche dichotomique 10 Tri par fusion 11 Tri rapide 12 Analyse des fonctions récursives
Les arbres binaires
13 Introduction aux arbres binaires 14 Définitions récursives des arbres 15 Propriétés des arbres binaires 16 Types d'arbre binaire 17 Parcours en profondeur des arbres binaires 18 Parcours en largeur des arbres binaires 19 Exercices corrigés sur les arbres - TD 1 20 Exercices corrigés sur les arbres - TD 2 21 Exercices corrigés sur les arbres - TD 3 22 DS - Arbres binaires de recherche équilibrés (AVL) 23 DS - Codage de Huffman - Compression de données
Algorithmes gloutons
24 Introduction aux algorithmes gloutons 25 Problème de la sélection d'activités 26 Problème de séquencement des tâches 27 Problème du Sac à Dos fraction
Programmation dynamique
28 Introduction à la programmation dynamique 29 Le concept de sous-structure optimale 30 Le concept de sous-problèmes superposés 31 Méthodes de la programmation dynamique 32 Différence entre la programmation dynamique, l'approche diviser pour régner, et les algorithmes gloutons 33 Calculer les nombres de catalan en C++ et Python 34 Calculer le coefficient binomial 35 Le nombre de façons pour construire un mur de dimension 4*N 36 Défi de conversion de mots 37 Décomposition de phrases à partir d'un dictionnaire 38 La collection de pièces dans un labyrinthe 39 Nombre de façons de regrouper les étudiants 40 Compter tous les chemins possibles dans une grille MxN
Méta heuristique
41 Algorithmes heuristiques et métaheuristiques 42 Algorithme de Recuit simulé 43 Algorithme Colonies de fourmis
Théorie des graphes
44 Introduction et notions fondamentales 45 Chemins, cycles et connexité 46 Représentations des graphes 47 Parcours de graphes 48 Algorithme de Dijkstra 49 Algorithme A* 50 Algorithme de Bellman-Ford 51 Algorithme Floyd-Warshall 52 Coloration des graphes
Base de données et SQL
53 Introduction au langage SQL 54 Concepts de base de SGBDR 55 Syntaxes de différentes instructions SQL 56 Création et suppression d'une base de données 57 Opérateurs SQL 58 Les contraintes en SQL 59 Création et suppression des tables en SQL 60 Insertion et modifications des enregistrements 61 Extraction des données - SELECT 62 Filtrer les données - WHERE 63 Recherche de motifs - LIKE 64 Trier les données - ORDER BY 65 Les jointures en SQL - JOIN 66 Fonctions d'agrégation en SQL - SUM, COUNT, AVG, MIN et MAX 67 Organiser des données identiques en groupes - GROUP BY et HAVING 68 Les sous-requêtes en SQL 69 Les fonctions SQL de manipulation de date 70 DS - langage SQL 71 Exercices corrigés de langage SQL
Introduction à l'intelligence artificielle
Introduction à la théorie des jeux
Préparation aux concours
72 Réseau de distribution d'eau 73 Arbre d'expression arithmétique 74 Exploration d'une grotte souterraine

Définitions récursives des arbres

Objectifs

Comprendre la nature récursive des structures arborescentes et maîtriser les définitions formelles des arbres enracinés, des arbres binaires étendus, des arbres binaires complets ainsi que leurs propriétés fondamentales.

Prérequis

Notions de base sur les graphes, la récursivité et les arbres binaires.

Arbre enraciné

Définition — Arbre enraciné

Un arbre enraciné est un ensemble de sommets contenant un sommet distingué appelé racine, et d'arêtes reliant ces sommets, formant une structure hiérarchique sans cycle.

L'ensemble des arbres enracinés peut être défini de manière récursive par les étapes suivantes :

Définition récursive
  • Cas de base : Un seul sommet \(r\) est un arbre enraciné.
  • Étape récursive : Soient \(T_1, T_2, \ldots, T_n\) des arbres enracinés disjoints avec des racines \(r_1, r_2, \ldots, r_n\) respectivement. Le graphe formé par une nouvelle racine \(r\) (n'appartenant à aucun des \(T_i\)) et des arêtes reliant \(r\) à chaque racine \(r_i\) est également un arbre enraciné.
Illustration d'un arbre enraciné

Exemple : construction récursive d'un arbre enraciné

Remarque importante

Dans cette définition, l'ordre des sous-arbres \(T_1, T_2, \ldots, T_n\) n'est pas significatif. Il s'agit d'un arbre enraciné non ordonné (arbre libre avec racine).

Arbre binaire étendu

Définition — Arbre binaire étendu

Un arbre binaire étendu (ou arbre binaire généralisé) est un arbre binaire où chaque nœud a exactement 0 ou 2 enfants, et où les enfants absents sont représentés par des feuilles externes (ou nœuds vides).

L'ensemble des arbres binaires étendus peut être défini de manière récursive par :

Définition récursive
  • Cas de base : L'ensemble vide \(\emptyset\) est un arbre binaire étendu.
  • Étape récursive : Si \(T_1\) et \(T_2\) sont des arbres binaires étendus disjoints, alors il existe un arbre binaire étendu, noté \(T_1 \cdot T_2\), constitué d'une racine \(r\) avec :
    • un sous-arbre gauche \(T_1\) (relié à la racine si \(T_1 \neq \emptyset\)),
    • un sous-arbre droit \(T_2\) (relié à la racine si \(T_2 \neq \emptyset\)).
Illustration d'un arbre binaire étendu

Exemple : arbre binaire étendu avec nœuds externes (carrés)

Interprétation

Les arbres binaires étendus sont particulièrement utiles pour représenter des expressions arithmétiques ou pour l'étude des arbres de décision, où chaque feuille externe correspond à un cas terminal.

Arbre binaire complet

Définition — Arbre binaire complet

Un arbre binaire complet (ou arbre binaire strict) est un arbre binaire où chaque nœud interne possède exactement deux enfants.

L'ensemble des arbres binaires complets peut être défini récursivement par :

Définition récursive
  • Cas de base : Un seul sommet \(r\) (une feuille) est un arbre binaire complet.
  • Étape récursive : Si \(T_1\) et \(T_2\) sont des arbres binaires complets disjoints, alors l'arbre noté \(T_1 \cdot T_2\), constitué d'une racine \(r\) avec sous-arbre gauche \(T_1\) et sous-arbre droit \(T_2\), est également un arbre binaire complet.
Illustration d'un arbre binaire complet

Exemple : arbre binaire complet (chaque nœud interne a 2 enfants)

Complément

La différence fondamentale entre arbre binaire étendu et arbre binaire complet réside dans la gestion des feuilles :

  • Dans un arbre étendu, les feuilles externes (vides) sont explicitement représentées.
  • Dans un arbre complet, toutes les feuilles sont des nœuds réels, et chaque nœud interne a exactement deux enfants.

Hauteur d'un arbre binaire complet

Définition récursive — Hauteur

La hauteur \(h(T)\) d'un arbre binaire complet \(T\) est définie récursivement par :

  • Cas de base : \(h(T) = 0\) pour l'arbre réduit à un seul sommet \(r\).
  • Étape récursive : Si \(T = T_1 \cdot T_2\), alors \[ \boxed{h(T) = 1 + \max\bigl(h(T_1), h(T_2)\bigr)} \]
Exemple de calcul de hauteur
Arbre
    A
   / \
  B   C
 / \   \
D   E   F
Calcul
h(D) = 0, h(E) = 0, h(F) = 0
h(B) = 1 + max(0,0) = 1
h(C) = 1 + max(0,0) = 1
h(A) = 1 + max(1,1) = 2
Explication : La hauteur de l'arbre est la longueur du plus long chemin de la racine à une feuille. Ici, le plus long chemin (A → C → F) a une longueur de 2 arêtes.

Nombre de sommets dans un arbre binaire complet

Définition récursive — Nombre de sommets

Soit \(n(T)\) le nombre de sommets dans un arbre binaire complet \(T\). La fonction \(n(T)\) est définie récursivement par :

  • Cas de base : \(n(T) = 1\) pour l'arbre réduit à un seul sommet \(r\).
  • Étape récursive : Si \(T = T_1 \cdot T_2\), alors \[ \boxed{n(T) = 1 + n(T_1) + n(T_2)} \]
Proposition

Pour un arbre binaire complet de hauteur \(h\), le nombre de sommets vérifie :

\[ n(T) \ge 2h + 1 \quad \text{et} \quad n(T) \le 2^{h+1} - 1 \]

Le minimum est atteint pour un arbre filiforme (chaque nœud interne a un enfant feuille), le maximum pour un arbre parfait (tous les niveaux remplis).

Comparaison des types d'arbres

Type d'arbre Caractéristique principale Définition récursive
Arbre enraciné Un nœud distingué (racine), ordre non significatif \(T = r \cup \{T_1, T_2, \ldots, T_n\}\)
Arbre binaire étendu Feuilles externes (vides) représentées, 0 ou 2 enfants \(T = \emptyset\) ou \(T = T_1 \cdot T_2\)
Arbre binaire complet Chaque nœud interne a exactement 2 enfants \(T = \text{feuille}\) ou \(T = T_1 \cdot T_2\)

Propriétés supplémentaires

Théorème — Relation feuilles / nœuds internes

Dans un arbre binaire complet (strict) :

\[ \boxed{L = I + 1} \]

où \(L\) est le nombre de feuilles et \(I\) le nombre de nœuds internes.

Théorème — Nombre de nœuds et hauteur

Pour un arbre binaire complet de hauteur \(h\) :

\[ h + 1 \le n(T) \le 2^{h+1} - 1 \]

et réciproquement :

\[ \lceil \log_2(n(T) + 1) \rceil - 1 \le h(T) \le n(T) - 1 \]

L'essentiel en bref

Synthèse des définitions récursives
  • Arbre enraciné : \(T = r \cup \{T_1, \ldots, T_n\}\) avec \(T_i\) des arbres enracinés disjoints.
  • Arbre binaire étendu : \(T = \emptyset\) (cas vide) ou \(T = T_1 \cdot T_2\) avec \(T_1, T_2\) étendus.
  • Arbre binaire complet : \(T = \text{feuille}\) ou \(T = T_1 \cdot T_2\) avec \(T_1, T_2\) complets.
  • Hauteur : \(h(\text{feuille}) = 0\), \(h(T_1 \cdot T_2) = 1 + \max(h(T_1), h(T_2))\)
  • Nombre de sommets : \(n(\text{feuille}) = 1\), \(n(T_1 \cdot T_2) = 1 + n(T_1) + n(T_2)\)
Conseil pratique

La récursivité est au cœur de la manipulation des arbres. Pour concevoir des algorithmes sur les arbres (parcours, recherche, insertion, suppression), pensez toujours en termes de cas de base (arbre vide ou feuille) et d'étape récursive (combinaison des résultats des sous-arbres).

Un peu d'histoire

Les définitions récursives des arbres ont été formalisées par Donald Knuth dans The Art of Computer Programming (Volume 1, 1968). Cette approche récursive est fondamentale pour comprendre et implémenter correctement les structures arborescentes en programmation.

Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.