• Aucun résultat trouvé

Jean-PierreBecirspahic Arbresbinaires

N/A
N/A
Protected

Academic year: 2022

Partager "Jean-PierreBecirspahic Arbresbinaires"

Copied!
81
0
0

Texte intégral

(1)

Arbres binaires

Jean-Pierre Becirspahic

Lycée Louis-Le-Grand

2015-2016 — Page 1/16

(2)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Définition d’un arbre binaire

Théorie des graphes : unarbreest un graphe connexe acyclique enraciné.

1 2

5 6

9 10 3 7

4 8 11 12

Pères et fils: le sommet 3 est le père de 7, le sommet 6 est le fils de 2. Il est d’usage de dessiner un arbre en plaçant un père au dessus de ses fils→l’orientation du graphe devient implicite.

Dans ce contexte, on parle denœudau lieu de sommet. Un nœud qui n’a pas de fils est unefeuille ou nœud externe, les autres sont desnœuds internes.

Chaque nœud est la racine d’un arbre constitué de lui-même et de l’en- semble de ses descendants ; on parle alors desous-arbrede l’arbre initial.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(3)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Définition d’un arbre binaire

Théorie des graphes : unarbreest un graphe connexe acyclique enraciné.

1 2

5 6

9 10 3 7

4 8 11 12

Pères et fils: le sommet 3 est le père de 7, le sommet 6 est le fils de 2.

Il est d’usage de dessiner un arbre en plaçant un père au dessus de ses fils→l’orientation du graphe devient implicite.

semble de ses descendants ; on parle alors desous-arbrede l’arbre initial.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(4)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Définition d’un arbre binaire

Théorie des graphes : unarbreest un graphe connexe acyclique enraciné.

1 2

5 6

9 10 3 7

4 8 11 12

Pères et fils: le sommet 3 est le père de 7, le sommet 6 est le fils de 2.

Il est d’usage de dessiner un arbre en plaçant un père au dessus de ses fils→l’orientation du graphe devient implicite.

Dans ce contexte, on parle denœudau lieu de sommet. Un nœud qui n’a pas de fils est unefeuilleou nœud externe, les autres sont des nœuds internes.

Chaque nœud est la racine d’un arbre constitué de lui-même et de l’en- semble de ses descendants ; on parle alors desous-arbrede l’arbre initial.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(5)

1 2

5 6

9 10 3 7

4 8 11 12

Pères et fils: le sommet 3 est le père de 7, le sommet 6 est le fils de 2.

Il est d’usage de dessiner un arbre en plaçant un père au dessus de ses fils→l’orientation du graphe devient implicite.

Dans ce contexte, on parle denœudau lieu de sommet. Un nœud qui n’a pas de fils est unefeuilleou nœud externe, les autres sont des nœuds internes.

Chaque nœud est la racine d’un arbre constitué de lui-même et de l’en- semble de ses descendants ; on parle alors desous-arbrede l’arbre initial.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(6)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Définition d’un arbre binaire

aritéd’un nœud (ou degré sortant) : nombre de branches qui en partent.

arbres binaires: chaque nœud a pour arité 0, 1 ou 2.

Un ensembleEétant donné, on convient que :

• nil est un arbre binaire surE appelé l’arbre vide;

• six∈Eet siFgetFdsont deux arbres binaires étiquetés parE, alors A= (Fg,x,Fd)est un arbre binaire étiqueté parE.

0 1 1 nil nil

2 3 nil nil

nil 2 nil 0

nil nil

0 1

1 2

3

2 0

0 1

1 2

3

2 0

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(7)

arbres binaires: chaque nœud a pour arité 0, 1 ou 2.

Un ensembleEétant donné, on convient que :

• nil est un arbre binaire surE appelé l’arbre vide;

• six∈E et siFgetFdsont deux arbres binaires étiquetés parE, alors A= (Fg,x,Fd)est un arbre binaire étiqueté parE.

0 1 1 nil nil

2 3 nil nil

nil 2 nil 0

nil nil

0 1

1 2

3

2 0

0 1

1 2

3

2 0

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(8)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Définition d’un arbre binaire

aritéd’un nœud (ou degré sortant) : nombre de branches qui en partent.

arbres binaires: chaque nœud a pour arité 0, 1 ou 2.

Un ensembleEétant donné, on convient que :

• nil est un arbre binaire surE appelé l’arbre vide;

• six∈E et siFgetFdsont deux arbres binaires étiquetés parE, alors A= (Fg,x,Fd)est un arbre binaire étiqueté parE.

0 1 1 nil nil

2 3 nil nil

nil 2 nil 0

