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

INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.

Présentations similaires


Présentation au sujet: "INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données."— Transcription de la présentation:

1 INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données

2 INF1101 Plan Définition de monceau Implémentation Insertion et retrait d’éléments Construction d’un monceux Monceaux dans la STL Tri par monceau

3 INF1101 Monceau - définition Un arbre complet tel que pour chaque noeud N dont le parent est P, la clé de P est plus petite que celle de N Normalement implémenté dans un tableau Insertion et retrait sont O(lg N) dans le pire cas Insertion est O(1) en moyenne Recherche du plus petit élément est O(1) dans le pire cas

4 INF1101 Monceau – implémentation On utilise un tableau pour implémenter l’arbre On met la racine de l’arbre à la position 1, plutôt que la position 0, ce qui facilite les opérations

5 INF1101 Monceau - exemple 13212431166519263268 01234567891011 13211624311968652632

6 INF1101 Monceau – insertion de 14 13212431166519263268 14 ? 01234567891011 13211624311968652632

7 INF1101 Monceau - insertion de 14 13212431166519263268 01234567891011 13211624311968652632 14 ?

8 INF1101 Monceau - insertion de 14 13212431166519263268 01234567891011 13211624196865263231 14 ?

9 INF1101 Monceau - insertion de 14 13212431166519263268 01234567891011 13162421196865263231 14 ?

10 INF1101 Monceau - insertion de 14 13212431166519263268 14 01234567891011 1314162421196865263231

11 INF1101 Monceau - retrait 13212431166519263268 14 01234567891011 1314162421196865263231

12 INF1101 Monceau - retrait 212431166519263268 14 01234567891011 14162421196865263231

13 INF1101 Monceau - retrait 2124166519263268 14 01234567891011 141624211968652632 31 ?

14 INF1101 Monceau - retrait 212416651926326814 01234567891011 141624211968652632 31 ?

15 INF1101 Monceau - retrait 212416651926326814 01234567891011 142116241968652632 31 ?

16 INF1101 Monceau - retrait 212416651926326814 31 01234567891011 14211624311968652632

17 INF1101 Monceau - construction 472021614517556392 12 3725648373 0123456789101112131415 924721201245636117553725648373

18 INF1101 Monceau - construction 472021614517556392 12 3725648373 0123456789101112131415 924721201245636117553725648373

19 INF1101 Monceau - construction 472021614517556392 12 3725648373 0123456789101112131415 924721201245636117553725648373

20 INF1101 Monceau - construction 472021612517556392 12 3745648373 0123456789101112131415 924721201225636117553745648373

21 INF1101 Monceau - construction 472021612517556392 12 3745648373 0123456789101112131415 924721201225636117553745648373

22 INF1101 Monceau - construction 472021612517556392 12 3745648373 0123456789101112131415 924721201225636117553745648373

23 INF1101 Monceau - construction 471721612520556392 12 3745648373 0123456789101112131415 924721171225636120553745648373

24 INF1101 Monceau - construction 471721612520556392 12 3745648373 0123456789101112131415 924721171225636120553745648373

25 INF1101 Monceau - construction 471721612520556392 12 3745648373 0123456789101112131415 924721171225636120553745648373

26 INF1101 Monceau - construction 121721612520556392 47 3745648373 0123456789101112131415 921221174725636120553745648373

27 INF1101 Monceau - construction 121721612520556392 37 4745648373 0123456789101112131415 921221173725636120554745648373

28 INF1101 Monceau - construction 121721612520556392 37 4745648373 0123456789101112131415 921221173725636120554745648373

29 INF1101 Monceau - construction 921721612520556312 37 4745648373 0123456789101112131415 129221173725636120554745648373

30 INF1101 Monceau - construction 179221612520556312 37 4745648373 0123456789101112131415 121721923725636120554745648373

31 INF1101 Monceau - construction 172021612592556312 37 4745648373 0123456789101112131415 121721203725636192554745648373

32 INF1101 Monceaux dans la STL Fonction pour créer un monceau: make_heap(Iterator deb, Iterator fin) Fonctions pour insérer et retirer un élément push_heap(Iterator deb, Iterator fin) pop_heap(Iterator deb, Iterator fin) Toutes ces fonctions ont une seconde version avec un troisième argument qui est un prédicat qui permet de redéfinir l’opérateur de comparaison utilisé Note: l’itérateur doit être un itérateur à accès direct, ce qui limite les possibilités de conteneurs (vector et deque)

33 INF1101 Monceaux dans la STL Il existe aussi un adaptateur priority_queue On peut choisir le type de conteneur et de fonction de comparaison Offre les fonctions suivantes: –push() –top() –pop() Voir les exemples fournis en annexe (à exécuter dans.NET)

34 INF1101 Tri par monceau - Principe On applique les modifications suivantes au monceau: –chaque noeud a une valeur plus grande ou égale à celle de tous ses descendants –dans le tableau qui implémente le monceau, la racine se trouve à l’index 0 (au lieu de 1) –pour chaque noeud i, les index sont donc 2*i+1 pour le fils gauche et 2*i+2 pour le fils droit

