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

6 INF1101 Monceau – insertion de ?

7 INF1101 Monceau - insertion de ?

8 INF1101 Monceau - insertion de ?

9 INF1101 Monceau - insertion de ?

10 INF1101 Monceau - insertion de

11 INF1101 Monceau - retrait

12 INF1101 Monceau - retrait

13 INF1101 Monceau - retrait ?

14 INF1101 Monceau - retrait ?

15 INF1101 Monceau - retrait ?

16 INF1101 Monceau - retrait

17 INF1101 Monceau - construction

18 INF1101 Monceau - construction

19 INF1101 Monceau - construction

20 INF1101 Monceau - construction

21 INF1101 Monceau - construction

22 INF1101 Monceau - construction

23 INF1101 Monceau - construction

24 INF1101 Monceau - construction

25 INF1101 Monceau - construction

26 INF1101 Monceau - construction

27 INF1101 Monceau - construction

28 INF1101 Monceau - construction

29 INF1101 Monceau - construction

30 INF1101 Monceau - construction

31 INF1101 Monceau - construction

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 MONCEAU

37 INF1101 Tri par monceau - Exemple Création du monceau MONCEAU

38 INF1101 Tri par monceau - Exemple Création du monceau MONCEAU

39 INF1101 Tri par monceau - Exemple Création du monceau MONCEAU

40 INF1101 Tri par monceau - Exemple Création du monceau MONCEAU

41 INF1101 Tri par monceau - Exemple Création du monceau (fin) MONCEAU

42 INF1101 Tri par monceau - Exemple Retrait du premier élément MONCEAU

43 INF1101 Tri par monceau - Exemple Percoler MONCEAU

44 INF1101 Tri par monceau - Exemple Percoler MONCEAU

45 INF1101 Tri par monceau - Exemple Retrait du premier élément MONCEAU

46 INF1101 Tri par monceau - Exemple Percoler MONCEAU

47 INF1101 Tri par monceau - Exemple Percoler MONCEAU

48 INF1101 Tri par monceau - Exemple Retrait du premier élément MONCEAU

49 INF1101 Tri par monceau - Exemple Percoler MONCEAU

50 INF1101 Tri par monceau - Exemple Retrait du premier élément MONCEAU

51 INF1101 Tri par monceau - Exemple Percoler MONCEAU

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

53 INF1101 Tri par monceau - Exemple Percoler MONCEAU

54 INF1101 Tri par monceau - Exemple 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 MONCEAU

57 INF1101 Tri partiel - exemple MONCEAU Création du monceau

58 INF1101 Tri partiel - exemple MONCEAU Retrait du premier élément

59 INF1101 Tri partiel - exemple MONCEAU Percoler

60 INF1101 Tri partiel - exemple MONCEAU Retrait du premier élément

61 INF1101 Tri partiel - exemple MONCEAU Percoler

62 INF1101 Tri partiel - exemple MONCEAU Retrait du premier élément

63 INF1101 Tri partiel - exemple MONCEAU Percoler

64 INF1101 Tri partiel - exemple 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