nil nil

0 1

1 2

3

2 0

0 1

1 2

3

2 0

Suivant la représentation choisie unefeuilledésignera l’arbre vide (nil) ou un nœud dont les fils gauche et droit sont vides.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(9)

arbres binaires: chaque nœud a pour arité 0, 1 ou 2.

Un ensembleEétant donné, on convient que :

• nil est un arbre binaire surE appelé l’arbre vide;

• six∈E et siFgetFdsont deux arbres binaires étiquetés parE, alors A= (Fg,x,Fd)est un arbre binaire étiqueté parE.

0 1 1 nil nil

2 3 nil nil

nil 2 nil 0

nil nil

0 1

1 2

3

2 0

0 1

1 2

3

2 0

Arbre=nil+Arbre×nœud×Arbre

type ’a arbre = Nil | Noeud of (’a arbre * ’a * ’a arbre) ;;

JP Becirspahic — Arbres binaires — 2015-2016 — Page 2/16

(10)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

SoitRune assertion définie sur l’ensembleA des arbres étiquetés par E. On suppose que :

• R(nil)est vraie ;

• ∀x∈E,∀(Fg,Fd)∈A2, l’implication R(Fg)etR(Fd)

=⇒R(Fg,x,Fd)est vraie ;

Alors la propriétéR(A)est vraie pour tout arbreAdeA.

De nombreuses fonctionsf : A → F se définissent par la donnée d’un élémenta∈F, d’une fonctionϕ:F×E×F→Fet les relations :

• f(nil) =a;

• ∀x∈E,∀(Fg,Fd)∈A2,f(Fg,x,Fd) =ϕ(f(Fg),x,f(Fd)).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(11)

De nombreuses fonctionsf : A → F se définissent par la donnée d’un élémenta∈F, d’une fonctionϕ:F×E×F→Fet les relations :

• f(nil) =a;

• ∀x∈E,∀(Fg,Fd)∈A2,f(Fg,x,Fd) =ϕ(f(Fg),x,f(Fd)).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(12)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

De nombreuses fonctionsf : A → F se définissent par la donnée d’un élémenta∈F, d’une fonctionϕ:F×E×F→Fet les relations :

• f(nil) =a;

• ∀x∈E,∀(Fg,Fd)∈A2,f(Fg,x,Fd) =ϕ(f(Fg),x,f(Fd)).

Lataille|A|d’un arbreA est définie inductivement par les relations :

• |nil|=0 ;

• SiA= (Fg,x,Fd)alors|A|=1+|Fg|+|Fd|.

let rec taille = function

| Nil > 0

| Noeud (fg, _, fd) > 1 + taille fg + taille fd ;;

|A|est le nombre de nœuds d’un arbre.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(13)

De nombreuses fonctionsf : A → F se définissent par la donnée d’un élémenta∈F, d’une fonctionϕ:F×E×F→Fet les relations :

• f(nil) =a;

• ∀x∈E,∀(Fg,Fd)∈A2,f(Fg,x,Fd) =ϕ(f(Fg),x,f(Fd)).

Lahauteurh(A)d’un arbreA se définit inductivement par les relations :

• h(nil) =−1 ;

• SiA= (Fg,x,Fd)alorsh(A) =1+max(h(Fg),h(Fd)).

let rec hauteur = function

| Nil > 1

| Noeud (fg, _, fd) > 1 + max (hauteur fg) (hauteur fd) ;;

h(A)est la longueur du plus long chemin entre la racine et une feuille (la profondeur maximale d’un nœud).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(14)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

SoitAun arbre binaire. Alorsh(A) +16|A|62h(A)+1−1.

On raisonne par induction structurelle.

• SiA=nil,|A|=0 eth(A) =−1 ; le résultat annoncé est bien vérifié.

• SiA= (Fg,x,Fd), supposons le résultat acquis pourFgetFd.

|A|=1+|Fg|+|Fd|>1+h(Fg) +1+h(Fd) +1

>2+max(h(Fg),h(Fd)) =1+h(A)

|A|=1+|Fg|+|Fd|62h(Fg)+1+2h(Fd)+1−1

62×2max(h(Fg),h(Fd))+1−1=2h(A)+1−1

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(15)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

SoitAun arbre binaire. Alorsh(A) +16|A|62h(A)+1−1.

On raisonne par induction structurelle.

• SiA=nil,|A|=0 eth(A) =−1 ; le résultat annoncé est bien vérifié.

>2+max(h(Fg),h(Fd)) =1+h(A)

|A|=1+|Fg|+|Fd|62h(Fg)+1+2h(Fd)+1−1

