• Aucun résultat trouvé

Les arbres (I) Exemple. Introduction. Nour-Eddine Oussous, Éric Wegrzynowski. 12 novembre 2008

N/A
N/A
Protected

Academic year: 2022

Partager "Les arbres (I) Exemple. Introduction. Nour-Eddine Oussous, Éric Wegrzynowski. 12 novembre 2008"

Copied!
9
0
0

Texte intégral

(1)

Les arbres (I)

Nour-Eddine Oussous, ´Eric Wegrzynowski

Licence ST-A, USTL - API2

12 novembre 2008

Les arbres (I) Licence ST-A, USTL - API2

Introduction

efinitions et vocabulaire Notion d’arbres

Branches et profondeur des nœuds Taille et hauteur

Arbres binaires efinition Constructeur electeurs Pr´edicat

Op´erations modificatrices Impl´ementation

Repr´esentation chaˆın´ee

Impl´ementation des op´erations primitives

Constructeur electeurs Pr´edicat

Op´erations modificatrices

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Introduction

I Les arbres offrent une des plus importantes structures de donn´ees non lin´eaires en informatique.

I Ils permettent une organisation naturelle des donn´ees, par exemple

I syst`eme de fichiers

I base de donn´ees

I sites web,. . .

I Dans les arbres, on a une relation hi´erarchique entre les objets.

I Ils permettent parfois d’obtenir des algorithmes plus performants que lorsqu’on utilise des structures de donn´ees lin´eaires (listes, tableaux,. . . )

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Exemple

L’arborescence des r´epertoires d’un syst`eme d’exploitation imaginaire.

etc

opt lib mail

kernel

misc sys

net

pop serv

usr var share admwww

home

bin PP

PP PP

`````````

@

@

A A

A A

A A

A

A

/

(2)

Notion d’arbres

Notion d’arbres

Un arbre est une sructure de donn´ees qui peut

I soit ˆetre vide

I soit comporter un nombre fini de nœuds tels que

I `a chaque nœud est associ´ee une valeur

I chaque nœud poss`ede un nombre fini de successeurs

I un (et un seul) nœud n’est le successeur d’aucun autre, c’est la racine

I tout autre nœud est le successeur d’un seul nœud, son p`ere.

Les arbres (I) Licence ST-A, USTL - API2

Branches et profondeur des nœuds

Branches et profondeur des nœuds

I Un nœud qui ne poss`ede aucun successeur est appel´e nœud externe ou feuille.

I Les autres nœuds sont appel´es nœuds internes.

I Une branche est une suite finie x0,x1, . . . ,xp de nœuds telle que

I x0 est la racine

I xp est une feuille

I ∀k[[1,p]] pere(xk) =xk−1

I La longueur d’une branche est le nombre de nœuds qui la composent moins 1 : p.

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Branches et profondeur des nœuds

Profondeur d’un nœud

I Un nœudy est un descendant d’un nœud x s’il existe une branche qui va dex `ay. Autrement dit,∃x0, . . . ,xp tels que

I x0=x

I xp=y

I k[[1,p]], pere(xk) =xk−1

I Le nombre p est appel´e profondeur du nœudy par rapport `a x.

I La profondeur d’un nœud dans un arbre est la profondeur de ce nœud par rapport `a la racine.

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Taille et hauteur

Hauteur d’un arbre

I La hauteur d’un arbre non vide A, not´eeh(A), est la longueur maximale d’une branche de cet arbre.

I La hauteur d’un arbre est aussi la profondeur maximale d’un nœud.

I La hauteur n’est pas d´efinie pour un arbre vide.lorsque nous programmerons la hauteur, nous d´efinirons par convention la hauteur de l’arbre vide.

Les arbres (I) Licence ST-A, USTL - API2

(3)

Taille et hauteur

Exemple

4

−3 9

1 11

26 (3) (2)

(1) (2)

(3) (3)

15 10 2 14

18 (5)42 (4)

(2)

(3) (3)

(5) 8 (0)

6 (1)

Fig.:Un arbre de hauteur 5 et de taille 14 nœuds internes :pb feuilles : pb (profondeurs)

Les arbres (I) Licence ST-A, USTL - API2

Taille et hauteur

Arit´ e et taille d’un arbre

I Un arbre est dit d’arit´ea si chacun de ses nœuds poss`ede au maximum asuccesseurs. L’arbre vide est de toute arit´e.

I La taille d’un arbre Aest son nombre de nœuds.

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Taille et hauteur

Relation entre hauteur, arit´ e et taille

Th´eor`eme

SoitAun arbre d’arit´ea, de taillenet de hauteurh.

