• Aucun résultat trouvé

INF601 : Algorithme et Structure de données Cours 2 : TDA Arbre Binaire B. Jacob

N/A
N/A
Protected

Academic year: 2022

Partager "INF601 : Algorithme et Structure de données Cours 2 : TDA Arbre Binaire B. Jacob"

Copied!
88
0
0

Texte intégral

(1)

INF601 : Algorithme et Structure de données

Cours 2 : TDA Arbre Binaire

B. Jacob

IC2/LIUM

27 février 2010

(2)

Plan

1 Introduction

2 Primitives du TDA Arbin

3 Réalisations du TDA Arbin par cellules chaînées par cellules contiguës

par curseurs (faux pointeurs) Réalisation des Arbres parfaits

4 Recherche d’un élément

5 Adjonction d’un élément

Adjonction aux feuilles Adjonction à la racine 6 Suppression d’un élément

7 Conclusion sur les arbres

(3)

Introduction

Plan

1 Introduction

(4)

Introduction

Méthodes arborescentes

Cours précédent :

si ensemble d’éléments sont dans un TDA Liste triée

→ recherche d’un élément enlog(n) comparaisons

Problème: représentation contiguë (liste) mal adaptée lorsque l’ensemble évolue dynamiquement

→ adjonction et suppression peuvent être enO(n) Solution: pour que les 3 opérations

recherche adjonction suppression

soient efficaces → structures arborescentes

(5)

Introduction

Méthodes arborescentes

Elles reposent sur

1 une comparaison avec la valeur d’un noeud

2 "l’aiguillage" de la poursuite de la recherche dans un sous-arbre en fonction du résultat de la comparaison

La structure fondamentale des méthodes arborescentes

→celle de l’arbre binaire de recherche

(6)

Introduction

Définitions informelle

Définition informelle

un arbre = ensemble de sommets tel que :

∃ un sommet unique appelé raciner qui n’a pas de supérieur Tous les autres sommets sont atteints à partir de r par une branche unique

Définition récursive (et constructive) un arbre =

une racine r

une liste d’arbres disjoints A1, ...,An (sous-arbres) Un sommet de l’arbre est la racine d’un sous-arbre

(7)

Introduction

Terminologie

père d’un sommet : le prédécesseur d’un sommet fils d’un sommet : les successeurs d’un sommet frères: des sommets qui ont le même père noeud = sommet

racine : noeud sans père feuille : noeud sans fils

branche : chemin entre 2 noeuds

(8)

Introduction

Mesures sur les arbres

Niveau (profondeur) d’un noeud : la longueur de la branche depuis la racine

Hauteur d’un noeud : la longueur de la plus longue branche de ce noeud jusqu’à une feuille

Hauteur d’un arbre: la hauteur de la racine Taille d’un arbre : nombre de ses sommets

(9)

Introduction

Arbres Binaires

Définition informelle

Dans un arbre binaire tout noeud a au plus deux fils Un arbre binaire possède exactement deux sous-arbres (éventuellement vides)

Définition récursive (et constructive) Un arbre binaire est

Soit vide Soit composé

d’une raciner

de 2 sous arbres binaires ABG et ABD disjoints ABG : sous Arbre Binaire Gauche

ABD : sous Arbre Binaire Droit

(10)

Introduction

Eléments dans un arbre binaire

Généralement dans un arbre binaire noeud racine contient un élémentX dans ABG→ noeuds ≤X

dans ABD → noeuds>X

racine X

sous-arbre Droit

X sous-arbre

Gauche X

(11)

Introduction

Organisation d’un arbre binaire

a

b

c

d

e g

f

(12)

Introduction

Organisation d’un arbre binaire

a

b

c

d

e g

f racine

sous arbre Gauche sous arbre Droit

(13)

Introduction

Organisation d’un arbre binaire

a

b

c

d

e g

f

racine racine

ABG ABD ABG ABD

(14)

Introduction

Arbres binaires particuliers

Arbre binaire dégénéré, filiforme: Chaque noeud possède exactement un fils

→ à éviter

Arbre binaire complet (uniforme) : Chaque niveau est complètement rempli

I.E. Tout sommet est soit une feuille au dernier niveau, soit possède exactement 2 fils

→ situation idéale

Arbre binaire parfait (presque complet) : Tous les niveaux sont complètement remplis sauf éventuellement le dernier et dans ce cas les feuilles sont le plus à gauche possible

Arbre binaire équilibré : La différence de hauteur entre 2 frères ne peut dépasser 1

(15)

Introduction

Arbres particuliers

Arbre Parfait→situation idéale

w

y l

b

c d

e