62×2max(h(Fg),h(Fd))+1−1=2h(A)+1−1

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(16)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

SoitAun arbre binaire. Alorsh(A) +16|A|62h(A)+1−1.

On raisonne par induction structurelle.

• SiA=nil,|A|=0 eth(A) =−1 ; le résultat annoncé est bien vérifié.

• SiA= (Fg,x,Fd), supposons le résultat acquis pourFgetFd.

|A|=1+|Fg|+|Fd|>1+h(Fg) +1+h(Fd) +1

>2+max(h(Fg),h(Fd)) =1+h(A)

|A|=1+|Fg|+|Fd|62h(Fg)+1+2h(Fd)+1−1

62×2max(h(Fg),h(Fd))+1−1=2h(A)+1−1

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(17)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

SoitAun arbre binaire. Alorsh(A) +16|A|62h(A)+1−1.

On raisonne par induction structurelle.

• SiA=nil,|A|=0 eth(A) =−1 ; le résultat annoncé est bien vérifié.

• SiA= (Fg,x,Fd), supposons le résultat acquis pourFgetFd.

|A|=1+|Fg|+|Fd|>1+h(Fg) +1+h(Fd) +1

>2+max(h(Fg),h(Fd)) =1+h(A)

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(18)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Fonctions inductives

Preuve par induction structurelle

SoitAun arbre binaire. Alorsh(A) +16|A|62h(A)+1−1.

On raisonne par induction structurelle.

• SiA=nil,|A|=0 eth(A) =−1 ; le résultat annoncé est bien vérifié.

• SiA= (Fg,x,Fd), supposons le résultat acquis pourFgetFd.

|A|=1+|Fg|+|Fd|>1+h(Fg) +1+h(Fd) +1

>2+max(h(Fg),h(Fd)) =1+h(A)

|A|=1+|Fg|+|Fd|62h(Fg)+1+2h(Fd)+1−1

62×2max(h(Fg),h(Fd))+1−1=2h(A)+1−1

JP Becirspahic — Arbres binaires — 2015-2016 — Page 3/16

(19)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(20)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

• SiA=nil alors|A|=0=f0.

• SiA= (Fg,x,Fd), l’un des deux sous-arbresFgouFd est de hauteur h−1 donc contient au moinsfh1nœuds, l’autre est au moins de hauteurh−2 donc contient au moinsfh2nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(21)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Cas optimal:h(A) =log(|A|+1)−1→arbres binairescomplets.

Pour queA = (Fg,x,Fd)soit complet il faut et il suffit queFg etFd soient complets et de même hauteur.

Un arbre binaire est complet si et seulement si toutes ses feuilles sont à la même profondeur.

0 1

1

4 0

2

3 2

2 8

5 1

0

3 7

|A|=15 et h(A) =3.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(22)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Certaines catégories d’arbres garantissent l’équilibrage : arbres rouge- noir, arbres AVL, etc.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

• SiA=nil alors|A|=0=f0.

• SiA= (Fg,x,Fd), l’un des deux sous-arbresFgouFd est de hauteur h−1 donc contient au moinsfh1nœuds, l’autre est au moins de hauteurh−2 donc contient au moinsfh2nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(23)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Ledéséquilibred’un arbreA = (Fg,x,Fd)est égal àh(Fg)−h(Fd).

Un arbre binaireAest un arbreAVLlorsqu’il est vide ou égal à(Fg,x,Fd) avec :

• Fg etFd sont des arbres AVL ;

• le déséquilibre deA est égal à−1, 0 ou 1.

Le déséquilibre de chaque sous-arbre est égal à−1, 0 ou 1.

0 0 0 0 0

1 0

1

1 0

0

0 0 0 0 0

1 0

2

1 0

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(24)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Tout arbre AVL est équilibré.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

• SiA=nil alors|A|=0=f0.

• SiA= (Fg,x,Fd), l’un des deux sous-arbresFgouFd est de hauteur h−1 donc contient au moinsfh1nœuds, l’autre est au moins de hauteurh−2 donc contient au moinsfh2nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(25)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Tout arbre AVL est équilibré.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds. Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(26)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Tout arbre AVL est équilibré.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

• SiA=nil alors|A|=0=f0.

• SiA= (Fg,x,Fd), l’un des deux sous-arbresFgouFd est de hauteur h−1 donc contient au moinsfh1nœuds, l’autre est au moins de hauteurh−2 donc contient au moinsfh2nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds. Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(27)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Tout arbre AVL est équilibré.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

• SiA=nil alors|A|=0=f0.

