• Aucun résultat trouvé

Arbre Binaire de Recherche Programmation Fonctionnelle Master 2 I2L apprentissage

N/A
N/A
Protected

Academic year: 2022

Partager "Arbre Binaire de Recherche Programmation Fonctionnelle Master 2 I2L apprentissage"

Copied!
20
0
0

Texte intégral

(1)

Arbre Binaire de Recherche

Programmation Fonctionnelle Master 2 I2L apprentissage

S´ebastien Verel verel@univ-littoral.fr

http://www-lisic.univ-littoral.fr/~verel

Universit´e du Littoral Cˆote d’Opale Laboratoire LISIC Equipe OSMOSE

D´ecembre 2019

(2)

Introduction

D´ efinition

12

7 20

10 26

7

11 22 8

Arbre Binaire de Recherche (ABR)

Arbre binaire o`u pour tous les noeuds, les ´etiquettes (cl´es) de l’arbre de gauche sont inf´erieures (ou ´egale) `a l’´etiquette du noeud et les ´etiquettes de l’arbre droit sont strictement plus sup´erieures.

(3)

Introduction

Type de donn´ ees abstrait

Op´erations de base sur les ABR Insertion d’un ´el´ement Suppression d’un ´el´ement Recherche d’un ´el´ement

Exercice

Impl´ementer le TDA.

Remarque 1 : la suppression est le plus difficile `a r´ealiser.

Remarque 2 : il est bon d’avoir une fonction d’affichage pour les tests.

(4)

Introduction

Type de donn´ ees abstrait

Op´erations de base sur les ABR Insertion d’un ´el´ement Suppression d’un ´el´ement Recherche d’un ´el´ement

Exercice

Impl´ementer le TDA.

Remarque 1 : la suppression est le plus difficile `a r´ealiser.

Remarque 2 : il est bon d’avoir une fonction d’affichage pour les tests.

(5)

Introduction

Suppression simple

La suppression du nombre 12 `a la racine peut donner :

12

7 20

10 26

7

22 11

8

11

7 20

10 26

7

22 8

(6)

Introduction

Complexit´ e

Complexit´e des op´erations pr´ec´edentes Pour un arbre binaire de taillen,

la complexit´e dans le pire des cas (i.e. le peigne) est :

O(n) Pour un arbre binaire´equilibr´e de taillen, la complexit´e dans le pire des cas est :

O(log(n))

L’insertion et la suppression doivent maintenir la propri´et´e d’arbre

´equilibr´e...

(7)

Introduction

Complexit´ e

Complexit´e des op´erations pr´ec´edentes Pour un arbre binaire de taillen,

la complexit´e dans le pire des cas (i.e. le peigne) est : O(n)

Pour un arbre binaire´equilibr´e de taillen, la complexit´e dans le pire des cas est :

O(log(n))

L’insertion et la suppression doivent maintenir la propri´et´e d’arbre

´equilibr´e...

(8)

Introduction

Complexit´ e

Complexit´e des op´erations pr´ec´edentes Pour un arbre binaire de taillen,

la complexit´e dans le pire des cas (i.e. le peigne) est : O(n)

Pour un arbre binaire´equilibr´e de taillen, la complexit´e dans le pire des cas est :

O(log(n))

L’insertion et la suppression doivent maintenir la propri´et´e d’arbre

´equilibr´e...

(9)

Introduction

Arbre AVL

Arbre presque ´equilibr´e

Un arbre est presque ´equilibr´e si pour tous sous-arbres la diff´erence de hauteur entre l’arbre de gauche et l’arbre de droite est au plus une unit´e.

Arbre AVL

Arbre AVL : arbre automatiquement ´equilibr´e,

la propri´et´e d’arbre presque ´equilibr´e est maintenue lors de l’insertion et la suppression.

Invent´e en 1962 par Georgii Adelson-Velsky et Evguenii Landis (d’o`u AVL)

(10)

Introduction

Principes

L’insertion et la suppression utilisent la rotation `a gauche et `a droite d’un arbre lorsqu’il est trop d´es´equilibr´e :

Rotation Gauche

−−−−−−−−−−−→

(11)

Introduction

Principes

L’insertion et la suppression utilisent la rotation `a gauche et `a droite d’un arbre lorsqu’il est trop d´es´equilibr´e :

