Algorithmes de tris. Stéphane Grandcolas. Tris Stéphane Grandcolas p. 1/64

Documents pareils
1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Les arbres binaires de recherche

Architecture des Systèmes d Information Architecture des Systèmes d Information

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

INF601 : Algorithme et Structure de données

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Définitions. Numéro à préciser. (Durée : )

Quelques Algorithmes simples

ARBRES BINAIRES DE RECHERCHE

Chapitre 7. Récurrences

Algorithmique, Structures de données et langage C

Programmation linéaire

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Quelques algorithmes simples dont l analyse n est pas si simple

= constante et cette constante est a.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Algorithmique I. Algorithmique I p.1/??

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

4. Les structures de données statiques

Resolution limit in community detection

Compression de Données - Algorithme de Huffman Document de Conception

Résolution de systèmes linéaires par des méthodes directes

1 Recherche en table par balayage

Optimisation Discrète

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Alain DI MAGGIO Mise à jour sur le site 11/01/10

données en connaissance et en actions?

Parallélisme et Répartition

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Sujet 4: Programmation stochastique propriétés de fonction de recours

Algorithmique et Programmation

Formation tableur niveau 1 (Excel 2013)

Les deux points les plus proches

4D v11 SQL Release 5 (11.5) ADDENDUM

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Chapitre 5 : Flot maximal dans un graphe

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Parcours FOAD Formation EXCEL 2010

Bases de données documentaires et distribuées Cours NFE04

Continuité et dérivabilité d une fonction

Auto-Entreprise : Activités : Eric SOTY - Siret n Formation Bureautique, continue d'adultes. Tél : Fax :

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Programmation linéaire

Introduction à l étude des Corps Finis

Image d un intervalle par une fonction continue

Un algorithme équitable d exclusion mutuelle tolérant les fautes

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Cours de Master Recherche

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Démonstration d utilisation De NesmaCom

Statistiques descriptives sous Excel. Lætitia Perrier Bruslé Cours de statistique descriptive sous Excel

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

C f tracée ci- contre est la représentation graphique d une

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Excel 2010 Module 13. Comment créer un tableau d amortissement dégressif d une immobilisation. Enseignant : Christophe Malpart

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

Fonctions linéaires et affines. 1 Fonctions linéaires. 1.1 Vocabulaire. 1.2 Représentation graphique. 3eme

Organigramme / Algorigramme Dossier élève 1 SI

Feuille TD n 1 Exercices d algorithmique éléments de correction

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

MIS 102 Initiation à l Informatique

Business Intelligence avec Excel, Power BI et Office 365

MABioVis. Bio-informatique et la

Traitement des données avec Microsoft EXCEL 2010

MATHÉMATIQUES DISCRÈTES (4) CRYPTOGRAPHIE CLASSIQUE

Rappels sur les suites - Algorithme

Algorithmique et structures de données I

COURS HOMOLOGUE ECDL/PCIE EXCEL 2013

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Algorithmes de recherche

Introduction à la statistique descriptive

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Modèle de calcul des paramètres économiques

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

FORMATION CONTINUE SUR L UTILISATION D EXCEL DANS L ENSEIGNEMENT Expérience de l E.N.S de Tétouan (Maroc)

Initiation à LabView : Les exemples d applications :

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

Cours de Probabilités et de Statistique

Les structures de données. Rajae El Ouazzani

Arbres binaires de recherche

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Maîtriser l'utilisation des outils bureautiques. Maîtriser le logiciel de traitement de texte - Word. Maitriser le logiciel tableur - Excel

Java Licence Professionnelle CISII,

Recherche dans un tableau

Statistique : Résumé de cours et méthodes

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Probabilités sur un univers fini

CH.6 Propriétés des langages non contextuels

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Découverte du tableur CellSheet

Transcription:

Tris Stéphane Grandcolas p. 1/64 Algorithmes de tris Stéphane Grandcolas stephane.grandcolas@univ-amu.fr

Tris Stéphane Grandcolas p. /64 Tris. Arbre de décision : tri par insertion. Complexité des tris par comparaison dans le pire des cas : borne minimale. Tas et tri par tas. Tri par dénombrement, tri par base.

Tris Stéphane Grandcolas p. /64 Tris. organiser un ensemble d objets selon un ordre déterminé relation d ordre : comparaison de clés dans nos exemple nous confondrons les objets avec leurs clés tri par comparaison versus tri par indexation tri sur place : espace mémoire de taille constante tri stable : préserve l ordre initial en cas d égalité