• SiA= (Fg,x,Fd), l’un des deux sous-arbresFgouFd est de hauteur h−1 donc contient au moinsfh1nœuds, l’autre est au moins de hauteurh−2 donc contient au moinsfh2nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(28)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires équilibrés

siA est un arbre binaire alors log(|A|+1)−16h(A)6|A| −1.

Un arbre binaireAest ditéquilibrélorsqueh(A) =O(log(|A|)).

Tout arbre AVL est équilibré.

On considère la suite deFibonaccif0=0,f1=1 etfn+2=fn+1+fn. On prouve par induction structurelle que tout arbre AVLA de hauteurh contient au moinsfh nœuds.

• SiA=nil alors|A|=0=f0.

• SiA= (Fg,x,Fd), l’un des deux sous-arbresFgouFd est de hauteur h−1 donc contient au moinsfh1nœuds, l’autre est au moins de hauteurh−2 donc contient au moinsfh2nœuds.

DoncA contient au moinsfh1+fh2+1=fh+1 nœuds.

Sachant queϕh =O(fh)avecϕ=1+

√ 5

2 on en déduit :ϕh(A)=O(|A|), soith(A) =O(log|A|).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 4/16

(29)

V, et on utilise des arbres binaires étiquetés parE=C×V.

un arbre binaireAest un arbre binaire de recherche s’il est vide ou égal à (Fg,(c,v),Fd)où :

• Fg etFd sont des arbres binaires de recherche ;

• toute clé deFg est inférieure ou égale àc;

• toute clé deFd est supérieure ou égale àc.

15 6

4 2

3 5

7 13 9

19 17

18 20

Tout nœud est associé à une clé supérieure ou égale à toute clé de son fils gauche, et inférieure ou égale à toute clé de son fils droit.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 5/16

(30)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbres binaires de recherche

On considère un ensemble ordonné de clésCet un ensemble de valeurs V, et on utilise des arbres binaires étiquetés parE=C×V.

un arbre binaireAest un arbre binaire de recherche s’il est vide ou égal à (Fg,(c,v),Fd)où :

• Fg etFd sont des arbres binaires de recherche ;

• toute clé deFg est inférieure ou égale àc;

• toute clé deFd est supérieure ou égale àc.

Dans la suite du cours, on utilisera le type :

type (’a, ’b) data = {Key : ’a; Value : ’b} ;;

et les ABR seront représentés par le type (’ a, ’ b) data arbre.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 5/16

(31)

La propriété des ABR permet d’afficher toutes les valeurs de l’arbre par ordre croissant de clé à l’aide d’unparcours infixe: exploration en profon- deur de l’arbre(Fg,x,Fd)dans l’ordre :Fg −→x−→Fd.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 6/16

(32)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Arbre binaire de recherche

Parcours infixe

La propriété des ABR permet d’afficher toutes les valeurs de l’arbre par ordre croissant de clé à l’aide d’unparcours infixe: exploration en profon- deur de l’arbre(Fg,x,Fd)dans l’ordre :Fg −→x−→Fd.

Preuve par induction :

• siA=nil, il n’y a rien à prouver ;

• siA= (Fg,x,Fd), on suppose que les parcours infixes deFget deFd se font par ordre de clés croissantes.

Toute clé deFg est inférieure à la clé dexet toute clé deFd supérieure à cette dernière, donc le parcoursFg −→x−→Fd est toujours effectué par ordre croissant de clé.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 6/16

(33)

La propriété des ABR permet d’afficher toutes les valeurs de l’arbre par ordre croissant de clé à l’aide d’unparcours infixe: exploration en profon- deur de l’arbre(Fg,x,Fd)dans l’ordre :Fg −→x−→Fd.

Sitraitementest une fonction de type ’ b −> unit, le parcours d’un ABR prendra la forme :

let rec parcours_infixe = function

| Nil > ()

| Noeud (fg, x, fd) > parcours_infixe fg ; traitement x.Value ; parcours_infixe fd ;;

Le coût temporel de ce parcours est unΘ(n)lorsquen=|A|.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 6/16

(34)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Requêtes dans un ABR

Opérations usuelles sur un ABR :

• recherched’un valeur associée à une clé donnée ;

• recherche de la valeur associée à la clémaximale(ouminimale) ;

• recherche dusuccesseurd’une cléc;

• recherche duprédécesseurd’une clé ;

• l’insertionetsuppressiond’un nouveau couple clé/valeur.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(35)

Recherche d’une clék dans l’ABRA= (Fg,(c,v),Fd):

• sik =c, retournerv;

• sik <c, rechercherkdansFg;

