Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL...

33
Cours 5 : Les arbres AVL Arbres binaires équilibrés

Transcript of Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL...

Page 1: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Cours 5 : Les arbres AVL

Arbres binaires équilibrés

Page 2: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Rappel sur les arbres binaires de recherche

�« Ordre » sur les nœuds :• Les plus petits à gauche• Les plus grands à droite

�Pour accélérer les recherches d’un élément dans l’arbre

�Objectif : dichotomie (on ne parcourt que la moitié de l’arbre)

2013-2014 Algorithmique 2

Page 3: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Exemple

3

92

1 6 11

8�Si on cherche 7

• 3 < 7 : pas besoin de chercher dans le sous-arbre gauche

Algorithmique 3

Page 4: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Exemple (2)

3

92

1 6 11

8• 7 < 9 : pas besoin de chercher dans le sous-arbre

droit

2013-2014 Algorithmique 4

Page 5: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Exemple (3)

3

92

1 6 11

8• 6 < 7 : on cherche a droit

2013-2014 Algorithmique 5

Page 6: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Exemple (4)

3

92

1 6 11

8• 7 < 8 et le nœud 8 n’a pas de sous-arbres donc la

recherche a échoué

2013-2014 Algorithmique 6

Page 7: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Rappel sur les ABR (suite)

�En général, la recherche dans un ABR coute Θ(h), où h est l’hauteur de l’arbre

�La hauteur minimale pour un arbre binaire avec n nœuds est log(n)

�Donc dans le meilleur de cas, le cout de la recherche dans un ABR est log(n) où n est le nombre des nœuds de l’arbre

2013-2014 Algorithmique 7

Page 8: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Problème1

2

3

4

5

nEst un ABR

2013-2014 Algorithmique 8

Page 9: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Identification du problème

�On ne gagne rien au niveau de la recherche • On est obligé de chercher dans le s.-a. droit• Recherche en Θ(n) forcément

�Solution• Obliger l’arbre à être relativement symétrique• Hauteur du s.-a. gauche proche de la hauteur

du s.-a. droit2013-2014 Algorithmique 9

Page 10: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Arbres AVL

�Arbres de recherche équilibrés�Principe :

• Pour chaque nœud, les hauteurs du s.-a. gauche et du s.-a. droit différent au plus de 1

�Modèle proposé par G.M. Adelson-Velsky et E.M. Landis (d’où son nom)

�Notion de facteur d'équilibrage d'un nœud• Différence entre les hauteurs des sag et sad• Un arbre est AVL si tous les nœuds ont un facteur de

-1, 0 ou 1

2013-2014 Algorithmique 10

Page 11: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Exemple

50

7217

12 54 76

67

23

9 14 19

2013-2014 Algorithmique 11

Page 12: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Les changements

�Cette fois, on a systématiquement la moitié, ou près de la moitié de l’arbre de chaque côté de la racine

�Et ceci pour tous les nœuds�Chaque choix entre s.-a. gauche et s.-a.

droit élimine la moitié des nœuds restants�On a un vrai parcours dichotomique�Complexité Θ(log(n)) dans le pire des cas

2013-2014 Algorithmique 12

Page 13: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Implémentation habituelle

�Rajouter un attribut a l’arbre • Sa profondeur

ou• Son facteur d’équilibrage

�A mettre a jour à chaque modification (ajout ou suppression)

2013-2014 Algorithmique 13

Page 14: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Problématique de l’ajout

�On ajoute un élément�L’arbre (ou un de ses sous-arbres) peut

devenir déséquilibré• Facteur < -1 ou >1

�Principe :• On fait l’ajout normalement• On remonte en mettant les profondeurs ou

facteurs à jour jusqu'à rencontrer un arbre déséquilibré

2013-2014 Algorithmique 14

Page 15: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Problématique de l’ajout (2)

�Si on ne rencontre aucun arbre déséquilibré, parfait

�Sinon, on rééquilibre le premier arbre qui devient déséquilibré lors de la remontée• Il redevient équilibré• Avec la même profondeur qu’avant l’ajout• Donc inutile de remonter davantage

2013-2014 Algorithmique 15

Page 16: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Le rééquilibrage

�Un principe : la rotation�En fait, selon le facteur de déséquilibrage

de l’arbre et celui de ses sous-arbres, on va devoir faire une ou deux rotations (je ne detaille pas)

�Deux actions• Rotation à gauche• Rotation à droite

2013-2014 Algorithmique 16

Page 17: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

La rotation à droite

b

a

U V

W

a

U

b

V W

r. d.

2013-2014 Algorithmique 17