f u

t v

a g x z

(16)

Introduction

Arbres particuliers

Arbre dégénéré→Pire des situations

w

y l

z

(17)

Introduction

Arbres particuliers

Arbre presque parfait

w

y l

b

c d

e

f u

a g

(18)

Introduction

Arbres particuliers

Arbre équilibré

w

y l

z x

b c

d

e

f u

(19)

Primitives

Plan

2 Primitives du TDA Arbin

(20)

Primitives

Définitions des primitives

Utilise le TDA ELEMENT

Primitives :

Création et destruction Construction

Primitives de modification d’un arbre non vide Accès aux caractéristiques des noeuds (aux éléments)

(21)

Réalisation

Plan

3 Réalisations du TDA Arbin par cellules chaînées par cellules contiguës

par curseurs (faux pointeurs) Réalisation des Arbres parfaits

(22)

Réalisation par cellules chaînées

Plan

3 Réalisations du TDA Arbin par cellules chaînées par cellules contiguës

par curseurs (faux pointeurs) Réalisation des Arbres parfaits

(23)

Réalisation par cellules chaînées

Pointeurs sur ABG et ABD

Unarbrebinaire est soit

un pointeur sur le noeud racine (arbre non vide) le pointeur NULL (arbre vide)

Unnoeud est une structure à trois champs : Une étiquette (élément)

le sous-arbre gauche le sous-arbre droit Avantages:

Définition récursive, simple à programmer, la plus utilisée

Inconvénients: consomme de la mémoire dynamique

(24)

Réalisation par cellules chaînées

Traduction en C

/∗ D e f i n i t i o n d ’ un noeud ∗/

t y p e d e f s t r u c t noeud {

ELEMENT e t i q ; / E t i q u e t t e ∗/

s t r u c t noeud ag , / ABG /

ad ; / ABD / } NOEUD;

/∗ D e f i n i t i o n d ’ un a r b r e

= un p o i n t e u r s u r s o n Noeud r a c i n e / t y p e d e f NOEUD ARBIN ;

/∗ l ’ a r b r e v i d e e s t l e p o i n t e u r n u l l/

#d e f i n e ARBRE_VIDE NULL

(25)

Réalisation par cellules chaînées

Schéma réalisation par pointeurs

a c

b

d

f ARBIN

NOEUD

etiq ad ag

NULL

(26)

Réalisation

par cellules contiguës

Plan

3 Réalisations du TDA Arbin par cellules chaînées par cellules contiguës

par curseurs (faux pointeurs) Réalisation des Arbres parfaits

(27)

Réalisation

par cellules contiguës

Par tableau

Unarbreest une structure à deux champs : Un tableau où sont mémorisés les noeuds

Un entier qui donne l’indice de la racine dans le tableau Unnoeud est une structure à 3 champs :

L’étiquette du noeud

Les indices de ses fils gauche et droit (ou 0 si pas de fils) Inconvénients:

Définition non récursive (arbre6=sous-arbre) Utilisée uniquement si on traite un arbre unique

(28)

Réalisation

par cellules contiguës

Traduction en C

/∗ D e f i n i t i o n d ’ un noeud ∗/

t y p e d e f s t r u c t noeud {

ELEMENT e t i q ; /∗ E t i q u e t t e /

i n t f g , /∗ ABG ∗/

f d ; /∗ ABD ∗/

} NOEUD;

/∗ D e f i n i t i o n d ’ un a r b r e ∗/

t y p e d e f s t r u c t {

NOEUD t a b [ TAILLE_MAX ] ; i n t r a c i n e ;

} r e p ;

t y p e d e f r e p ARBIN ;

(29)

Réalisation

par cellules contiguës

Schéma réalisation par tableau

a b c d

f racine tab

1 2 3 4 5 6 7 8 4

2 6

2 3

0 0

0 0

0 0

ARBIN

etiq fd fg

(30)

Réalisation

par curseurs (faux pointeurs)

Plan

3 Réalisations du TDA Arbin par cellules chaînées par cellules contiguës

par curseurs (faux pointeurs) Réalisation des Arbres parfaits

(31)

Réalisation

par curseurs (faux pointeurs)

Simulation pointeurs sur ABG et ABD

(même principe que les faux pointeurs dans le TDA Liste)

Simulation de la mémoire : les noeuds sont dans un tableau en variable globale

Un arbre = indice de la racine (0 si vide) Un noeud est une structure à 3 champs

l’étiquette du noeud indice fils ABG (0 si vide) indice fils ABD (0 si vide)

2 stratégies de gestion des cellules disponibles

1 Chaîner entre elles les cellules disponibles