• sik >c, rechercherkdansFd.

let rec recherche k = function

| Nil > raise Not_found

| Noeud (_, x, _) when k = x.Key > x.Value

| Noeud (fg, x, _) when k < x.Key > recherche k fg

| Noeud (_, _, fd) > recherche k fd ;;

Recherche de la clék=13 : 15

6 4 2

3 5

7 13 9

19 17

18 20

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(36)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Requêtes dans un ABR

Recherche de la clé minimale / maximale

La recherche de la clé minimale se poursuit dans le fils gauche tant que ce dernier n’est pas vide :

let rec minimum = function

| Nil > raise Not_found

| Noeud (Nil, x, _) > x.Value

| Noeud (fg, _, _) > minimum fg ;;

Recherche de la clé minimale :

15 6

4 2

3 5

7 13 9

19 17

18 20

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(37)

La recherche de la clé maximale se poursuit dans le fils droit tant que ce dernier n’est pas vide :

let rec maximum = function

| Nil > raise Not_found

| Noeud (_, x, Nil) > x.Value

| Noeud (_, _, fd) > maximum fd ;;

Recherche de la clé maximale :

15 6

4 2

3 5

7 13 9

19 17

18 20

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(38)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Requêtes dans un ABR

Recherche du prédécesseur / successeur

Successeurde la clék : la plus petite des cléscvérifiant :k <c.

let rec successeur k = function

| Nil > raise Not_found

| Noeud (_, x, fd) when x.Key <= k > successeur k fd

| Noeud (fg, x, _) > try successeur k fg

with Not_found > x.Value ;;

Le successeur de 13 est 15 : il n’y a pas de successeur possible dans le fils gauche.

15 6

4 2

3 5

7 13 9

19 17

18 20

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(39)

Prédécesseurde la clék : la plus grande des cléscvérifiant :c<k.

let rec predecesseur k = function

| Nil > raise Not_found

| Noeud (fg, x, _) when x.Key >= k > predecesseur k fg

| Noeud (_, x, fd) > try predecesseur k fd with Not_found > x.Value ;;

Le prédécesseur de 10 est 9 : ont tout d’abord été envisagés 6 et 7 avant de trouver 9.

15 6

4 2

3 5

7 13 9

19 17

18 20

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(40)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Requêtes dans un ABR

Coût d’une requête

Toutes ces requêtes ont un coût temporel enO(h(A)), ce qui explique tout l’intérêt qu’il peut y avoir à ce que l’arbre binaire de recherche soit équilibré:

• dans un ABR quelconque d’ordren=|A|, le coût d’une requête est unO(n);

• dans le cas d’un ABR équilibré, le coût d’une requête est unO(logn).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 7/16

(41)

Pour insérer le couple(k,u)∈ C×V au niveau des feuilles on procède ainsi :

• siA=nil, on retourne l’arbre(nil,(k,u),nil);

• siA= (Fg,(c,v),Fd)alors :

sic=kon remplace le couple (c,v)par(k,u)et on insère(c,v)dans Fg ouFd;

sic>kon insère(k,u)dansFg;

sic<kon insère(k,u)dansFd.

let rec insere_feuille y = function

| Nil > Noeud (Nil, y, Nil)

| Noeud (fg, x, fd) when x.Key = y.Key > Noeud (fg, y, insere_feuille x fd)

| Noeud (fg, x, fd) when x.Key < y.Key > Noeud (insere_feuille y fg, x, fd)

| Noeud (fg, x, fd) > Noeud (fg, x, insere_feuille y fd) ;;

JP Becirspahic — Arbres binaires — 2015-2016 — Page 8/16

(42)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Insertion dans un ABR

Insertion au niveau de la racine

Pour insérer le nouvel élément à la racine on partitionne l’arbre en pla- çant tous les éléments inférieurs à la nouvelle clé dans le fils gauche et les autres dans le fils droit :

let insere_racine y a = let rec partition = function

| Nil > Nil, Nil

| Noeud (fg, x, fd) when x.Key < y.Key > let a1, a2 = partition fd in Noeud (fg, x, a1), a2

| Noeud (fg, x, fd) > let a1, a2 = partition fg in a1, Noeud (a2, x, fd) in let fg, fd = partition a in Noeud (fg, y, fd) ;;

JP Becirspahic — Arbres binaires — 2015-2016 — Page 8/16

(43)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Insertion dans un ABR

Comparaison des deux méthodes

Insertion de la clé 8 dans l’arbre ci-dessous : 15

6 4 2

3 5

7 13 9

19 17

18 20

JP Becirspahic — Arbres binaires — 2015-2016 — Page 8/16

