Les arbres et tas binomiaux - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

Les arbres et tas binomiaux

Description:

Puisqu'un TAS binomial est vant tout un tas, la cl minimum se trouve alors dans un noeud racine. ... Si seul H1 ou H1 contient , alors le mettre dans Resultat. ... – PowerPoint PPT presentation

Number of Views:289
Avg rating:3.0/5.0
Slides: 63
Provided by: jamalr
Category:
Tags: alors | amortie | arbres | binomiaux | les | tas

less

Transcript and Presenter's Notes

Title: Les arbres et tas binomiaux


1
Les arbres et tas binomiaux
2
Arbres binomiaux
  • Définition Un arbre binomial est un arbre
    enraciné dans lequel les fils de chaque noeud
    sont ordonnés. Autrement dit, si un noeud a k
    fils, alors il existe un premier, deuxième, etc
    fils
  • Un arbre binomial est défini récursivement comme
    suit

3
  • est constitué dun noeud unique.
  • est constitué de deux arbres binomiaux
    reliés entre eux de la manière suivante
  • La racine de lun est le fils le plus à gauche de
    la racine de lautre.
  • Lillustration est comme suit

4
(No Transcript)
5
(No Transcript)
6
  • Propriétés des arbres binomiaux
  • Soit un arbre binomial.
  • Le nombre de noeuds de est
  • La hauteur de larbre est k.
  • Il existe exactement noeuds à la
    profondeur i, i 1,2, , k.
  • La racine a un degré k (supérieur au degré de
    tout autre noeud).

7
(No Transcript)
8
  • 5. Si les fils de la racine sont numérotés de la
    gauche vers la droite par k-1, 1,0, alors le
    fils i est la racine de larbre .
  • Lemme Le degré maximum dun noeud quelconque
    dans un arbre binomial à n noeuds est log n.

9
  • Preuve (par récurrence sur k) Pour chaque
    propriété, la base est larbre binaire
    Vérifier que chaque propriété est valide pour
    est trivial.
  • Supposons que ce résultat soit vrai pour .
  • Maintenant
  • Larbre est constitué de deux copies de
    . Par conséquent,

10
  • larbre contient
  • noeuds.

11
Tas binomiaux
  • Définition Un tas binomial T est un ensemble
    darbre binomiaux ayant les propriétés suivantes
  • Chaque arbre binomial de T est ordonné en min-tas
    (max-tas)
  • Il existe dans T au plus un arbre binomial dont
    la racine possède un degré donné

12
(No Transcript)
13
  • Le seconde propriété implique quun tas binomial
    T à n noeuds est constitué dau plus log n 1
    arbres bonomiaux. En effet, soit la
    représentation binaire de n
  • cest-à-dire

14
  • Comme le nombre de sommets dun arbre binomial
    est , larbre binomial apparaît
    dans larbre T si, et seulement si,
  • nous avons
  • Exemple pour n 13, nous avons bien
  • binaire(13) lt1,1,0,1gt
  • Pour un arbre T binomial à 13 noeuds, il esr
    constitué des arbres binomiaux et

15
  • qui comportent, respectivement, 8, 4 et 1 noeuds.
    Un autre example

4
4
8
8
5
7
N210102
21 2
22 4
N4101002
22 4
20 1
20 1
21 2
9
4
9
4
8
8
5
7
21 2
20 1
22 4
21 2
20 1
N310112
N5101012
22 4
16
Comparaison des efficacités
  • Opération pire cas (tas binaire) pire cas
    (tas binomial)
  • création ?(1)
    ?(1)
  • insertion ?(log n)
    ?(log n)
  • minimum ?(1)
    ?(log n)
  • suppression racine ?(log n)
    ?(log n)
  • Union ?(n)
    ?(log n)
  • diminuer clé ?(log n)
    ?(log n)
  • supprimer un noeud ?(log n)
    ?(log n)

17
Représentation des tas binomiaux
  • Chaque arbre binomial se trouvant à lintérieur
    dun tas binomial est stocké dans la
    représentation fils gauche, frère droit
  • Chaque noeud x comporte
  • Une clé ou tout autre information utile à
    lapplication en question.
  • Un champ degrex représentant le nombre de fils
    de x.

18
  • 3. Un pointeur px sur son père
  • 4. Un pointeur filsx sur son fils le plus à
    gauche
  • 5. Un pointeur frerex sur le frère qui se
    trouve immédiatement à sa droite.