Page 18: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

La rotation à gauche

b

a

U V

W

a

U

b

V W

r. g.

2013-2014 Algorithmique 18

Page 19: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

La double rotation à gauche

d. r. g.b

c

a

U

V

Z

W

c

a

U V W Z

b

19

Page 20: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

La compression de données

PrincipesExemples

Codage de Huffmann

Page 21: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

La compression de données

� La compression de données traite de la manière dont on peut réduire l’espace nécessaire à la représentation d’une certaine quantité d’information

�Deux grandes catégories• Sans perte• Avec perte

�Manipulée dans tous les secteurs• Données quelconques : zip, rar, gz• Graphiques : gif, png, jpg• Audio : wav, mp3, ogg• Video : mpeg2, mpeg4, xvid, mkv

2013-2014 Algorithmique 21

Page 22: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Compression sans perte

�Codage de Huffmann• Plus un symbole apparaît, plus son codage est court

�Codage RLE (Run-Length Encoding)• abab remplacé par 2ab

�Codage LZW (Lempel-Ziv-Welch)(→GIF)• De type « dictionnaire »• Des successions de caractères se retrouvent plus

souvent que d'autres • On peut donc les remplacer par un nouveau caractère

2013-2014 Algorithmique 22

Page 23: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Compression avec pertes

�Idée : seule une partie des données est utile

�On ne garde que celles-là�Trois grands types

• Transformée de Fourier (DCT) : jpeg• Compression par ondelettes• Compression fractale

2013-2014 Algorithmique 23

Page 24: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Le codage de Huffmann

�Codage de type statistique, analogue au morse

�Idée :• Plus un symbole (ici un caractère) revient

souvent, plus son code sera court

�On commence par lire le texte et compter le nombre d’occurences de chaque caractère

�Le reste est à base d’arbres binaires2013-2014 Algorithmique 24

Page 25: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Construction de l’arbre de codage

�Au départ• Chaque caractère est racine d’un arbre dont

la valeur associée est le nombre d’occurences du caractère

• On dispose d'un tableau d'arbres (ou autre structure)

• De préférence trié par valeur

2013-2014 Algorithmique 25

Page 26: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Construction de l’arbre de codage (2)

�On va systématiquement « fusionner » les deux arbres de coût minimal• On obtient un arbre dont les s.-a. sont les

deux arbres de départ• La plus petite valeur à gauche• La valeur de l’arbre fusionné est la somme

des valeurs des deux arbres de départ

�On supprime les deux arbres du tableau et on ajoute l’arbre fusionné

2013-2014 Algorithmique 26

Page 27: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Exemple

20 28 50c d

a b

13 15 20 50a b c d

48 50d

ca b

98

dc

a b2013-2014 Algorithmique 27

Page 28: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Construction de l’arbre de codage (3)

�On continue jusqu’à ce qu’il n’y ait plus qu’un seul arbre dans le tableau

�On a construit l’arbre en « montant »

�On va le « redescendre » pour construire les codes

2013-2014 Algorithmique 28

Page 29: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Construction des codes

�Code = mot binaire (des 0 et des 1)�Principe :

• Quand on descend à droite, on ajoute 1 en fin de mot

• Quand on descend à gauche, on ajoute 0 en fin de mot

• (Parfaitement arbitraire, on pourrait faire l’inverse)

2013-2014 Algorithmique 29

Page 30: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Reprenons l’exemple

dc

a b

2013-2014

13 15 20 50a b c d

Le code de d est 1Le code de c est 00Le code de a est 010Le code de b est 011

Algorithmique 30

Page 31: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Astuce du code

�Le préfixe d’un code ne peut pas être un code• Si 1001 est un code, 1,10 et 100 ne peuvent

pas être des codes

�Conséquence :• Pas de confusion possible• Code parfaitement déterministe

2013-2014 Algorithmique 31

Page 32: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Le fichier codé

�Représentation de l’arbre• Il faut choisir une façon simple d’enregistrer

l’arbre

�Le texte codé• Chaque lettre est remplacée par son code

2013-2014 Algorithmique 32

Page 33: Cours 5 : Les arbres AVLfiorenzi/Teaching/AL/C5.pdf · 2014. 5. 19. · Cours 5 : Les arbres AVL Arbres binaires équilibrés. Rappel sur les arbres binaires de recherche « Ordre

Décodage

�On recrée l’arbre�On part de la racine :

• Si 0, on descend à gauche• Si 1, on descend à droite• Si on tombe sur une feuille

• Étiquetée par un caractère• On écrit le caractère et on repart de la racine

2013-2014 Algorithmique 33