(44)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Insertion dans un ABR

Comparaison des deux méthodes

Insertion de la clé 8 dans l’arbre ci-dessous : 15

6 4 2

3 5

7 13 9

19 17

18 20

15 6

4 2

3 5

7 13 9 8

19 17

18 20

Insertion au niveau des feuilles.

Cette méthode a un coût enO(h(A)).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 8/16

(45)

Insertion de la clé 8 dans l’arbre ci-dessous : 15

6 4 2

3 5

7 13 9

19 17

18 20

8

6 4 2

3 5

7

15 13 9

19 17

18 20

Insertion au niveau de la racine.

Cette méthode a un coût enO(h(A)).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 8/16

(46)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Suppression dans un ABR

Pour supprimer une clékon procède ainsi :

• sik<c, on supprime un élément de clékdansFg;

• sik>c, on supprime un élément de clékdansFd;

• sik=c, alors :

siFg=nil on renvoieFd;

siFd =nil on renvoieFg;

sinon, on supprime deFdune clé minimalemet on renvoie(Fg,m,Fd0).

let rec supprime_min = function

| Nil > failwith "supprime_min"

| Noeud (Nil, m, fd) > m, fd

| Noeud (fg, x, fd) > let m, f = supprime_min fg in m, Noeud (f, x, fd) ;;

let rec supprime k = function

| Nil > raise Not_found

| Noeud (fg, x, fd) when x.Key < k > Noeud (fg, x, supprime k fd)

| Noeud (fg, x, fd) when x.Key > k > Noeud (supprime k fg, x, fd)

| Noeud (Nil, x, fd) > fd

| Noeud (fg, x, Nil) > fg

| Noeud (fg, x, fd) > letm, f = supprime_min fd in Noeud (fg, m, f) ;;

JP Becirspahic — Arbres binaires — 2015-2016 — Page 9/16

(47)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Suppression dans un ABR

Suppression de la clé 15 dans l’arbre ci-dessous : 15

6 4 2

3 5

7 13 9

19 17

18 20

4 2

3 5

7 13 9

18 20

Cette méthode a un coût enO(h(A)).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 9/16

(48)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Suppression dans un ABR

Suppression de la clé 15 dans l’arbre ci-dessous : 15

6 4 2

3 5

7 13 9

19 17

18 20

17 6

4 2

3 5

7 13 9

19

18 20

Cette méthode a un coût enO(h(A)).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 9/16

(49)

ABR ont un coût enO(h(A)), autrement dit, en posantn=|A|:

• un coûtlinéaireO(n)dans le cas d’un arbre de recherche quelconque ;

• un coûtlogarithmiqueO(logn)dans le cas d’un arbre de recherche maintenu équilibré.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(50)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Le problème du déséquilibre

Toutes les fonctions de requêtes, d’insertion et de suppression dans un ABR ont un coût enO(h(A)), autrement dit, en posantn=|A|:

• un coûtlinéaireO(n)dans le cas d’un arbre de recherche quelconque ;

• un coûtlogarithmiqueO(logn)dans le cas d’un arbre de recherche maintenu équilibré.

1 2

3 4

5

Insertion de 1, 2, 3, 4, 5 au niveau des feuilles.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(51)

ABR ont un coût enO(h(A)), autrement dit, en posantn=|A|:

• un coûtlinéaireO(n)dans le cas d’un arbre de recherche quelconque ;

• un coûtlogarithmiqueO(logn)dans le cas d’un arbre de recherche maintenu équilibré.

5 4 3 2 1

Insertion de 1, 2, 3, 4, 5 au niveau de la racine.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(52)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Le problème du déséquilibre

On peut démontrer que le comportement du cas moyen est plus proche du cas optimal que du cas le plus défavorable : si un arbre binaire de recherche est créé en insérant n clés distinctes au niveau des feuilles dans un ordre aléatoire, il existectelle que la hauteur moyenne de cesn!

arbres soit équivalente àclogn.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(53)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Le problème du déséquilibre

On peut démontrer que le comportement du cas moyen est plus proche du cas optimal que du cas le plus défavorable : si un arbre binaire de recherche est créé en insérant n clés distinctes au niveau des feuilles dans un ordre aléatoire, il existectelle que la hauteur moyenne de cesn!

arbres soit équivalente àclogn.

Par exemple, les six arbres que l’on obtient en insérant dans un ordre arbitraire les trois entiers 1, 2 et 3 sont :

123 312 231 213 132 321 1

2 3

3 1

2

2 1 3

2 1 3

1 3 2

3 2 1

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(54)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Le problème du déséquilibre