19
(No Transcript)
20
  • Les racines des arbres binomiaux, contenues dans
    un TAS binomial, sont organisées en liste
    chaînée, appelée liste des racines.
  • Les degrés des racines augmentent strictement
    lorsquon parcourt la liste des racines.
  • Si x est la racine dun arbre binomial, frerex
    pointe sur la racine suivante dans la liste des
    racines.
  • On accède un tas binomial T, par le champ headT
    qui est le pointeur sur le premier élément de la
    liste des racines du TAS binomial T.

21
(No Transcript)
22
Opérations sur les tas binomiaux
  1. Création dun tas binomial
  2. Recherche du minimum
  3. Union de deux tas binomiaux
  4. Insertion dune nouvelle valeur
  5. Suppresion de la racine
  6. Diminuer une clé.
  7. Suppresion dun noeud

23
1. La création dun nouveau tas binomial
  • Pour se faire, on crée un objet H avec
    headHnull.
  • Cette opération se fait bien entendu en ?(1).

24
2. Recherche du minimum (maximun)
  • Puisquun TAS binomial est vant tout un tas, la
    clé minimum se trouve alors dans un noeud racine.
    Pour ce faire, nous cherchons donc le minimum
    parmi les élements qui sont atockés dans les
    racines, reliés à head de H.
  • Il est clair que la complexité de cette recherche
    est O(log n), pour la simple raison quil faut
    recherche ce minimum parmi les log n racines qui
    sont reliées entre elles.

25
Procédure de base
  • Avant de procéder aux autres opérations citées
    précédement, regardond de plus prés lopération
    suivante Lien binomial qui est lopération de
    base des autres opérations.
  • Cette opération consiste à fusionner deux tas
    binomiaux dont les racines ont le même degré.
  • Soit donc un arbre Bk-1 de racine y et un autre
    arbre Ck-1 de racine z. Le noeud z devient la
    nouvelle racine dun nouvelle Bk. On suppose ici
  • que le noeud z est plus petit que le noeud y
    (min-tas). Mais sil sagit dun max-tas, on
    prend le max comme illsutré par lexemple
    suivant.

26
Fonction Lien binomial
  • Py z le père de y est z.
  • Ferey filsz
  • Fislz y
  • degrez degrez1
  • Exemple

27
(No Transcript)
28
Insertion dun nouvel élément dans H
  • Lalgorithme est comme suit
  • Convertir lélément à insérer en un tas binomial
  • Mettre i 0
  • Si H contient déjà un
  • a. enlever de H
  • b. appliquer la fonction lien binomial à
    et pour
  • former
  • c. mettre i à i1
  • d. répéter létape 3.
  • 4. Mettre comme dans H en
    mettant à jour le degré de sa racine

29
Illustration
  • Soit un tas de 4 arbre binomiaux (de 23 éléments)
    auquel on veut insérér un autre.

30
  • i 0 on enlève de H et on le lie
    avec pour former
  • i 1 enlever de H ensuite lier à
    pour donner

31
  • i 2 enlever de H ensuite lier à
    pour donner
  • i 3 H ne contient pas . Par conséquent,
    on va lier H avec
  • . Le tas tas binomial H est
    constitué de deux arbres
  • binomiaux Il contient 24 noeuds.

32
(No Transcript)
33
séquence dinsertions et complexité amortie
  • Insérer 10 insérer 20

34
  • Insérer 3

35
  • Insérer 8 pour ce faire, on enlève 3 de larbre
    ensuite 3 et 8 sont liés entre eux et finalement
    les deux tas binomiaux sont liés entre eux.

36
  • Insérer 30

37
  • Insérer 15 pour ce faire, on enlève 30 de
    larbre ensuite 30 et 15 sont liés entre eux et
    finalement les deux tas binomiaux de dimension 2
    et 4 sont liés entre eux.

38
Complexité amortie de cette suite dinsertions
  • Supposons insertions à faire. Alors, il
    est facile de constater ce qui suit
  • Pour n/2 insertions, le tas binomial na pas de
    . Donc, on aura un seul lien à former.
  • Pour n/4 insertions, le tas binomial a
    mais pas de . Autrement dit, on aura 2
    liens à effectuer.
  • Pour n/8 insertions, le tas binomial a et
    , mais pas de . Autrement dit, on
    aura 3 liens à faire.

39
  • En continuant de cette manière, on arrive à
  • Pour insertions, le tas binomial possède
  • , , ., mais point de
  • En additionnant les liens effectués, on obtient
  • Autrement dit, la complexité amortie dune
    opération dinsertion est O(1).

