On souhaite insérer dans une structure de données les différentes hauteurs d'un arbre au fil des années sans y insérer les années. La structure de données la plus adaptée en Python est :
Quand on observe l'évolution d'une quantité numérique, ce n'est pas en général pour sortir le premier ou le dernier élément en premier, donc pile et file sont à exclure.
De plus, il n'y a pas d'association donc un dictionnaire est impossible.
Seule la liste convient pour ce genre de problème.
Dans une association, on souhaite enregistrer une liste d'informations pour chaque adhérent : taille, poids, etc. La meilleure structure de données pour cela est :
Il s'agit ici d'enregistrer des associations, c'est-à-dire des éléments qui sont rattachés à d'autres (adhérents -> informations), donc le dictionnaire est le plus adapté.
Les clefs seront les adhérents et les valeurs les informations.
Représentation d'une liste avec un tableau
Une manière simple de représenter une liste est d'utiliser un tableau de taille fixe dont chaque élément est identifié par son indice.On peut représenter une liste contenant n éléments avec un tableau L[0..n] comme suit :
Ecrire en Python (ou en pseudo-code) le code de la fonction INSERER(L,e,i)
qui insére l'élément e
à la position i
de la liste L
.
Représentation d'une liste avec un tableau
Une manière simple de représenter une liste est d'utiliser un tableau de taille fixe dont chaque élément est identifié par son indice.On peut représenter une liste contenant n éléments avec un tableau L[0..n] comme suit :
Ecrire en Python (ou en pseudo-code) le code de la fonction SUPPRIMER(L,i)
qui supprime l'élément à la position i
de la liste L
.
Représentation d'une liste avec un tableau
Une manière simple de représenter une liste est d'utiliser un tableau de taille fixe dont chaque élément est identifié par son indice.On peut représenter une liste contenant n éléments avec un tableau L[0..n] comme suit :
Ecrire en Python (ou en pseudo-code) le code de la fonction RECHERCHER(L,e)
qui recherche l'élément e
de la liste L
et retourne son index si l'élément est trouvé et None
code> sinon.
Sur quel principe sont basées les piles ?
Les piles sont basées sur le principe LIFO (Last In First Out : le dernier rentré sera le premier à sortir). On retrouve souvent ce principe LIFO en informatique.
Donner les opérations de base que l'ont peut réaliser sur une pile.
On donnera le nom des fonctions avec leur(s) paramètre(s) et la description de ce que fait chaque fonction de base.
Voici les opérations que l'on peut réaliser sur une pile :
CREER_PILE_VIDE()
crée et retourne une pile vide.EMPILER(P,e)
: insére l'élément e
au sommet de la pile P
.DEPILER(P)
: enlève et retourne l'élément au sommet de la pile P
.EST_VIDE(P)
: retourne Vrai si la pile P
est vide et Faux sinon.EST_PLEINE(P)
: retourne Vrai si la pile P
est pleine et Faux sinon.
Sur quel principe sont basées les files ?
Les files sont basées sur le principe FIFO (First In First Out : le premier qui est rentré sera le premier à sortir. Ici aussi, on retrouve souvent ce principe FIFO en informatique.
Donner les opérations de base que l'ont peut réaliser sur une file.
On donnera le nom des fonctions avec leur(s) paramètre(s) et la description de ce que fait chaque fonction de base.
Voici les opérations que l'on peut réaliser sur une file :
CREER_FILE_VIDE()
crée et retourne une pile vide.ENFILER(F,e)
: insére l'élément e
à la queue de la file F
.DEPILER(P)
: enlève et retourne l'élément au sommet de la pile P
.EST_VIDE(P)
: retourne Vrai si la pile P
est vide et Faux sinon.EST_PLEINE(P)
: retourne Vrai si la pile P
est pleine et Faux sinon.
Quelles sont les principales caractéristiques d'un arbre ?
Les principales caractéristiques d'un arbre sont :
Donner la définition de l'arité d'un arbre.
L'arité d'un arbre est le nombre maximum de fils qu'un noeud peut avoir.
L'arité d'un arbre binaire non dégénéré est 2.
Donner la définition de la hauteur d'un arbre.
La hauteur d'un arbre est le nombre de noeuds contenus dans sa branche la plus longue sans compter la racine.
On considère l'arbre suivant :
Donner les caractéristiques de cet arbre.
L'arbre est bien binaire (arité égale à 2)
L'arbre n'est pas complet : toutes les feuilles n'ont pas la même hauteur (les feuilles E, F et G ont pour hauteur 2 alors que les feuilles I et J ont pour hauteur 3).
Calculer (en détaillant) les mesures suivantes de cet arbre :
Sa longueur de cheminement : LC
La longueur de cheminement LC est la somme des hauteurs de tous ses noeuds :
Un noeud de hauteur 0 : A
3 noeuds de hauteur 1 : B, C et D
4 noeuds de hauteur 2 : E, F, G et H
2 noeuds de hauteur 3 : I et J
La longueur de cheminement de cet arbre est donc : $LC = 1 \times 0 + 3 \times 1 + 4 \times 2 + 2 \times 2 = 15$.
Sa longueur de cheminement externe : LCE
La longueur de cheminement externe LCE est la somme des hauteurs de tous ses noeuds feuilles:
La longueur de cheminement externe de cet arbre est donc : LCE = H(E) + H(F) + H(G) + H(I) + H(J) = 2 + 2 + 2 + 3 + 3 = 12.
Sa longueur de cheminement interne : LCI
La longueur de cheminement LCI interne est la somme des hauteurs de tous ses noeuds internes.
On a LCI = LC - LCE = 15 - 12 = 3.
Sa profondeur moyenne : PM
La profondeur moyenne PM est le quotient de LC par la taille de l'arbre.
Soit $PM = \frac{LC}{taille} = \frac{15}{10} = 1,5$
Sa profondeur moyenne externe : PME
La profondeur externe PM est le quotient de LCE par le nombre de feuilles NF de l'arbre.
Soit $PME = \frac{LCE}{NF} = \frac{12}{5} = 2,4$
Sa profondeur moyenne interne : PMI
La profondeur interne PMI est le quotient de LCI par (la taille de l'arbre - le nombre de feuilles NF de l'arbre).
Soit $PMI = \frac{LCI}{taille - NF} = \frac{3}{10 - 5} = \frac{3}{5} = 0,6$
Ranger par ordre croissant les 3 profondeurs calculées.
On vérifie que : PMI < PM < PME
Quelles sont les principales caractéristiques d'un arbre ?
Les principales caractéristiques d'un arbre sont :
Donner la définition de la taille d'un arbre.
La taille d'un arbre est le nombre de ses noeuds.
Donner la définition d'un arbre équilibré.
Un arbre équilibré est un arbre dont la différence de longueur entre sa branche la plus longue et la plus courte est au plus égale à 1.
On considère l'arbre suivant :
Donner les caractéristiques de cet arbre.
L'arité de cet arbre est 2 : le nombre maximum de fils d'un noeud de l'arbre est 2 (pour le noeud B).
Donc l'arbre est binaire.
Calculer (en détaillant) les mesures suivantes de cet arbre :
Sa longueur de cheminement : LC
La longueur de cheminement LC est la somme des hauteurs de tous ses noeuds :
Un noeud de hauteur 0 : A
2 noeuds de hauteur 1 : B et C
2 noeuds de hauteur 2 : D et E
2 noeuds de hauteur 3 : F et H
1 noeud de hauteur 4 : I
La longueur de cheminement de cet arbre est donc : $LC = 1 \times 0 + 2 \times 1 + 2 \times 2 + 2 \times 3 + 1 \times 4 = 16$.
Sa longueur de cheminement externe : LCE
La longueur de cheminement externe LCE est la somme des hauteurs de tous ses noeuds feuilles:
La longueur de cheminement externe de cet arbre est donc : LCE = H(C) + H(F) + H(I) = 1 + 3 + 4 = 8.
Sa longueur de cheminement interne : LCI
La longueur de cheminement LCI interne est la somme des hauteurs de tous ses noeuds internes.
On a LCI = LC - LCE = 16 - 8 = 8.
Sa profondeur moyenne : PM
La profondeur moyenne PM est le quotient de LC par la taille de l'arbre.
Soit $PM = \frac{LC}{taille} = \frac{16}{8} = 2$
Sa profondeur moyenne externe : PME
La profondeur externe PM est le quotient de LCE par le nombre de feuilles NF de l'arbre.
Soit $PME = \frac{LCE}{NF} = \frac{12}{5} = 2,4$
Sa profondeur moyenne interne : PMI
La profondeur interne PMI est le quotient de LCI par (la taille de l'arbre - le nombre de feuilles NF de l'arbre).
Soit $PMI = \frac{LCI}{taille - NF} = \frac{8}{16 - 8} = \frac{8}{8} = 1$
Ranger par ordre croissant les 3 profondeurs calculées.
On vérifie que : PMI < PM < PME
Quelles sont les principales caractéristiques d'un arbre ?
Les principales caractéristiques d'un arbre sont :
Donner la définition de la hauteur d'un arbre.
La hauteur d'un arbre est la longueur de sa branche la plus longue sans compter la racine. (Un arbre réduit à un seul noeud à une hauteur de 0).
Donner la définition d'un arbre dégénéré.
Un arbre dégénéré (ou filiforme) est un arbre binaire dont tous les noeuds (sauf la feuille) ont un unique enfant. C'est aussi une liste.
On considère l'arbre suivant :
Donner les caractéristiques de cet arbre.
La liste de ses branches :
La liste de ses noeuds internes : (A,B,C,D,E,F,G)
Cet arbre est-il un arbre binaire complet ? Justifier.
C'est un arbre binaire complet : tous les noeuds ont exactement deux fils (sauf les noeuds feuilles) et toutes les branches ont la même longueur.
Calculer (en détaillant) les mesures suivantes de cet arbre :
Sa taille : 15
Sa hauteur : 3
Sa longueur de cheminement : LC
La longueur de cheminement LC est la somme des hauteurs de tous ses noeuds :
Un noeud de hauteur 0 : A
2 noeuds de hauteur 1 : B et C
4 noeuds de hauteur 2 : D, E, F et G
8 noeuds de hauteur 3 : H, I, J, K, L, M, N et O
La longueur de cheminement de cet arbre est donc : LC = 1x0 + 2x1 + 4x2 + 8x3 = 34.
Sa longueur de cheminement externe : LCE
La longueur de cheminement externe LCE est la somme des hauteurs de tous ses noeuds feuille:
La longueur de cheminement externe de cet arbre est donc : LCE = H(H) + H(I) + H(J) + H(K) + H(L) + H(M) + H(N) + H(O) = 8x3 = 24.
Sa longueur de cheminement interne : LCI
La longueur de cheminement LCI interne est la somme des hauteurs de tous ses noeuds internes.
On a LCI = LC - LCE = 34 - 24 = 10.
Sa profondeur moyenne : PM
La profondeur moyenne PM est le quotient de LC par la taille de l'arbre.
Soit $PM = \frac{LC}{taille} = \frac{34}{15}$
Sa profondeur moyenne externe : PME
La profondeur externe PM est le quotient de LCE par le nombre de feuilles NF de l'arbre.
Soit $PME = \frac{LCE}{NF} = \frac{24}{8} = 3$
Sa profondeur moyenne interne : PMI
La profondeur interne PMI est le quotient de LCI par (la taille de l'arbre - le nombre de feuilles NF de l'arbre).
Soit $PMI = \frac{LCI}{taille - NF} = \frac{10}{15 - 8} = \frac{10}{7}$
Ranger par ordre croissant les 3 profondeurs calculées.
On vérifie que : PMI < PM < PME
On nomme h
la hauteur d'un arbre binaire.
Donner en fonction de h
:
La taille minimale d'un arbre binaire.
L'arbre binaire de taille minimale minimal de hauteur h est un arbre filiforme (une liste) qui contient h + 1
noeuds.
La taille minimale d'un arbre binaire de taille h
est h + 1
.
La taille maximale d'un arbre binaire.
L'arbre binaire de taille maximale de hauteur h est un arbre binaire complet (une liste) qui contient $ 1 + 2 + 4 + ... 2^h = 2^{h+1} - 1 noeuds.
Comment nomme-t-on un arbre binaire de taille maximale ?
Un arbre binalire de taille maximale est un arbre binaire complet.
On définit un arbre de Fibonacci comme un arbre An
tel que les sous arbres gauche et droit de An
sont respectivement An-1
et An-2
, en admettant que A0
est un arbre avec une unique racine et A1
est composé d'une racine ayant un fils gauche et un fils droit.
Voici une représentation sagittale de l'arbre A2
.
Donner une représentation sagittale de l'arbre A3
.
Les arbres de Fibonacci sont-ils des arbres équilibrés ? Justifier.
Quelle est la formule récurrente qui donne la hauteur d'un arbre en fonction des hauteurs de ses sous arbres gauche et droit ?
Rappeler la définition d'un arbre équilibré.
Les arbres de Fibonacci sont-ils équilibrés ? Justifier.
Les arbres de Fibonacci sont équilibrés.
En effet la hauteur de l'arbre de Fibonacci Ak
est k.
La différence de hauteur entre Ak
et Ak+1
est égale à 1.
Or, comme An
a pour fils gauche An-1
de hauteur n - 1 et pour fils droit An-2
de hauteur n - 2, ces deux hauteurs différent de 1.
Donc un arbre de Fibonacci est bien équilibré.
On définit un arbre de Fibonacci comme un arbre An
tel que les sous arbres droit et gauche de An
sont respectivement An-1
et An-2
, en admettant que A0
est un arbre avec une unique racine et A1
est composé d'une racine ayant un fils gauche et un fils droit.
Voici une représentation sagittale de l'arbre A2
.
Donner une représentation sagittale de l'arbre A3
.
Quelle est la formule récurrente qui donne la taille d'un arbre en fonction des tailles de ses sous arbres gauche et droit ?
On nomme Tn
la taille de l'arbre de Fibonacci An
.
A l'aide de votre programme Python, donner les valeurs de Tn
pour des valeurs de n
comprises entre 0 et 5.
n | Tn |
0 | 1 |
1 | 3 |
2 | 5 |
3 | 9 |
4 | 15 |
5 | 25 |
Conjecturer une relation de récurrence entre Tn
, Tn-1
et Tn-2
.
La relation de récurrence est : Tn = Tn-1 + Tn-2 + 1
Où se trouve le minimum d'un arbre binaire de recherche
On dispose d'un arbre binaire de recherche A représenté par la liste [racine(A),SAG(A),SAD(A)]
où :
racine(A) est la fonction qui retourne la racine de l'arbre A;
SAG(A) est la fonction qui retourne le sous arbre gauche de l'arbre A;
SAD(A) est la fonction qui retourne le sous arbre droit de l'arbre A.
Ecrire sur votre feuille la fonction récursive Python minimum(A)
qui retourne le minimum de l'arbre binaire de recherche A.
Où se trouve le maximum d'un arbre binaire de recherche
On dispose d'un arbre binaire de recherche A représenté par la liste [racine(A),SAG(A),SAD(A)]
où :
racine(A) est la fonction qui retourne la racine de l'arbre A;
SAG(A) est la fonction qui retourne le sous arbre gauche de l'arbre A;
SAD(A) est la fonction qui retourne le sous arbre droit de l'arbre A.
Ecrire sur votre feuille la fonction récursive Python maximum(A)
qui retourne le maximum de l'arbre binaire de recherche A.