2 Marquer les cellules libres et parcourir le tableau pour trouver la 1re place libre

(32)

Réalisation

par curseurs (faux pointeurs)

Schéma réalisation par faux pointeurs

1 2 3 4 5 6 7 8

Mémoire A1

A2

a b c d

i j 0 k

0 0

2 3

0 0 0

4

0 0

0

6 8

1

7 ARBIN

ARBIN

(33)

Réalisation

Réalisation des Arbres parfaits

Plan

3 Réalisations du TDA Arbin par cellules chaînées par cellules contiguës

par curseurs (faux pointeurs) Réalisation des Arbres parfaits

(34)

Réalisation

Réalisation des Arbres parfaits

Cas particuliers des arbre parfaits

Solution efficace (accès + place mémoire) de réalisation d’un arbre parfaitAdeN étiquettes

→un tableau avec :

1 : indice de la racine deA T[i] étiquette du père

T[2i] étiquette du fils gauche T[2i+1] étiquette du fils droit

Attention: inefficace siN "loin de" n2 (si An’est pas parfait)

(35)

Réalisation

Réalisation des Arbres parfaits

Schéma Arbre parfait avec tableau

SiAest l’abre parfait suivant :

a b

c d

e g

f

Alors la réalisation deAest le tableau :

d b f c a e f

0 1 2 3 4 5 6 7

(36)

Recherche

Plan

4 Recherche d’un élément

(37)

Recherche

Parcours d’arbres binaires

Recherche d’un élément→ parcours d’un arbre

Plusieurs types de parcours (selon application)

Parcours en profondeur à main gauche (le + utilisé) Parcours récursif général

Parcours particuliers (parcours préfixe, infixe, postfixe) Parcours en largeur (par niveaux)

(38)

Recherche

Recherche en profondeur à main gauche

chemin qui descend toujours le plus à gauche possible dans ce parcours chaque noeud est rencontré 3 fois

1iere fois: à la descente à gauche dans ABG

on applique au noeud letraitement 1

2ieme fois: quand ABG a été parcouru, remontée par la gauche descente à gauche dans ABD

on applique au noeud letraitement 2

3ieme et dernière fois : quand ABG et ABD ont été parcourus, en remontant à droite

on applique au noeud letraitement 3

si l’arbre est videon lui applique un traitement appelé terminaison

(39)

Recherche

Récursif à main gauche

P a r c o u r s ( ARBIN A) Début

S I A e s t v i d e ALORS t e r m i n a i s o n (A) SINON

t r a i t e m e n t 1 (A)

P a r c o u r s ( s o u s−a r b r e G a u c h e (A ) ) t r a i t e m e n t 2 (A)

P a r c o u r s ( s o u s−a r b r e D r o i t (A ) ) t r a i t e m e n t 3 (A)

F S I F i n

(40)

Recherche

Cas particuliers

Lorsque le noeud est traité une seule fois Parcours préfixe(Racine Gauche Droit)

→ le noeud racine est traité au premier passage avant le parcours des sous-arbres

Parcours infixe ou symétrique(Gauche Racine Droit)

→ le noeud racine est traité au second passage après le parcours du sous-arbre gauche

et avant le parcours du sous-arbre droit Parcours postfixe (Gauche Droit Racine )

→ le noeud racine est traité au dernier passage après le parcours des sous-arbres

(41)

Recherche

Parcours particuliers

Parcours préfixé R G D

→le noeud racine est traité au premier passage avant le parcours des sous-arbres

P a r c o u r s ( ARBIN A) Début

S I A e s t v i d e ALORS t e r m i n a i s o n (A) SINON

traitement (A)

P a r c o u r s (ABG de A) P a r c o u r s (ABD de A) F S I

F i n

(42)

Recherche

Parcours particuliers

Parcours symétrique G R D

→le noeud racine est traité au second passage après le parcours du sous-arbre gauche et avant le parcours du sous-arbre droit

P a r c o u r s ( ARBIN A) Début

S I A e s t v i d e ALORS t e r m i n a i s o n (A) SINON

P a r c o u r s (ABG de A) traitement (A)

P a r c o u r s (ABD de A) F S I

F i n

(43)

Recherche

Parcours particuliers

Parcours postfixé G D R

→le noeud racine est traité au troisième passage après le parcours des sous-arbres gauche et droit

P a r c o u r s ( ARBIN A) Début

S I A e s t v i d e ALORS t e r m i n a i s o n (A) SINON

P a r c o u r s (ABG de A) P a r c o u r s (ABD de A)

traitement (A) F S I

F i n

(44)

Recherche

Parcours en Largueur

