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

Slides:



Advertisements
Présentations similaires
Structures de données avancées : B arbres
Advertisements

Tris.
Cours n° 7 Standard Template Library II.
Cours n° 6 Standard Template Library I.
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Cours n° 9 Conception et Programmation à Objets
Cours n° 8 Conception et Programmation à Objets
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
Cours 8 Arbres équilibrés
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Tableau croisé dynamique sous Excel (TCD).
Les structures de données arborescentes
Arbre binaire de recherche
II. Chaînage, SDD séquentielles
Les algorithmes: complexité et notation asymptotique
Chapitre VII. Tri Tri par tas Tri rapide.
Bibliothèque standard du C++
RECURSIVITE ARBRES BINAIRES
Methode de Tri efficace
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Gestion de Fichiers Arbres B.
Structures de données IFT-2000
Traiter des Données avec la STL
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-2000
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.

Standard Template Library
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Les Algorithmes de Tri Introduction Tri par Sélection
Structures de données IFT-2000
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Structures de données IFT-2000
Transformer pour régner

Structures de données IFT-2000
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
Structures de données avancées : Arbres Red-Black
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: II. Arbres B (Base sur les Sections de.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Programmation linéaire en nombres entiers
Méthodes de tri.
Arbres binaires et tables de hachage
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Cours 4 - Trois algorithmes de recherche dans un tableau
GF-11: Tri Interne Efficace et Tri Externe
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Tas et Tas Tri Exercice 1 Insérer dans un min-tas vide des numéros suivants:25, 17, 36, 2, 3, 100, 1, 19, 17 Supprimer.
Tutorat en bio-informatique Le 28 novembre Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400.
Structures de données avancées : Principales structures de fichiers
Cours 5 - Trois algorithmes de tri d'un tableau
Algorithmes de tri.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département d’informatique et de génie logiciel Édition septembre 2009.
Chapitre 21 Collections partie III Set Une collection qui contient des éléments uniques. Deux implémentation :  HashSet : stock les éléments.
VI. Tri par tas.
Files de priorité (Priority Queue)
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
. Le B-Arbre.
1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.
Transcription de la présentation:

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

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

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

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

INF1101 Monceau - exemple

INF1101 Monceau – insertion de ?

INF1101 Monceau - insertion de ?

INF1101 Monceau - insertion de ?

INF1101 Monceau - insertion de ?

INF1101 Monceau - insertion de

INF1101 Monceau - retrait

INF1101 Monceau - retrait

INF1101 Monceau - retrait ?

INF1101 Monceau - retrait ?

INF1101 Monceau - retrait ?

INF1101 Monceau - retrait

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

INF1101 Monceau - construction

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)

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)

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

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

INF1101 Tri par monceau - Exemple MONCEAU

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

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

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

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

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

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

INF1101 Tri par monceau - Exemple Percoler MONCEAU

INF1101 Tri par monceau - Exemple Percoler MONCEAU

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

INF1101 Tri par monceau - Exemple Percoler MONCEAU

INF1101 Tri par monceau - Exemple Percoler MONCEAU

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

INF1101 Tri par monceau - Exemple Percoler MONCEAU

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

INF1101 Tri par monceau - Exemple Percoler MONCEAU

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

INF1101 Tri par monceau - Exemple Percoler MONCEAU

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

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)

INF1101 Tri partiel - exemple MONCEAU

INF1101 Tri partiel - exemple MONCEAU Création du monceau

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

INF1101 Tri partiel - exemple MONCEAU Percoler

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

INF1101 Tri partiel - exemple MONCEAU Percoler

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

INF1101 Tri partiel - exemple MONCEAU Percoler

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

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