I Le nombrenp de nœuds deA`a profondeur 0pherifie 1npap

I La taillenerifie l’encadrement

h+ 1nah+11 a1

I La hauteurherifie l’encadrement

loga(n(a1) + 1)1hn1

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

efinition

D´ efinition r´ ecursive des arbres binaires

D´efinition

Un arbre binaire compos´es d’´el´ements d’un ensemble E est

I soit l’arbre vide∆;

I soit un triplet <e;g;d >compos´e d’un ´el´ement e∈E, et de deux arbres binaires g etd

En notantAB(E) l’ensemble des arbres binaires compos´es d’´el´ements deE, on a donc

AB(E) ={∆} ∪(E×AB(E)×AB(E))

(4)

efinition

Repr´ esentations abstraites d’un arbre binaire

XXXXX

!!

! 1

2 3

4 Fig.:Repr´esentation graphique

<1; <2; ; > ;

<3; <4; ∆; >; > >

Fig.:Repr´esentation triplet

Les arbres (I) Licence ST-A, USTL - API2

efinition

Op´ erations primitives sur les arbres binaires

1. Constructeur 2. S´electeurs 3. Pr´edicat

4. Op´erations modificatrices

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Constructeur

Cr´ eation d’un arbre binaire

Sp´ecification

creerArbre : E×AB(E)×AB(E) −→ AB(E) e,g,d 7−→ <e;g;d >

Exemples

creerArbre(3,∆,∆) = <3; ∆; ∆>

creerArbre(1,<3; ∆; ∆>,∆) = <1;<3; ∆; ∆>; ∆>

C’est une op´eration de construction d’arbres.

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

electeurs

Acc` es ` a la racine

Sp´ecification

racine : AB(E) −→ E

<e;g;d > 7−→ e

CU :l’arbre pass´e en param`etre ne peut pas ˆetre vide Exemple

racine(<1;<3; ∆; ∆>; ∆>) = 1 C’est un s´electeur.

Les arbres (I) Licence ST-A, USTL - API2

(5)

electeurs

Acc` es au sous-arbre gauche

Sp´ecification

gauche : AB(E) −→ AB(E)

<e;g;d > 7−→ g

CU :l’arbre pass´e en param`etre ne peut pas ˆetre vide Exemple

gauche(<1;<3; ∆; ∆>; ∆>) =<3; ∆; ∆>

C’est un s´electeur.

Les arbres (I) Licence ST-A, USTL - API2

electeurs

Acc` es au sous-arbre droit

Sp´ecification

droit : AB(E) −→ AB(E)

<e;g;d > 7−→ d

CU :l’arbre pass´e en param`etre ne peut pas ˆetre vide Exemple

droit(<1;<3; ∆; ∆>; ∆>) =∆

C’est un s´electeur.

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Pr´edicat

Test de vacuit´ e d’un arbre

Sp´ecification

estArbreVide : AB(E) −→ Booleen a 7−→

Vrai sia est vide Faux sinon Exemples

estArbreVide(∆) = Vrai estArbreVide(<1; ∆; ∆>) = Faux C’est un pr´edicat.

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Op´erations modificatrices

Changer la valeur de la racine

Sp´ecification

modifierRacine : AB(E)×E −→ AB(E)

<e;g;d >,e0 7−→ <e0;g;d >

CU :l’arbre pass´e en param`etre ne doit pas ˆetre vide Exemple

modifierRacine(<1;<3; ∆; ∆>; ∆>,4) =<4;<3; ∆; ∆>; ∆>

C’est une op´eration de modification d’arbre.

(6)

Op´erations modificatrices

Changer le sous-arbre gauche

Sp´ecification

modifierGauche : AB(E)×AB(E) −→ AB(E)

<e;g;d >,g0 7−→ <e;g0;d >

CU :le premier arbre pass´e en param`etre ne doit pas ˆetre vide Exemple

modifierGauche(<1;<3; ∆; ∆>; ∆>,∆) =<1; ∆; ∆>

C’est une op´eration de modification d’arbre.

Les arbres (I) Licence ST-A, USTL - API2

Op´erations modificatrices

Changer le sous-arbre droit

Sp´ecification

modifierDroit : AB(E)×AB(E) −→ AB(E)

<e;g;d >,d0 7−→ <e;g;d0 >

CU :le premier arbre pass´e en param`etre ne doit pas ˆetre vide Exemple

modifierDroit(<1; ∆; ∆>,<2; ∆; ∆>) =<1; ∆;<2; ∆; ∆> >

C’est une op´eration de modification d’arbre.

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Repr´esentation chaˆın´ee

Repr´ esentation chaˆın´ ee

I l’arbre vide est repr´esent´e par un pointeur vers rien

∆=

I un arbre non vide<e;g;d >est repr´esent´e par un pointeur vers un nœud

A= - e

g d

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Repr´esentation chaˆın´ee

Repr´ esentation concr` ete d’un arbre binaire

2

3

4

- )

PP PP

PP PPq

=

A= 1