P a r c o u r s E n L a r g e u r ( ARBIN A) Début

c r é e r une f i l e v i d e F S I A e s t non v i d e ALORS

E n f i l e r A d a n s F TQ F non v i d e FRE

A <−− D é f i l e r ( F ) t r a i t e m e n t (A)

S I ABG de A non v i d e ALORS E n f i l e r ABG de A d a n s F F S I

S I ABD de A non v i d e ALORS E n f i l e r ABD de A d a n s F F S I

FTQ F S I

d é t r u i r e F F i n

(45)

Adjonction

Plan

5 Adjonction d’un élément

Adjonction aux feuilles Adjonction à la racine

(46)

Adjonction

Construction d’un arbre

Un arbreA se construit par adjonction successives d’élémentsx 2 méthodes principales :

Adjonction aux feuilles :

→ ajout de chaque x à une feuille deA

→ construction "sur place"

Adjonction à la racine :

→ x devient la nouvelle racine deA

→ construction "à côté"

(47)

Adjonction

Préparation

On transforme ELEMENTx en noeud de l’ArbreX Soit ARBINX :

valeur de X ← x

sous arbre gauche de X← vide sous arbre droit de X ← vide

(48)

Adjonction

Insertion à une feuille

ARBIN A r b i n A j o u t e r F e u i l l e ( ARBIN A , ARBIN X) Début

S I A e s t v i d e ALORS A <−− X

r e n v o y e r A SINON

S I X <= A ALORS

r e n v o y e r A r b i n A j o u t e r F e u i l l e ( ABG(A) ,X) SINON

r e n v o y e r A r b i n A j o u t e r F e u i l l e ( ABD(A) ,X) F S I

F S I F i n

(49)

Adjonction

Insertion à la racine

Ajout à la racine

→ ajout à n’importe quel niveau de A

→ à rapprocher des méthodes auto-adaptatives des listes Méthode pour ajouterX dansA:

1 Couper Aen 2 ARBING et D

G contient tous les éléments de A ≤ X D contient tous les éléments de A > X

2 Former un nouvel ARBIN A0 dont la racine avec : étiquette de A’X

ABG(A’)G ABD(A’)D

(50)

Adjonction

Méthode de coupure

Coupure d’un ELEMENT X dans un ARBIN A en 2 ARBIN G et D

Il n’est pas nécessaire de parcourir TOUS les noeuds de A

→ seulement les noeuds N situés sur le chemin de recherche deX dansA

si noeud N ≤X :G ←N +ABG(N) sur le bord droit deG

si noeud N >X :D←N +ABD(N) sur le bord gauche de D

(51)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

(52)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

X < N

(53)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

(54)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

t

(55)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

t

>=

X

N

(56)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

t

(57)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

(58)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

<

X

N

(59)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

(60)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l i

(61)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l i

>=

X

N

(62)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l i

(63)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l e i

(64)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l e i

<

X

N

(65)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l e i

(66)

Adjonction

Exemple de coupure

a

l d

e

g

f q

t

i

G D

q

a t d

l e i

g

(67)

Adjonction

Procédure de coupure

Coupure de A en 2 ARBIN G et D

Coupure (ELEMENT X , ARBIN A , G , D ) Début

S I A e s t v i d e ALORS G <−− v i d e

D <−− v i d e SINON

S I X <= A ALORS D <−− A

Coupure ( X , ABG(A ) , G , ABG(D) ) SINON

G <−− A

Coupure ( X , ABD(A ) , ABD(G ) , D) F S I

F S I F i n

(68)

Adjonction

Procédure d’ajout à la racine

Ajout d’un élément X à la racine de l’arbre A

A r b i n A j o u t e r R a c i n e (ELEMENT X , ARBIN A) ARBIN R

Début

é t i q u e t t e de R <−− X ABG(R) <−− v i d e ABD(R) <−− v i d e

Coupure (X , A , ABG(R ) , ABD(R ) ) A <−− R

F i n

(69)

Suppression

Plan

6 Suppression d’un élément

(70)

Suppression

Méthodes de suppression

Pour supprimer un élémentX dansAil faut

1 déterminer la place de X dansA→ noeud N

2 supprimer X avec réorganisation des éléments deA.

3 cas :

N à 0 fils : suppression immédiate N à 1 fils : on remplace X par ce fils N à 2 fils : 2 solutions

remplacer X par l’élément qui lui est immédiatement inférieur

Le MAX dans ABG(N)

remplacer X par l’élément qui lui est immédiatement supérieur

Le MIN dans ABD(N)

(71)

Suppression

Suppression d’un noeud à 0 fils

a

e

g

t

