La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les arbres et tas binomiaux. Arbres binomiaux Définition: Un arbre binomial est un arbre enraciné dans lequel les fils de chaque noeud sont ordonnés.

Présentations similaires


Présentation au sujet: "Les arbres et tas binomiaux. Arbres binomiaux Définition: Un arbre binomial est un arbre enraciné dans lequel les fils de chaque noeud sont ordonnés."— Transcription de la présentation:

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 1)est constitué dun noeud unique. 2) 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

5

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

7

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: 1.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: 1.Chaque arbre binomial de T est ordonné en min-tas (max-tas) 2.Il existe dans T au plus un arbre binomial dont la racine possède un degré donné

12

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) = 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 8 N=2 10 = = = = 42 1 = 22 0 = = 4 N=3 10 =11 2 N=4 10 =100 2 N=5 10 = = = = 2

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: 1.Une clé ou tout autre information utile à lapplication en question. 2.Un champ degre[x] représentant le nombre de fils de x.

18 3. Un pointeur p[x] sur son père 4. Un pointeur fils[x] sur son fils le plus à gauche 5. Un pointeur frere[x] sur le frère qui se trouve immédiatement à sa droite.

19

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, frere[x] pointe sur la racine suivante dans la liste des racines. On accède un tas binomial T, par le champ head[T] qui est le pointeur sur le premier élément de la liste des racines du TAS binomial T.

21

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 head[H]=null. 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 P[y] = z; le père de y est z. Fere[y] = fils[z] Fisl[z] = y degre[z] = degre[z]+1 Exemple:

27

28 Insertion dun nouvel élément dans H Lalgorithme est comme suit: 1.Convertir lélément à insérer en un tas binomial 2.Mettre i = 0; 3.Si H contient déjà un a. enlever de H b. appliquer la fonction lien binomial à et pour former c. mettre i à i+1; d. répéter létape 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

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: 1.Si aucun de H1 et H2 ne contient, alors ne rien faire 2.Si seul H1 ou H1 contient, alors le mettre dans Resultat. 3.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. 1.Sil ny a pas, ne rien faire. 2.Sil n y a quun seul, le mettre dans le TAS Resultat 3.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 H1H1 H2H2

44 H 1 H 2

45 H 1 H 2

46 H 1 H 2

47 H 1 H 2

48 Suppression du maximum (minimum) 1.Supprimer le B i contenant le maximum (minimum) de H. Joindre les parties restantes de H en un nouvel arbre binomial H 1 2.Supprimer la racine de B i. Relier les sous- arbres binomiaux de la racine supprimée en un nouvel arbre binomial H 2. 3.Fusionner H 1 et H 2.

49 Complexité: Létape 1 est clairement en O(1) Létape 2 se calcule comme suit: Comme B i possède i enfants, il y a i pointeurs. B i contient 2 i 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

51

52

53

54

55

56

57 Diminuer une clé donnée procedure DecreaseKey(BinomialHeap H, Node P, int Key): Parent P.Parent while Parent 0 and P.Key < Parent.Key do P.Key Parent.Key P.Data Parent.Data P Parent Parent Parent.Parent

58 Diminuer une clé

59

60

61

62


Télécharger ppt "Les arbres et tas binomiaux. Arbres binomiaux Définition: Un arbre binomial est un arbre enraciné dans lequel les fils de chaque noeud sont ordonnés."

Présentations similaires


Annonces Google