On peut démontrer que le comportement du cas moyen est plus proche du cas optimal que du cas le plus défavorable : si un arbre binaire de recherche est créé en insérant n clés distinctes au niveau des feuilles dans un ordre aléatoire, il existectelle que la hauteur moyenne de cesn!

arbres soit équivalente àclogn.

Par exemple, les six arbres que l’on obtient en insérant dans un ordre arbitraire les trois entiers 1, 2 et 3 sont :

123 312 231 213 132 321 1

2 3

3 1

2

2 1 3

2 1 3

1 3 2

3 2 1

Ceci ne revient pasà supposer que chaque arbre binaire de recherche à nnœuds est équiprobable : la hauteur moyenne d’un arbre binaire de re- cherche de taillens’ils sont tous équiprobables est équivalente à 2

√ πn.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(55)

du cas optimal que du cas le plus défavorable : si un arbre binaire de recherche est créé en insérant n clés distinctes au niveau des feuilles dans un ordre aléatoire, il existectelle que la hauteur moyenne de cesn!

arbres soit équivalente àclogn.

Il est néanmoins possible de garantir une complexité dans le pire des cas enO(logn)à condition de maintenir en place une structure d’arbre qui garantisse l’équilibrage : arbres AVL, arbres rouge-noir, etc.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 10/16

(56)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

ABR et dictionnaires

Dans le cours de première année a été étudiée la notion detable d’asso- ciation, oudictionnaire: siCdésigne l’ensemble des clés etV l’ensemble des valeurs, une table d’association T est un sous-ensemble de C×V tel que pour toute cléc ∈ C il existeau plusun élément v ∈ V tel que (c,v)∈T.

Une table d’association supporte en général les opérations suivantes :

• ajoutd’une nouvelle paire(c,v)∈C×VdansT;

• suppressiond’une paire(c,v)deT;

• lecturede la valeur associée à une clé dansT.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 11/16

(57)

ciation, oudictionnaire: siCdésigne l’ensemble des clés etV l’ensemble des valeurs, une table d’association T est un sous-ensemble de C×V tel que pour toute cléc ∈ C il existeau plusun élément v ∈ V tel que (c,v)∈T.

Une table d’association supporte en général les opérations suivantes :

• ajoutd’une nouvelle paire(c,v)∈C×VdansT;

• suppressiond’une paire(c,v)deT;

• lecturede la valeur associée à une clé dansT.

Une table de hachage permet la réalisation d’une structure impérative de dictionnaire, avec les coûts :

pire des cas en moyenne lecture ajout lecture ajout

Θ(n) Θ(n) Θ(1) Θ(1)

JP Becirspahic — Arbres binaires — 2015-2016 — Page 11/16

(58)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

ABR et dictionnaires

Dans le cours de première année a été étudiée la notion detable d’asso- ciation, oudictionnaire: siCdésigne l’ensemble des clés etV l’ensemble des valeurs, une table d’association T est un sous-ensemble de C×V tel que pour toute cléc ∈ C il existeau plusun élément v ∈ V tel que (c,v)∈T.

Une table d’association supporte en général les opérations suivantes :

• ajoutd’une nouvelle paire(c,v)∈C×VdansT;

• suppressiond’une paire(c,v)deT;

• lecturede la valeur associée à une clé dansT.

Un ABR permet la réalisation d’une structure persistante de dictionnaire, avec les coûts :

pire des cas en moyenne lecture ajout lecture ajout Θ(logn) Θ(logn) Θ(logn) Θ(logn) à condition de maintenir équilibrés les ABR.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 11/16

(59)

Un arbre binaire est dit parfait lorsque tous les niveaux hiérarchiques sont remplis sauf éventuellement le dernier, partiellement rempli de la gauche vers la droite.

16 14

8

2 4

7 1

10

9 3

JP Becirspahic — Arbres binaires — 2015-2016 — Page 12/16

(60)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Tas binaire

Tas-min et tas-max

Un arbre binaire est dit parfait lorsque tous les niveaux hiérarchiques sont remplis sauf éventuellement le dernier, partiellement rempli de la gauche vers la droite.

16 14

8

2 4

7 1

10

9 3

SiAest un arbre parfait, alors

1+2+· · ·+2h(A)1<|A|61+2+· · ·+2h(A) donc 2h(A)6|A|<2h(A)+1; c’est un arbre équilibré.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 12/16

(61)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Tas binaire

Tas-min et tas-max

Un arbre binaire est dit parfait lorsque tous les niveaux hiérarchiques sont remplis sauf éventuellement le dernier, partiellement rempli de la gauche vers la droite.