40
Union (fusion) de deux TAS binomiaux
  • Cette opération consiste à fusionner deux tas
    binomiaux, H1 et H2, en un tas binomial Resultat.
  • Étape 0
  • Si aucun de H1 et H2 ne contient , alors
    ne rien faire
  • Si seul H1 ou H1 contient , alors le
    mettre dans Resultat.
  • Si H1 et H2 contienent tous les deux ,
    alors
  • on les lie entre eux pour former
    . Ensuite, on sauvegarde ce TAS pour létape
    suivante.

41
  • Étape i (i 1,2,., log n)
  • Il peut y avoir de 0 à 3 un de H1, un de
    H2 et un autre de létape précédente.
  • Sil ny a pas , ne rien faire.
  • Sil n y a quun seul , le mettre dans le
    TAS Resultat
  • Sinon, lier deux pour avoir et
    le sauvegarder pour létape suivante.
  • 4. Sil reste encore un , le mettre
    dans Resultat
  • Sil reste à la fin un de sauvegardé
    de la dernière étape, le mettre dans Resultat.

42
  • Il y a exactement log n étapes, chacune se fait
    en O(1). Par conséquent, lalgorithme sexécute,
    dans le pire cas, en O(log n).

43
6
3
18
7
12
15
H1
H2
10
44
29
37
8
25
33
28
17
48
31
23
22
30
41
50
24
45
32
55
44
6
3
18
7
12
15
H1?H2
10
44
29
37
8
25
33
28
17
48
31
23
22
30
41
50
24
45
32
55
45
6
3
7
12
15
H1?H2
10
44
29
37
18
8
25
33
28
17
48
31
23
22
30
41
50
24
45
32
55
46
6
3
12
15
H1?H2
10
44
29
37
18
8
7
33
28
17
48
31
23
22
30
25
41
50
24
45
32
55
47
6
3
12
H1?H2
10
44
29
37
18
8
7
15
17
48
31
23
22
30
25
33
28
50
24
45
32
41
55
48
Suppression du maximum (minimum)
  • Supprimer le Bi contenant le maximum (minimum) de
    H. Joindre les parties restantes de H en un
    nouvel arbre binomial H1
  • Supprimer la racine de Bi . Relier les
    sous-arbres binomiaux de la racine supprimée en
    un nouvel arbre binomial H2.
  • Fusionner H1 et H2.

49
  • Complexité
  • Létape 1 est clairement en O(1)
  • Létape 2 se calcule comme suit Comme Bi possède
    i enfants, il y a i pointeurs. Bi contient 2i?? n
    noeuds, donc i ? log n. Ce qui nous donne un pire
    cas de O(log n).
  • Létape 3 est clairement en O(log n)
  • La complexité totale, dans le pire cas, est donc
    O(log n).

50
Exemple de suppression du minimum
6
12
15
10
44
29
18
8
33
28
17
48
31
23
22
30
41
50
24
45
32
55
51
6
12
15
10
44
29
18
8
33
28
17
48
31
23
22
30
41
50
24
45
32
55
52
10
44
29
8
12
15
17
48
31
18
23
22
30
33
28
50
24
45
32
41
55
53
10
44
29
8
12
15
17
48
31
18
23
22
30
33
28
50
24
45
32
41
55
54
10
44
29
8
15
17
48
31
23
22
30
12
33
28
50
18
24
45
32
41
55
55
10
44
8
15
17
29
23
22
30
12
33
28
48
31
18
24
45
32
41
50
55
56
10
44
8
17
23
22
30
12
15
29
18
24
45
32
33
28
48
31
55
41
50
57
Diminuer une clé donnée
  • procedure DecreaseKey(BinomialHeap H, Node P,
    int Key)
  • Parent ? P.Parent
  • while Parent ? 0 and P.Key lt Parent.Key do
  • P.Key ? Parent.Key
  • P.Data ? Parent.Data
  • P ? Parent
  • Parent ? Parent.Parent

58
Diminuer une clé
10
44
8
17
23
22
30
12
15
29
18
24
45
32
33
28
48
31
55
41
50
10
59
10
44
8
17
23
22
30
12
15
29
18
24
45
32
33
28
48
31
55
41
10
60
10
44
8
17
23
22
30
12
15
29
18
24
45
32
33
28
10
31
55
41
48
61
10
44
8
17
23
22
30
12
15
10
18
24
45
32
33
28
29
31
55
41
48
62
10
44
8
17
23
22
30
12
10
15
18
24
45
32
33
28
29
31
55
41
48
Write a Comment
User Comments (0)
About PowerShow.com