26
Arbres AVL Arbres binaires de recherche équilibrés Arbre AVL, nommé d’après les initiales de ses inventeurs: Adelson-V elskii and Landis

Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Arbres AVLArbres binaires de recherche équilibrés

Arbre AVL, nommé d’après les initiales de ses inventeurs: Adelson-Velskii and Landis

Page 2: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Arbres binaires de recherche (ABR)

Arbre ordonné :◦ Tout nœud situé dans un sous-arbre

gauche est plus petit que la racine◦ Tout nœud situé dans un sous-arbre droit

est plus grand que la racine Conçus pour accélérer les recherches

d’un élément dans l’arbre Objectif dichotomie : on ne parcourt

que la moitié de l’arbre

2

Page 3: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

3

Exemple

6

4 12

141 8

7

5

Si on cherche 9, on ne recherche que dans le sous-arbre droit

Page 4: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Problème

4

Ceci est aussi un ABR…

Page 5: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Problème On ne gagne rien au niveau de la

recherche◦ on est obligé de chercher dans le

sous-arbre droit◦ coût de l’ordre de n

Solution :◦ Obliger l’arbre à être relativement

équilibré◦ Hauteur du sous-arbre gauche proche

de la hauteur du sous-arbre droit

5

Page 6: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les

hauteurs du sous-arbre gauche et du sous-arbre droit différent au plus de 1

Modèle proposé par G.M. Adelson-Velsky et E.M. Landis

Notion de facteur d'équilibre d'un nœud ◦ Différence entre les hauteurs des sous-

arbre gauche et du sous-arbre droit ◦ Un arbre est AVL si tous les nœuds ont un

facteur d’équilibre de -1, 0 ou 16

Page 7: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Exemple d’arbre AVL

les hauteurs sont indiquées près des nœuds

7

Facteur d’équilibre (ou facteur de balancement) :Un arbre est AVL si

hauteur(sad) – hauteur(sag) ∈ {-1, 0, 1}

88

44

17 78

32 50

48 62

2

4

1

1

2

3

1

1

Page 8: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

8

Insertion dans un arbre AVL Un arbre de recherche binaire A est équilibré si,

pour chaque nœud v, on a:|hauteur(s.-a. d.) – hauteur(s.-a. g.)| ≤ 1

L’insertion d’un nœud dans un arbre AVL implique une expansion de l’arbre, ce qui peut changer les hauteurs de quelques-uns des nœuds.

Si une insertion fait que A devient déséquilibré, nous devons faire une restructuration.

Page 9: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

9

Insertion dans un arbre AVLAvant Après l’insertion à gauche Après l’insertion à droite

A 0 A – 1 A + 1

A + 1 A 0 A+ 2

A – 1 A – 2 A 0rééquilibrer

rééquilibrer

Page 10: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

10

Rééquilibrage après insertion

Nous allons identifier◦ 3 nœuds qui forment un triplet grand parent, parent, et enfant◦ les 4 sous-arbres attachés ; nous réarrangerons ces éléments

pour créer un nouvel arbre équilibré Étape 1: on remonte vers la racine de l’arbre à partir du

nœud w qui vient d'être inséré, jusqu'à trouver le premier nœud déséquilibré z. Soit y l’enfant de z ayant la plus grande hauteur, et x l’enfant de y ayant la plus grande hauteur.(x, y, z sont ancêtres du nœud inséré w).

zy

x x

zy

Page 11: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

11

Rééquilibrage après insertion

Étape 2 : les nœuds x, y et z ont 4 sous-arbres connectés à eux. Soient T0, T1, T2, T3 ces arbres nommés de gauche à droite

Étape 3 : Renommer les nœuds x, y, z avec a, b, c selon le parcours infixé. Par exemple, si y, x, z est l’ordre des ces nœuds dans le parcours infixé, alors soit y est a, x est b et z est c

a = x

c = zb = y

T0 T1

T2

T3

c = za = y

b = x

T0

T1 T2

T3

Page 12: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

12

Rééquilibrage après insertion Étape 4 : remplacer l’arbre de racine z par l’arbre

suivant :

a = x

c = zb = y

T0 T1

T2

T3

c = za = y

b = x

T0

T1 T2

T3

b

a c

T1 T2 T3T0

équilibre rétabli !

Page 13: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Exemple

13

88

44

17 78

32 50

48 62

54

T 0T 2

T 3

x

y

za

b

c

T 1

0 1 3

88

44

17

7832 50

48

62

54

T T

T 2

T

x

y z

b

a c

Page 14: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

14

AVL- rééquilibrage: rotation gaucheL’arbre de racine z penche à droite et son sous arbre droit de racine ypenche à droite ; fe(z)=2 et fe(y)=1 => Rotation gauche de z

y

z

xT0

T1

T2 T3

a

b

ch

h+2

hh-1

h

Parcours infixé : T0 z T1 y T2 x T3

y

z x

T0 T1 T2 T3

h h h-1 h

Page 15: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

15

AVL- rééquilibrage: rotation droite L’arbre de racine z penche à gauche et son sous arbre gauche de racine ypenche à gauche; fe(z)=-2 et fe(y)=-1 => Rotation droite de z

y

z

x

T0 T1

T2

T3

a

b

c

h

h+2

h-1h

h

Parcours infixé : T0 x T1 y T2 z T3

y

x z

T0 T1 T2 T3

h h -1 h h

Page 16: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

16

y

z

x

T0

T1 T2

T3

a

b

c

hh+2

h

h-1 h

Parcours infixe: T0 y T1 x T2 z T3

x