16 14

8

2 4

7 1

10

9 3

On appelletas-maxun arbre parfait étiqueté tel que l’étiquette de chaque nœud autre que la racine soit inférieure ou égale à l’étiquette de son père.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 12/16

(62)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Tas binaire

Tas-min et tas-max

Un arbre binaire est dit parfait lorsque tous les niveaux hiérarchiques sont remplis sauf éventuellement le dernier, partiellement rempli de la gauche vers la droite.

16 14

8

2 4

7 1

10

9 3

On appelletas-maxun arbre parfait étiqueté tel que l’étiquette de chaque nœud autre que la racine soit inférieure ou égale à l’étiquette de son père.

Un tas-minpossède la propriété opposée : l’étiquette de chaque nœud autre que la racine est supérieure ou égale à l’étiquette de son père.

JP Becirspahic — Arbres binaires — 2015-2016 — Page 12/16

(63)

On représente un tas par un tableau en utilisant la numérotation :

• la racine porte le numéro 1 ;

• si un nœud porte le numérok, son fils gauche porte le numéro 2ket son fils droit le numéro 2k+1.

Le père d’un nœud de numérokporte donc le numérojk 2 k.

16 14

8 2 4

7 1

10

9 3

16

1

14

2

10

3

8

4

7

5

9

6

3

7

2

8

4

9

1

10

JP Becirspahic — Arbres binaires — 2015-2016 — Page 12/16

(64)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Tas binaire

Implémentation

Sachant que les tableaux Caml sont indexés à partir de 0, on décale les indices :

• la racine est stockée dans la case d’indice 0 ;

• si un nœud est stocké dans la case d’indicek, son fils gauche est stocké dans la case d’indice 2k+1 et son fils droit dans la case d’indice 2k+2 ;

• si un fils est stocké dans le case d’indicek, son père est stocké dans la case d’indicejk−1

2 k.

16 14

8 2 4

7 1

10

9 3

16 14 10 8 7 9 3 2 4 1

0 1 2 3 4 5 6 7 8 9

JP Becirspahic — Arbres binaires — 2015-2016 — Page 12/16

(65)

Si la nouvelle valeur de cet élément est supérieure à la précédente, il se peut que cet élément doive monter dans l’arbre pour reconstituer un tas.

16 14 18 2 4

7 1

10

9 3

JP Becirspahic — Arbres binaires — 2015-2016 — Page 13/16

(66)

l y c é e l o u i s - l e - g r a n d o p t i o n i n f o r m a t i q u e

Préservation de la structure de tas

Comment reconstituer un tas après qu’un élément a été modifié ?

Si la nouvelle valeur de cet élément est supérieure à la précédente, il se peut que cet élément doive monter dans l’arbre pour reconstituer un tas.

16 14 18 2 4

7 1

10

9 3

On permute l’élément avec son père tant que le tas n’est pas reconstitué :

let swap t i j =

let x = t.(i) int.(i) < t.(j) ; t.(j) <x ;;

let monte t k =

let recaux = function

| 0 > ()

| i > let j = (i1)/2 in

ift.(i) > t.(j) then (swap t i j ; aux j) inaux k ;;

Le temps d’exécution est unO(h(T)) =O(logn).

JP Becirspahic — Arbres binaires — 2015-2016 — Page 13/16

(67)

Si la nouvelle valeur de cet élément est inférieure à la précédente, il se peut que cet élément doive descendre dans l’arbre.

16 3 8 2 4

7 1

10

9 3

JP Becirspahic — Arbres binaires — 2015-2016 — Page 13/16

Références

Documents relatifs

[1] Après Amiens, les voûtes de Metz sont les plus hautes de France dans une cathédrale achevée. [2] Ce sont en effet les principaux éléments de l’architecture gothique, qui

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

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

Ils sont utilis´ es notamment dans les syst` emes pair ` a pair de t´ el´ echargement, dans certaines bases de donn´ ees nosql (BD distribu´ ee de grand volume), ou encore

[r]

- le niveau du test passé (français entrée en CE1) - le score obtenu par l’élève (sur 20 points) - le niveau souhaité pour cet élève (CP ou CE1) - et si possible, le scan

Suppression d’un ´el´ement : si la feuille est toujours assez compl`ete, aucun probl`eme et si le nombre d’´el´ements tombe en-dessous de dL/2 e2. prendre des ´el´ements des

Pourtant, il ne faut pas non plus s’y tromper et tomber dans la nostal- gie facile d’un bon vieux temps idéalisé : l’arbre productif présent jusqu’au 19 e siècle dans