Tris Stéphane Grandcolas p. 4/64 Tris. 1. Tris en O(n ). tri à bulles, tri par insertion, tri par sélection.. Tris en O(n log n). tri par fusion, tri par tas, tri rapide (mais en O(n ) dans le pire des cas).. Tris spéciaux. tri shell (probablement O(n 1.5 )), tri par dénombrement (O(n)).

Tris Stéphane Grandcolas p. 5/64 Tri par insertion partie triée i partie non triée Principe : insérer les éléments les uns après les autres dans la partie triée Insertion : recopie des éléments plus grands vers la droite

Tris Stéphane Grandcolas p. 6/64 Tri par insertion procédure TRI_PAR_INSERTION(T[1,..., n]) début pour i := jusqu à n faire j := i, tant que ((j > 1) et (T[j] < T[j 1])) faire PERMUTER(T, j, j 1), j := j 1, fin faire fin faire fin procédure

Tris Stéphane Grandcolas p. 7/64 Tri par insertion Pire des cas : i 1 permutations à chaque passage. T(n) = n i= i = O(n ) Meilleur des cas : aucune permutation (mais une comparaison). T(n) = n i= 1 = O(n)

Tris Stéphane Grandcolas p. 8/64 Arbre de décision du tri par insertion. 1 a b c a <= b <= > a > b a b c b a c b <= c <= > b > c a <= c <= > a > c a b c a c b b a c b c a a <= c <= > a > c b <= c <= > b > c a c b c a b b c a c b a

Tris Stéphane Grandcolas p. 9/64 Complexité des tris par comparaison Nombre de feuilles : n! (le nombre de permutations de n éléments) (une permutation est une bijection, si les éléments sont tous différents, deux suites distinctes produisent des résultats différents avec la même permutation)

Tris Stéphane Grandcolas p. 10/64 Complexité des tris par comparaison Nombre de feuilles : n! (le nombre de permutations de n éléments) une permutation est une bijection, si les éléments sont tous différents, deux suites distinctes produisent des résultats différents avec la même permutation Complexité du tri dans le pire des cas = hauteur de l arbre de décision (formule de Stirling) or h log(n!) log ( n) n e log ( n) n = n log n n log e e et la hauteur de l arbre h = O(n log n)

Tris Stéphane Grandcolas p. /64 Tas (files de priorité) Arbre binaire représenté dans un tableau. Opérations : insertion, extraction du max (resp. extraction du min), augmentation de la clé (resp. diminution de la clé), construction d un tas.

Tris Stéphane Grandcolas p. 1/64 Tas (files de priorité) Tas : arbre binaire, chaque noeud a une valeur supérieure (resp. inférieure) aux valeurs figurant dans ses sous-arbres 1 7 10 5 1 4 8

Tris Stéphane Grandcolas p. 1/64 Tas : représentation Tableau indexé : les n éléments du tas sont T[0], T[1],..., T[n 1]. Convention : indice du fils gauche de i : i + 1, indice du fils droit de i : i +. L arbre est naturellement équilibré (toutes les feuilles ont la même profondeur à un niveau près) 0 fils droit 1 4 5 7 8 9 10 1 7 10 5 1 4 8 0 5 6 n 1 fils gauche

Tris Stéphane Grandcolas p. 14/64 Tas (files de priorité) Tas : le parcours des éléments du tableau correspond au parcours de l arbre par niveaux (parcours en largeur). 0 1 hauteur log n 1 10 7 4 5 6 5 1 7 8 9 4 8

Tris Stéphane Grandcolas p. 15/64 Tas : insérer un élément Placer le nouvel élément à la fin du tableau. 1 7 10 5 1 4 8 1

Tris Stéphane Grandcolas p. 16/64 Tas : insérer un élément Comparer le nouvel élément avec son père. 1 7 10 5 1 4 8 1

Tris Stéphane Grandcolas p. 17/64 Tas : insérer un élément Permuter avec le père si la propriété d infériorité n est pas satisfaite. 1 7 10 1 5 1 4 8

Tris Stéphane Grandcolas p. 18/64 Tas : insérer un élément Comparer avec le père. 1 7 10 1 5 1 4 8

Tris Stéphane Grandcolas p. 19/64 Tas : insérer un élément Permuter. 1 1 7 10 5 1 4 8