y z

T0 T1 T2 T3

h h-1 h h

AVL- rééquilibrage: rotation double gauche-droite

L’arbre de racine z penche à gauche et son sous arbre gauche de racine ypenche à droite; fe(z)=-2 et fe(y)=1 => Rotation gauche-droite = rotation gauche de y suivie d’une rotation droite de z

Page 17: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

17

y

z

xT0

T1 T2

T3

a

bc

h+2h

h

Parcours infixe: T0 z T1 x T2 y T3

x

z y

T0

T1T2 T3

h h-1 h h

AVL- rééquilibrage: rotation double droite-gauche

L’arbre de racine z penche à droite et son sous arbre gauche de racine ypenche à gauche ; fe(z)=2 et fe(y)=-1 => Rotation droite-gauche= rotation droite de y suivie d’une rotation gauche de z

h-1

Page 18: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

18

• En partant du nœud inséré w, considérons le premier sous-arbre S de l’AVL déséquilibré suite à l’insertion de ce nouveau nœud.

• Le déséquilibre de S est causé par l’insertion de wqui a augmenté de 1 la hauteur d’un sous-arbre de S. Or la hauteur de S est elle-même incrémentée du coup, ce qui peut entrainer le déséquilibre global de l’AVL.

• Le rééquilibrage de S rétablit son équilibre local et réduit sa taille de 1 et du coup S retrouve sa hauteur initiale (avant insertion de w). Ainsi on rétablit l’équilibre global de l’AVL .

• Un seul rééquilibrage est donc suffisant après l’insertion d’un nouveau nœud dans un arbre AVL.

Rééquilibrage d’un AVL après insertion

Page 19: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Implémentation

On ajoute un attribut à l’arbre◦ sa profondeur ou◦ son facteur d’équilibre

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

19

Page 20: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Insertion dans un arbre AVLLe principe de l’insertion dans un arbre AVL est le suivant : insérer le nouveau nœud au bon

endroit au fur et à mesure de la remontée

dans l'arbre (du nœud père du nœud inséré, à la racine), rééquilibrer l'arbre en effectuant les rotations appropriées

20

Page 21: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Choix des rotations Notations ◦ Soient N le noeud courant, Ng son fils gauche et Nd sont

fils droit. ◦ Soient Ngg le fils gauche de Ng et Ngd le fils droit de Ng◦ Soient Ndg le fils gauche de Nd et Ndd le fils droit de Nd◦ Soit h(x) la hauteur de l'arbre de racine le nœud x.

Algorithme ◦ Si |h(Ng)-h(Nd)| ≤ 1, ne rien faire ◦ Sinon Si h(Ng)-h(Nd) = 2

Si h(Ngg) > h(Ngd) alors rd(N) Sinon rg(Ng) puis rd(N)

Sinon (h(Ng)-h(Nd) = -2) Si h(Ndd) > h(Ndg) Alors rg(N) Sinon rd(Nd) puis rg(N)

Fsi◦ Fsi

21

Page 22: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

22

Insertion AVLaction insertionAVL(consulté v : entier, élaboré a : Arbre)algorithmesi a = NILalors créer(a) ; a↑.el ← v ; a↑.gauche ← NIL ; a↑.droit ← NILsinon si v < a↑.el

alors insertionAVL (v, a↑.gauche)si déséquilibre(a)alors si v < (a↑.gauche)↑.el

alors rotationDroite(a)sinon rotationGaucheDroite(a)fsi

fsisinon insertionAVL (v, a↑.droite)

si déséquilibre(a)alors si v > (a↑.droite)↑.el

alors rotationGauche(a)sinon rotationDroiteGauche(a)fsi

fsifsi

fsi

Page 23: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

Suppression dans un AVL On constate facilement que la suppression d’un nœud

peut causer un déséquilibre dans un AVL Soit z le premier nœud déséquilibré rencontré en

remontant l’arbre vers la racine à partir de w (ou du nœud qui s’est subsititué à w). Soit y l’enfant de z ayant la plus grande hauteur, et x l’enfant de y ayant la plus grande hauteur. (y et x ne sont pas ancêtres de w)

On applique la même stratégie de restructuration = restructure(x) pour rééquilibrer le sous-arbre de racine z

Cette restructuration réduit de 1 la hauteur du sous-arbre initialement enraciné en z et ainsi pourrait déséquilibrer un autre nœud plus haut dans l’arbre. Alors, nous devons continuer à vérifier l’équilibre jusqu’à ce que la racine de l’arbre soit atteinte.

On peut donc faire jusqu’à log2(n) rotations lors d’une suppression.

23

Page 24: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

24

Suppression Le choix de x n’est pas unique !!!

88

44

17

78

32

50

48

621

4

1

2 2

3

154

1T0

T1

T1

T0

T2

T3

y

x

0

ab

c

z

T3

T2

Rééquilibré !

Déséquilibré !

8817

78

50

48

62

1

1

2

23

1

541

y

x44

4

z

0

Page 25: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

25

Suppression Nous pourrions choisir un x différent

Rééquilibré !

Déséquilibré !

a

bc

T0

T1 T2 T3

88

44

17

78

32

50

48

621

4

1

2 2

3

154

1

z

y

x

0

T0 T1 T2

T3

c

ba

88

17 78

50

48

621 1

4

2

3

154

1

y

x

0

442

z

Page 26: Arbres AVL - Université Grenoble Alpesimss- · 2019-09-12 · Arbres AVL Arbres binaires de recherche équilibrés Principe : pour chaque nœud, les hauteurs du sous-arbre gauche

26