Rotation Droite

←−−−−−−−−−−

Exercice

D´efinir les fonctionsrg etrdqui permettent les rotations `a gauche et `a droite d’un arbre.

(12)

Introduction

Principes

L’insertion et la suppression utilisent la rotation `a gauche et `a droite d’un arbre lorsqu’il est trop d´es´equilibr´e :

Rotation Droite

←−−−−−−−−−−

Exercice

D´efinir les fonctionsrget rdqui permettent les rotations `a gauche et `a droite d’un arbre.

(13)

Introduction

Rotation ` a gauche

rg :: Tree a -> Tree a rg Empty = Empty

rg (Node e ag ad) =

Node (root ad) (Node e ag (left ad)) (right ad)

(14)

Introduction

Rotation ` a gauche

rg :: Tree a -> Tree a rg Empty = Empty

rg (Node e ag ad) =

Node (root ad) (Node e ag (left ad)) (right ad)

(15)

Introduction

Rotation ` a droite

rd :: Tree a -> Tree a rd Empty = Empty

rd (Node e ag ad) =

Node (root ag) (left ag) (Node e (right ag) ad)

(16)

Introduction

Rotation ` a droite

rd :: Tree a -> Tree a rd Empty = Empty

rd (Node e ag ad) =

Node (root ag) (left ag) (Node e (right ag) ad)

(17)

Introduction

Insertion

Principe

Ins´erer le nombre au bon endroit, le noeudN

Au fur et `a mesure de la remont´ee, deN `a la racine, r´e´equilibrer l’arbre en effectuant les rotations convenables.

(18)

Introduction

Insertion

A : arbre courant, Ag : arbre gauche de A, Ad : arbre droit de A, Agg : arbre gauche de Ag, Agd : arbre droit de Ag, Adg : arbre gauche de Ad, Add : arbre droit de Ad.

Principe du r´e´equilibrage en chaque nœud jusqu’`a la racine

si|hauteur(Ag) - hauteur(Ad)|>1alors sihauteur(Ag) - hauteur(Ad)= 2alors

sihauteur(Agg)hauteur(Agd)alors rd(A)

sinon

rg(Ag)puisrd(A) fin si

sinon

sihauteur(Add)hauteur(Adg)alors rg(A)

sinon

rd(Ad)puisrg(A) fin si

fin si fin si

(19)

Introduction

Insertion

Attention

Il faut changer le TDA pour enregistrer la hauteur de chaque noeud, sinon la complexit´e devient catastrophique...

(20)

Introduction

Suppression

Principe

Mˆeme principe que l’insertion

Supprimer le nombre au bon endroit, le noeud N Au fur et `a mesure de la remont´ee, deN `a la racine, r´e´equilibrer l’arbre en effectuant les rotations convenables.

Références

Documents relatifs

Motif : expression compos´ e de variables libres ou li´ ees, ainsi que des valeurs litt´ erales (atomes, entiers ou chaines) Expression : expression compos´ e de structures de

Est-il possible de r´ esoudre le probl` eme ` a l’aide de la r´ esolution du probl` eme portant sur une (des) ”plus petite(s)” valeur(s) du param` etre. Si oui,

Connaitre le sch´ ema r´ ecursif du traitement d’une liste Connaitre les algorithmes classiques relatifs aux listes Savoir ´ ecrire une fonction de calcul avec accumulateur, de

Calcul consiste en l’´ evaluation d’une fonction pour ´ eviter toute modification ”d’´ etats”.. R´ esultat d´ epend seulement des entr´ ees et non pas de l’´ etat

´ el´ ements plus petit que l’´ etiquette sont dans l’arbre gauche et tous les ´ el´ ements plus grand que l’´ etiquette sont dans l’arbre droit. rechercheOrd( _, {arbre}

Complexit´ e des op´ erations pr´ ec´ edentes Pour un arbre binaire de taille n,. la complexit´ e dans le pire des

d- En supposant qu’il existe une fonction point/2 qui permette de dessiner un point de coordonn´ ees (x, y), d´ efinir une fonction qui dessine la repr´ esentation graphique

L’insertion et la suppression utilisent la rotation ` a gauche et ` a droite d’un arbre lorsqu’il est trop d´ es´ equilibr´ e :.