35 INF1101 Tri par monceau - Principe La procédure est la suivante: –On met dans le tableau les valeurs à trier –On crée le monceau initial (de type Parent > Fils) –On retire la racine du monceau (qui est la plus grande valeur) et on la permute avec le dernier item du monceau –On fait percoler la racine, s’il y a lieu –On répète le processus avec le monceau obtenu qui contient maintenant un élément de moins

36 INF1101 Tri par monceau - Exemple 37 20 2 6536 12 57 01234567 1237220576536 MONCEAU

37 INF1101 Tri par monceau - Exemple 37 20 2 6536 12 57 01234567 1237220576536 Création du monceau MONCEAU

38 INF1101 Tri par monceau - Exemple 37 20 65 236 12 57 01234567 1237652057236 Création du monceau MONCEAU

39 INF1101 Tri par monceau - Exemple 57 20 65 236 12 37 01234567 1257652037236 Création du monceau MONCEAU

40 INF1101 Tri par monceau - Exemple 57 20 12 236 65 37 01234567 6557122037236 Création du monceau MONCEAU

41 INF1101 Tri par monceau - Exemple 57 20 36 212 65 37 01234567 6557362037212 Création du monceau (fin) MONCEAU

42 INF1101 Tri par monceau - Exemple 5720 36 212 37 01234567 1257362037265 Retrait du premier élément MONCEAU

43 INF1101 Tri par monceau - Exemple 1220 36 257 37 01234567 5712362037265 Percoler MONCEAU

44 INF1101 Tri par monceau - Exemple 3720 36 257 12 01234567 5737362012265 Percoler MONCEAU

45 INF1101 Tri par monceau - Exemple 3720 36 2 12 01234567 2373620125765 Retrait du premier élément MONCEAU

46 INF1101 Tri par monceau - Exemple 220 36 37 12 01234567 3723620125765 Percoler MONCEAU

47 INF1101 Tri par monceau - Exemple 202 36 37 12 01234567 3720362125765 Percoler MONCEAU

48 INF1101 Tri par monceau - Exemple 202 36 12 01234567 20362375765 Retrait du premier élément MONCEAU

49 INF1101 Tri par monceau - Exemple 202 12 36 01234567 20122375765 Percoler MONCEAU

50 INF1101 Tri par monceau - Exemple 20 12 2 01234567 2201236375765 Retrait du premier élément MONCEAU

51 INF1101 Tri par monceau - Exemple 2 12 20 01234567 21236375765 Percoler MONCEAU

52 INF1101 Tri par monceau - Exemple 212 01234567 22036375765 Retrait du premier élément MONCEAU

53 INF1101 Tri par monceau - Exemple 212 01234567 22036375765 Percoler MONCEAU

54 INF1101 Tri par monceau - Exemple 2 01234567 2122036375765 Retrait du premier élément Le tableau est maintenant trié

55 INF1101 Tri partiel Supposons maintenant un monceau dont la racine est le plus petit élément (contrairement à l’exemple précédent) Supposons que le tableau contient n éléments, et une valeur m < n On remarquera que après m itérations, on obtient, à la fin du tableau, et en ordre inverse, les m plus petits éléments du tableau On peut donc, de manière efficace, trier les m plus petits éléments du tableau: O(m lg n) Avec le tri par sélection, c’est aussi possible, mais moins efficace: O(mn)

56 INF1101 Tri partiel - exemple 37 20 2 6536 12 57 01234567 1237220576536 MONCEAU

57 INF1101 Tri partiel - exemple 20 37 12 6536 2 57 01234567 2201237576536 MONCEAU Création du monceau

58 INF1101 Tri partiel - exemple 2037 12 6536 57 01234567 3620123757652 MONCEAU Retrait du premier élément

59 INF1101 Tri partiel - exemple 2037 36 6512 57 01234567 1220363757652 MONCEAU Percoler

60 INF1101 Tri partiel - exemple 2037 36 65 57 01234567 6520363757122 MONCEAU Retrait du premier élément

61 INF1101 Tri partiel - exemple 3765 36 20 57 01234567 2037366557122 MONCEAU Percoler

62 INF1101 Tri partiel - exemple 3765 36 57 01234567 37366520122 MONCEAU Retrait du premier élément

63 INF1101 Tri partiel - exemple 3765 57 36 01234567 37576520122 MONCEAU Percoler

64 INF1101 Tri partiel - exemple 01234567 3637576520122 MONCEAU Si on arrête ici, on voit qu’on a bien obtenu les 3 plus petits éléments, qui sont en ordre croissant si on parcourt le tableau à partir de la fin

65 INF1101 Les tris dans la STL sort(): –Doit garantir un temps moyen dans O(n lg n) –Le tri rapide (quicksort) répond à ce critère stable_sort(): –Doit garantir O(n lg n) dans le pire cas –Peut utiliser de la mémoire supplémentaire –Le tri par fusion (mergesort) répond à ce critère partial_sort() –Doit garantir un temps moyen dans O(n lg n) –Doit permettre le tri partiel –Le tri par monceau (heapsort) répond à ce critère


Télécharger ppt "INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données."

Présentations similaires


Annonces Google