i d

z u

q

l

(72)

Suppression

Suppression d’un noeud à 0 fils

a

e

g

t

i d

z u

q

l X

(73)

Suppression

Suppression d’un noeud à 0 fils

a

e

g

t

i d

z u

q

(74)

Suppression

Suppression d’un noeud à 1 fils

t

z u

q

e

g i d

l

(75)

Suppression

Suppression d’un noeud à 1 fils

t

z u

q

e

g i d

l X

(76)

Suppression

Suppression d’un noeud à 1 fils

t

z u

q

e

g i d

l X

(77)

Suppression

Suppression d’un noeud à 1 fils

t

z u

q

e

g i

l

(78)

Suppression

Suppression d’un noeud à 2 fils

a

e

g

t

i d

z u

q

l

(79)

Suppression

Suppression d’un noeud à 2 fils

a

e

g

t

i d

z u

q

l X

(80)

Suppression

Suppression d’un noeud à 2 fils

a

e

g

t

i d

z u

q

l X ABG

(81)

Suppression

Suppression d’un noeud à 2 fils

a

e

g

t

i d

z u

q

l X ABG

MAX

(82)

Suppression

Suppression d’un noeud à 2 fils

a

e

g

t

i d

z u

q

l X ABG

MAX

(83)

Suppression

Suppression d’un noeud à 2 fils

a

e

g

t

i d

z u

l

(84)

Suppression

Suppression du MAX

(Le Max dans un ARBIN est l’élément le plus à droite)

Retourne l’élément le plus grand dans MAX et ampute cet élément de A

SupprimerMax (ELEMENT MAX, ARBIN A) Début

S I ABD(A) e s t v i d e ALORS MAX <−− é t i q u e t t e de A A <−− ABG(A)

SINON

SupprimerMax ( MAX, ABD(A) ) F S I

F i n

(85)

Suppression

Suppression d’un élément

Supprime l’élément X dans A. Retour :Asi X ∈/ AsinonA−X

A r b i n S u p p r i m e r (ELEMENT X , ARBIN A) Début

S I A n ’ e s t p a s v i d e ALORS

S I X < é t i q u e t t e de A ALORS A r b i n S u p p r i m e r (X , ABG(A ) ) SINON S I X > é t i q u e t t e de A ALORS A r b i n S u p p r i m e r (X , ABD(A ) )

SINON /∗ On a t r o u v é l ’ é l é m e n t ∗/

S I ABG(A) e s t v i d e ALORS /∗ 0 ou 1 f i l s / A <−− ABD(A)

SINON

S I ABD(A) e s t v i d e ALORS /∗ 1 f i l s ∗/

A <−− ABG(A) SINON /∗ 2 f i l s /

S u p p r i m e r M a x ( MAX, ABG(A) ) é t i q u e t t e de A <−−MAX F S I

F S I F S I F S I F S I F i n

(86)

Conclusion

Plan

7 Conclusion sur les arbres

(87)

Conclusion

Propriétés des arbres binaires

Propiétés:

Un arbre binaire ayant n sommets a une hauteurh qui vérifie : [log2(n+1)]−1≤h(a)≤n−1

Un arbre binaire de hauteur h a un nombre de sommets n qui vérifie : h+1≤n≤2h+1−1

Utilisation: mesures de complexité

Parcours de chaque noeud de l’arbre enO(n)

Parcours d’une branche : complexité dans le pire des cas en O(h) =O(log(n))

Objectif:

→avoirh minimum(arbre complet ou presque ou équilibré)

(88)

Fin

The End

That all folks. . .

Références

Documents relatifs

Chercher sur Internet l‘algorithme DSW (c’est un algorithme qui prend en entrée un arbre de recherche binaire afin de réaliser son équilibrage) et l’algorithme de

Les pre- mières division d’un arbre sont utilisées pour construire une variable synthétique intégrée à une régression logistique afin de sélectionner les quelques

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 :.

Dans le cas de points p-q-i alignés (orientation 0), le point le plus éloigné de P est conservé (dans le tableau donné en exemple ci-dessous, c'est la différence des distances PQ

// renvoie un arbre de racine e ayant l et r pour fils gauche et droit Element root(BTree bt); // renvoie l’´ el´ ement ` a la racine de l’arbre BTree leftChild(BTree bt); // renvoie

L’opération estVide teste si la file avec priorité est vide ou pas, l’opération ajouter insère dans la file un nouvel élément avec sa priorité, l’opération premier

Écrivez maintenant la méthode de tri fusion, qui divise la liste en deux listes de taille égale, trie les sous-listes récursivement puis les fusionnent avec la méthode