Tris Stéphane Grandcolas p. 0/64 Tas : insérer un élément Le processus prends fin dès que le père a une clé supérieure. 1 1 7 10 5 1 4 8

Tris Stéphane Grandcolas p. 1/64 Tas : insérer un élément Coût : O(logn), le parcours d une branche. 1 1 7 10 5 1 4 8

Tris Stéphane Grandcolas p. /64 Tas : augmenter la clé Principe : faire remonter l élément comme pour l insertion. 1 1 7 10 5 1 4 8

Tris Stéphane Grandcolas p. /64 Tas : augmenter la clé Principe : faire remonter l élément comme pour l insertion. 1 1 7 10 1 4 8

Tris Stéphane Grandcolas p. 4/64 Tas : augmenter la clé Principe : faire remonter l élément comme pour l insertion. 1 1 7 10 1 4 8

Tris Stéphane Grandcolas p. 5/64 Tas : augmenter la clé Principe : faire remonter l élément comme pour l insertion. 1 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 6/64 Tas : augmenter la clé Principe : faire remonter l élément comme pour l insertion. 1 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 7/64 Tas : augmenter la clé Coût : O(logn), le parcours d une branche. 1 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 8/64 Tas : extraire le max supprimer le dernier noeud de l arbre et recopier sa valeur à la racine, entasser à la racine.

Tris Stéphane Grandcolas p. 9/64 Tas : entasser. Tas 0 9 Tas 4 10 5 1 8 1 7 4 5 6 7 8 9

Tris Stéphane Grandcolas p. 0/64 Tas : entasser. 9 7 10 5 1 4 8

Tris Stéphane Grandcolas p. 1/64 Tas : entasser. 9 7 10 5 1 4 8

Tris Stéphane Grandcolas p. /64 Tas : entasser. 9 7 10 5 1 4 8

Tris Stéphane Grandcolas p. /64 Tas : entasser. 10 7 9 5 1 4 8

Tris Stéphane Grandcolas p. 4/64 Tas : entasser. 10 7 9 5 1 4 8

Tris Stéphane Grandcolas p. 5/64 Tas : entasser. procédure ENTASSER(i, T, n) {FILSG(i) et FILSD(i) sont des tas, i peut-être pas} début imax := i, si (FILSG(i) < n) et (T[FILSG(i)] > T[iMax]) alors im ax :=FILSG(i), si (FILSD(i) < n) et (T[FILSD(i)] > T[iMax]) alors imax := FILSD(i), si (imax i) alors ECHANGER(T, i, im ax), fin si fin procédure ENTASSER(iM ax, T, n), Pire des cas : parcours de la plus longue branche O(log n).

Tris Stéphane Grandcolas p. 6/64 Tas : extraire le max Supprimer la dernière valeur et la mettre à la racine : 1 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 7/64 Tas : extraire le max Supprimer la dernière valeur et la mettre à la racine : 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 8/64 Tas : extraire le max Entasser à la racine : 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 9/64 Tas : extraire le max Coût : O(logn). 1 10 7 1 4 8

Tris Stéphane Grandcolas p. 40/64 Tas : construction. Principe : transformer en tas du bas vers le haut en entassant 0 1 4 5 6 7 8 9 10 1 1 14 15 16 17 18 19 0 1 4 5 réduits à une feuille, pas la peine d entasser

Tris Stéphane Grandcolas p. 41/64 Tas : construction. Base : les n/ derniers éléments du tableau sont des tas (feuilles) Itération : FilsG(i) et FilsD(i) sont des tas, après Entasser(i, T, n), i est un tas fonction CONSTRUIRE_TAS(T, n) pour i := n/ 1 jusqu à 0 faire ENTASSER(i, T, n), fin fonction Complexité : O(n log n) de façon évidente. En fait O(n).

Tris Stéphane Grandcolas p. 4/64 Tas : construction. Preuve construction du tas en O(n) à la hauteur h = 0 au plus n 1 noeuds à la hauteur h = 1 au plus n noeuds à la hauteur h au plus n h+1 noeuds Pour un noeud à la hauteur h on entasse en au plus h échanges

Tris Stéphane Grandcolas p. 4/64 Tas : construction. Preuve construction du tas en O(n) Le cumul est log n h=1 n log n h n h+1 h=1 h h Puisque on a i x i = i=0 h=0 x (1 x) h = 1/ h (1 1/) =

Tris Stéphane Grandcolas p. 44/64 Tas : construction. Preuve construction du tas en O(n) et donc le nombre d échanges est borné par n log n h=0 h h n = O(n)