Fig.:Repr´esentation concr`ete de

A=<1;<2; ∆; ∆>;<3;<4; ∆; ∆>; ∆> >

Les arbres (I) Licence ST-A, USTL - API2

(7)

Repr´esentation chaˆın´ee

D´ eclaration en Pascal

D´efinition de types c o n s t

A R B R E V I D E = NIL; t y p e

A R B R E = ^ N O E U D ; N O E U D = r e c o r d

i n f o : E L E M E N T ;

gauche , d r o i t : A R B R E ; end { N O E U D };

Le type ELEMENT doit ˆetre d´eclar´e par ailleurs.

Les arbres (I) Licence ST-A, USTL - API2

Impl´ementation des op´erations primitives

Constructeur

Cr´eer un arbre

// c r e e r A r b r e (e,g,d) = <e;g;d>

f u n c t i o n c r e e r A r b r e ( e : E L E M E N T ;

g , d : A R B R E ) : A R B R E ; var

a1 : A R B R E ; b e g i n

new( a1 );

a1 ^. i n f o := e ; a1 ^. g a u c h e := g ; a1 ^. d r o i t := d ; c r e e r A r b r e := a1 ; end { c r e e r A r b r e };

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Impl´ementation des op´erations primitives

S´ electeurs

Racine d’un arbre

// r a c i n e (a)= ´e l ´e m e n t s i t u ´e `a la r a c i n e de a // CU : a non v i d e

f u n c t i o n r a c i n e ( a : A R B R E ) : E L E M E N T ; b e g i n

r a c i n e := a ^. i n f o ; end { r a c i n e };

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Impl´ementation des op´erations primitives

S´ electeurs

Sous-arbre gauche d’un arbre

// g a u c h e (a) = sous - a r b r e g a u c h e de a // CU : a non v i d e

f u n c t i o n g a u c h e ( a : A R B R E ) : A R B R E ; b e g i n

g a u c h e := a ^. g a u c h e ; end { g a u c h e };

(8)

Impl´ementation des op´erations primitives

S´ electeurs

Sous-arbre droit d’un arbre

// d r o i t (a) = sous - a r b r e d r o i t de a // CU : a non v i d e

f u n c t i o n d r o i t ( a : A R B R E ) : A R B R E ; b e g i n

d r o i t := a ^. d r o i t ; end { d r o i t };

Les arbres (I) Licence ST-A, USTL - API2

Impl´ementation des op´erations primitives

Pr´ edicat

Test de vacuit´e d’un arbre

// e s t A r b r e V i d e (a) a est v i d e

f u n c t i o n e s t A r b r e V i d e ( a : A R B R E ): B O O L E A N; b e g i n

e s t A r b r e V i d e := ( a = NIL);

end { e s t A r b r e V i d e };

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Impl´ementation des op´erations primitives

Op´ erations modificatrices

Modifier la racine d’un arbre

// m o d i f i e r R a c i n e (a,e) m o d i f i e

// la v a l e u r de l ’ ´e l ´e m e n t `a la r a c i n e de a // CU : a non v i d e

p r o c e d u r e m o d i f i e r R a c i n e (c o n s t a : A R B R E ; c o n s t e : E L E M E N T );

b e g i n

a ^. i n f o := e ; end { m o d i f i e r R a c i n e };

Les arbres (I) Licence ST-A, USTL - API2

Plan Introduction efinitions et vocabulaire Arbres binaires Impl´ementation

Impl´ementation des op´erations primitives

Op´ erations modificatrices

Modifier le sous-arbre gauche d’un arbre // m o d i f i e r G a u c h e (a,g) m o d i f i e // le sous - a r b r e g a u c h e de a // en lui a t t r i b u a n t g

// CU : a non v i d e

p r o c e d u r e m o d i f i e r G a u c h e (c o n s t a : A R B R E ; c o n s t g : A R B R E );

b e g i n

a ^. g a u c h e := g ; end { m o d i f i e r G a u c h e };

Les arbres (I) Licence ST-A, USTL - API2

(9)

Impl´ementation des op´erations primitives

Op´ erations modificatrices

Modifier le sous-arbre droit d’un arbre // m o d i f i e r D r o i t (a,d) m o d i f i e // le sous - a r b r e d r o i t de a // en lui a t t r i b u a n t d // CU : a non v i d e

p r o c e d u r e m o d i f i e r D r o i t (c o n s t a : A R B R E ; c o n s t d : A R B R E );

b e g i n

a ^. d r o i t := d ; end { m o d i f i e r D r o i t };

Les arbres (I) Licence ST-A, USTL - API2

Références

Documents relatifs

La profondeur du nœud ou d’une feuille d’un arbre hétérogène est le nombre d’arêtes du plus court chemin reliant ce nœud ou cette feuille à la racineB. On supposera que β

[r]

il reste deux sous arbres ; on enlève la plus petite étiquette x du sous arbre droit, qu'on place comme nouvelle racine. Il reste à trouver x et à l'enlever ; pour enlever la

Un arbre de d´ ecision repr´ esente les comparaisons (` a l’exclusion de toute autre op´ eration) effectu´ ees par un algorithme de tri lorsqu’il traite une entr´ ee de taille

La longueur d’un chemin de la racine ` a une feuille dans l’arbre de d´ ecision est ´ egale au nombre de comparaisons n´ ecessaires au tri pour parvenir ` a la r´ eponse

• Si un nœud a un fils gauche, son prédécesseur est le nœud le plus à droite dans son sous-arbre gauche.. Inserer (version

L'insertion d'un élément peut produire un nœud ayant plus de b fils.. Amphi

Il est clair que la valeur frontière de k cherchée est celle pour laquelle l’abscisse limite des points du chemin est nulle. On peut vérifier que le point double situé à