Tris Stéphane Grandcolas p. 45/64 Tri par tas. Principe : extraire successivement tous les éléments du tas. Initialisation : construire un tas avec les valeurs de la suite. Itération : extraire le max et le placer dans le tableau après les éléments du tas.

Tris Stéphane Grandcolas p. 46/64 Tri par tas. 6 8 17 1 1 16 19 6 8 17 1 1 16 19

Tris Stéphane Grandcolas p. 47/64 Tri par tas. 6 8 17 1 1 16 19 6 8 17 1 1 16 19

Tris Stéphane Grandcolas p. 48/64 Tri par tas. 8 6 17 1 1 16 19 8 6 17 1 1 16 19

Tris Stéphane Grandcolas p. 49/64 Tri par tas. 8 6 1 17 1 16 19 8 6 1 17 1 16 19

Tris Stéphane Grandcolas p. 50/64 Tri par tas. 8 6 1 17 1 16 19 8 6 1 17 1 16 19

Tris Stéphane Grandcolas p. 51/64 Tri par tas. 19 6 1 17 1 16 19 6 1 17 1 16 8

Tris Stéphane Grandcolas p. 5/64 Tri par tas. 19 6 1 17 1 16 19 6 1 17 1 16 8

Tris Stéphane Grandcolas p. 5/64 Tri par tas. 6 19 1 17 1 16 6 19 1 17 1 16 8

Tris Stéphane Grandcolas p. 54/64 Tri par tas. 6 1 1 17 19 16 6 1 1 17 19 16 8

Tris Stéphane Grandcolas p. 55/64 Tri par tas. 6 1 1 17 19 16 6 1 1 17 19 16 8

Tris Stéphane Grandcolas p. 56/64 Tri par tas. 1 1 17 19 16 1 1 17 19 16 6 8

Tris Stéphane Grandcolas p. 57/64 Tri par tas. fonction TRI_PAR_TAS(T, n) CONSTRUIRE_TAS(T, n), pour i := n 1 jusqu à 1 faire ECHANGER(T, 0, i), ENTASSER(0, T, i), fin faire fin fonction ConstruireUnTas(T, n) est en O(n). Ensuite on fait n 1 fois Entasser(0, T, i), i.e. O(nlogn). La complexité du tri est donc O(nlogn).

Tris Stéphane Grandcolas p. 58/64 Tri par dénombrement. Tri sans comparaison Suppose que l on sait indexer les éléments à trier : i.e. affecter à chacun un rang qui dépends uniquement de sa valeur qui respecte l ordre Exemple : tri d une suite de valeurs entières comprises entre 1 et 1000

Tris Stéphane Grandcolas p. 59/64 Tri par dénombrement. fonction TRI_PAR_DENOMBREMENTS(T, n) {In : T un tableau de n éléments} {Out : R le tableau trié des éléments de T } début pour i := 0 à k 1 faire nb[i] := 0, pour i := 1 à n faire nb[t[i]] := nb[t[i]] + 1, pos[0] := 0, pour i := 1 à k 1 faire pos[i] := pos[i 1] + nb[i 1], pour i := 1 à n faire R[pos[T[i]]] := T[i], pos[t[i]] := pos[t[i]] + 1, renvoyer R initialisations calcul des nombres d apparitions calcul des indices du premier élément de chaque catégorie recopie des élément originaux du tableau T dans R fin procédure Complexité : O(n + k). Il est donc linéaire.

Tris Stéphane Grandcolas p. 60/64 Tri par dénombrement. 0 1 4 5 6 7 8 9 T 0 0 1 1 0 1 1 0 1 Nombres d apparitions nb 4 0 1 Indices des premiers pos 0 7 T 0 1 4 5 6 7 8 9 0 0 1 1 0 1 1 placement de T[0] en R[0] pos 1 7 R 0 0 0 1 1 1 1 placement de T[1] en R[7] pos 1 8 0 1 4 5 6 7 8 9 placement de T[] en R[1] pos 8

Tris Stéphane Grandcolas p. 61/64 Tri par base. Utilise le tri par dénombrement en plusieurs passes. 56 59 47 167 89 46 56 197 47 89 85 47 167 85 46 46 85 56 167 56 59 47 59 59 197 167 89 85 46 197 197 89 n nombres à c chiffres de k valeurs possibles. Complexité O(c n + c k). Si c est constant et si k = O(n) le tri par base est linéaire (O(n)).