Algorithmes de tri. 1 Introduction



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

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

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

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Quelques algorithmes simples dont l analyse n est pas si simple

Poker. A rendre pour le 25 avril

12 Tableaux croisés dynamiques

LES REPRESENTATIONS DES NOMBRES

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Compétences en fin de maternelle Comparer des quantités.

Jeux mathématiques en maternelle. Activités clés. Jeu des maisons et des jardins (Yvette Denny PEMF)

CONTENU MISE EN PLACE. 1. Placez le plateau de jeu au centre de la table.

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Excel 2007 Niveau 3 Page 1

Créer sa première base de données Access Partie 4/4 - Création d un état

4D v11 SQL Release 5 (11.5) ADDENDUM

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

EXCEL TUTORIEL 2012/2013

Initiation à Excel. Frédéric Gava (MCF)

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

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

Numération et sens du nombre Maternelle à la 3 e année

Traitement des données avec Microsoft EXCEL 2010

Ouvrir le compte UQÀM

Quelques Algorithmes simples

INFORMATIQUE : LOGICIELS TABLEUR ET GESTIONNAIRE DE BASES DE DONNEES


AIDE MEMOIRE. Forprev. De l habilitation à la gestion de sessions. Page 1 sur 55

Compter à Babylone. L écriture des nombres

Algorithmes récursifs

Peut-on imiter le hasard?

MEDIAplus elearning. version 6.6

POKER ET PROBABILITÉ

EXCEL et base de données

ÉPREUVE COMMUNE DE TIPE Partie D

Prise en main rapide

Techniques d interaction dans la visualisation de l information Séminaire DIVA

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

LES GENERATEURS DE NOMBRES ALEATOIRES

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

MATHÉMATIQUES. Mat-4104

Initiation au binaire

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Manuel d utilisation

Le chiffre est le signe, le nombre est la valeur.

EVALUATION Nombres CM1

Travailler avec les télécommunications

Théorie des Langages

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

La pratique des décisions dans les affaires

Publier dans la Base Documentaire

MS GS LES BOITES D ALLUMETTES. Enumérer. 1- Présentation. individuellement aux élèves.

Cours 1 : Qu est-ce que la programmation?

Gestion des bases de données (2 e partie)

Créer le schéma relationnel d une base de données ACCESS

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

Etude de fonctions: procédure et exemple

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Infolettre #18 : Les graphiques avec Excel 2010

Formats d images. 1 Introduction

Mise en scène d un modèle dans l espace 3D

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Les probabilités. Chapitre 18. Tester ses connaissances

Une ergonomie intuitive

Structure fonctionnelle d un SGBD

Campagnes d ings v.1.6

Mes citations. Guide Google Scholar

Les aides de TheBookEdition.com. La mise en page. (Temps de réalisation : 10 à 15 minutes)

Support application ProgrÉ. Académie de Paris

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

1. Introduction Création d'une requête...2

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Publier un Carnet Blanc

Guide de démarrage Janvier 2012

Mathématiques financières

Annexe B : Exemples. Avis de vente aux enchères liées Système de plafonnement et d échange de droits d émission de gaz à effet de serre (GES)

Activités pour la maternelle PS MS GS

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Solutions en ligne Guide de l utilisateur

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

Dossier I Découverte de Base d Open Office

Microsoft Excel 2000 Fonctions avancées

Module 16 : Les fonctions de recherche et de référence

Qu est-ce qu une probabilité?

Utilisation avancée de SugarCRM Version Professional 6.5

BIRT (Business Intelligence and Reporting Tools)

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

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

L essentiel. Coopérative, flexible, très performante : la plateforme Engineering Base. web aucotec.com

DÉPLOIEMENT DE QLIKVIEW POUR DES ANALYSES BIG DATA CHEZ KING.COM

CREG : versailles.fr/spip.php?article803

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Transcription:

Algorithmes de tri L objectif de ce document est de présenter plusieurs algorithmes classiques de tri. On commence par présenter chaque méthode de manière intuitive, puis on détaille un exemple d exécution de l algorithme, et enfin on propose une expérience peremttant de le mettre en œuvre en manipulant des objets. 1 Introduction Lorsque vous jouez aux cartes (tarot, belote, rami, etc.), vous avez plusieurs cartes dans votre main. Afin de mieux voir les cartes et de pouvoir optimiser leur stratégie, la plupart des joueurs ordonnent par couleur et par valeur les cartes, en fonction du jeu auquel ils jouent. Les règles du jeu vous indiquent un ordre dans lequel il est possible de ranger vos cartes. Comment procédez-vous? Il n y a pas une seule technique. Certains joueurs sont plus rapides que d autres pour ranger leur jeu. Quel est leur secret? Plus sérieusement, classer des données est une activité qui occupe de nombreuses administrations depuis longtemps. Historiquement, le dépouillement des recensements aux USA a été l une des premières tâches automatisées grâce à une machine. Répondant à un concours du gouvernement américain, Herman Hollerith réalisa la première machine à statistiques en 1890. Cette machine trie automatiquement des cartes perforées. Par la suite, de grandes compagnies comme IBM proposèrent plusieurs modèles comme par exemple le modèle D3 qui pouvait trier 1000 cartes par minute (cf Figure 1). La plupart de ces machines utilisent la méthode du tri radix, car elle permet d ordonner efficacement les cartes perforées. Figure 1 Trieuse IBM D3 commercialisée en 1958 Ordonner, ranger, trier un nombre considérable de données sont des opérations fastidieuses pour un être humain, alors qu un ordinateur est bien plus efficace dans ces tâches répétitives. Il existe de nombreuses manières de programmer un ordinateur pour trier des données. Ainsi, les plus grands informaticiens se sont penchés sur la question afin d élaborer des algorithmes de tri les plus efficaces possibles. De nos jours, cette activité est croissante à cause de l explosion des données disponibles via Internet. Un des principaux défis des années à venir est la manipulation des données issues du BIG DATA généré par l interconnectivité des objets de notre quotidien. Nous commençons par présenter quatre méthodes de tri classiques, puis nous donnons l intuition d un tri moins connu, le tri par bulles. Enfin nous expliquons comment avec une spatule il est possible de trier une pile de crêpes.

2 Tri par insertion Intuition : Une méthode de tri très simple correspond à ce que font certains joueurs de cartes en prenant les cartes une à une et en les rangeant au fur et à mesure dans leur main. Cet algorithme est connu sous le nom de tri par insertion : partant d un ensemble ordonné de cartes, chaque nouvelle carte est correctement insérée à sa place relativement aux cartes déjà présentes. Exemple : On veut trier la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Dans la Figure 2, nous présentons les différentes étapes de ce tri. 11 912 26 77 42 136 666 92 11 912 26 77 42 136 666 92 11 26 77 912 42 136 666 92 11 26 77 912 42 136 666 92 11 26 42 77 136 666 912 92 11 26 42 77 136 666 912 92 Figure 2 Exécution du tri par insertion Expérience : Placer un tas de 32 cartes portant des numéros, par exemple de 1 à 1000, mélangées sur la table. Ensuite tirer une à une dix cartes, de manière à toujours avoir les cartes ordonnées. Cette consigne devrait induire naturellement le tri par insertion. 3 Tri par minimum ou maximum Intuition : Le tri par minimum isole le minimum parmi les nombres et le place au début de la liste en l échangeant avec le nombre en dernère position, puis recommence avec les nombres restants. En répétant ce processus autant de fois qu il y a de nombres nous obtenons les nombres triés du plus petit au plus grand. Il est possible de faire la même chose en cherchant le maximum à chaque fois afin d obtenir les nombres dans l ordre décroissant. Exemple : On veut trier la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Le tri par minimum de cette séquence est décrit dans la Figure 3. 11 912 26 77 42 136 666 92 Figure 3 Exécution du tri par minimum.

Expérience : Vous disposez de 8 cartes aléatoirement choisies parmi 32 cartes portant des numéros, par exemple de 1 à 1000. Ces cartes forment un tas face cachée devant vous. Vous disposez aussi d un emplacement où vous pouvez stocker une carte de votre choix. Vous ne pouvez prendre qu une carte à la fois et soit la placer dans l emplacement, soit dans le tableau à sa bonne place soit la poser cachée sur la table dans une seconde pile face cachée. 1. Comment trouver le minimum des 8 cartes en ne voyant qu une seule fois chaque carte? 2. Maintenant vous ne pouvez dépiler la seconde pile qu une fois la première pile vide. Comment pouvez-vous remplir le tableau en plaçant les cartes dans l ordre croissant? 1 2 3 4 5 6 7 8 4 Tri fusion Intuition : Un algorithme plus rapide que les deux précédents est le tri par fusion. Ce tri repose sur les deux remarques suivantes : Un ensemble d une carte est nécessairement ordonné. Il est facile de fusionner en une série ordonnée deux séries déjà triées. Pour cela il suffit de comparer la première carte de chaque série, de ranger la plus petite des deux dans une nouvelle série et de recommencer sur ce qui reste des deux séries initiales. Exemple : On veut trier la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Le tri fusion de cette séquence est décrit dans la Figure 4. 11 912 26 77 42 136 92 666 11 26 77 912 42 92 136 666 Figure 4 Exécution du tri fusion. Expérience : Nous allons réaliser une version à plusieurs participants de ce tri. Nous avons besoin de n personnes pour trier n cartes. Chaque participant possède donc une carte, qu il sait ordonner facilement. Chacun choisit un autre participant et ils construisent ensemble une liste de 2 cartes triées. Ensuite chaque groupe fusionne avec un autre et ainsi de suite jusqu à obtenir un seul groupe. 5 Tri Rapide (Quicksort) En 1962, Tony Hoare inventa le tri rapide (Quicksort), qui est généralement considéré comme l algorithme le plus utilisé dans le monde entier. Intuition : L idée de cet algorithme est de choisir un élément appelé pivot et de le ranger à sa place définitive, triant tous les éléments inférieurs au pivot à sa gauche et tous ceux qui sont supérieurs au pivot à sa droite. Plus précisément cet algorithme fonctionne comme suit : choisir un élément p au hasard parmi les éléments à trier. Cet élément est appelé le pivot. séparer les éléments restants en deux listes, d une part ceux qui sont plus petits que p, d autre part ceux qui sont plus grands. trier chacune des listes obtenues en utilisant ce même algorithme. aggréger les deux listes triées, en les mettant bout à bout. Exemple : On veut trier la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Le tri fusion de cette séquence est décrit dans la Figure 5, où les pivots tirés aléatoirement sont successivement 77, 11, 666, 42, 92.

11 42 26 77 912 136 92 666 11 42 26 77 912 136 92 666 11 42 26 77 136 92 666 912 11 42 26 77 136 92 666 912 Figure 5 Exécution du tri rapide. Expérience : Nous utilisons les boîtes d allumettes contenant les billes pour illustrer ce tri. Prendre au hasard les boîtes les unes après les autres et les mettre une à une à leur place définitives. Plus précisément : 1. Choisir une boîte au hasard, cette boîte sera appelée pivot 2. Mettre à gauche toutes les boîtes plus légères que la boîte pivot et à droite toutes les boîtes plus lourdes que la boîte pivot. 3. La position du pivot par rapport aux autres boîtes est donc trouvée. Recommencer l opération avec les boîtes de droite et de gauche, ceci jusqu à avoir trouvé la place des toutes les boîtes. 6 Tri par base (Radix sort) Cet algorithme a été utilisé pour construire les trieuses automatiques au début du xx e siècle. Exemple : On veut trier la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Le tri Radix en base 10 sur cette séquence est décrit dans la Figure 6. La première opération consiste à trier la liste suivant le chiffre des unités. Ensuite il faut trier la liste obtenue selon le chiffre des dizaines, mais conserver l ordre des éléments ayant le même chiffre des unités. Enfin répéter ce tri avec les chiffres des centaines. 11 912 42 92 26 136 666 77 11 912 26 136 42 666 77 92 Figure 6 Exécution du tri Radix. Expérience : Au lieu de considérer des nombres, nous allons nous placer dans le rôle de l ingénieur qui a inventé la première trieuse automatique de fiches de renseignement aux USA. Pour ce faire nous considérons des fiches individuelles simplifiées qui contiennent trois informations à propos d enfants de moins de 10 ans : l âge en année entière, la taille par tranche de 10 cm et le poids de chaque individu en kilogrammes. Nous souhaitons les trier par ordre croissant suivant l âge, puis la taille et ensuite le poids. Cet ordre est appelé un ordre lexicographique 1. L ensemble des tris vus jusqu à présent fonctionnent, mais de par la nature particulière des données à trier, il est posssible de faire différemment. L idée est de manipuler les fiches trois fois (une fois par catégories) afin de les trier selon l ordre lexicographique choisi. Lors du premier passage nous les classons par poids en formant des piles de fiches par poids. Nous empilons les tas en commençant par celui correspondant au plus petit poids jusqu au plus grand. Ensuite nous classons les cartes par taille de la plus petite à la plus grande en les prenant une par une dans la pile construite après l avoir retournée. Puis nous empilons les tas et recommençons avec l âge pour obtenir les fiches triées. 7 Tri à bulles Intuition : Le principe du tri à bulles est de parcourir la liste en échangeant lors du parcours deux éléments consécutifs s ils sont rangés dans le mauvais ordre et de répeter ce processus jusqu à ce qu il n y ait plus d échanges lors d un parcours. Dans ce cas la liste est triée. 1. L ordre alphabétique est l ordre lexicographique le plus connu.

Une variante du tri à bulles est le tri shaker qui consiste au lieu de revenir au début de la liste, à effectuer un parcours dans le sens inverse en effectuant les échanges selon l ordre inverse. Exemple : On veut trier la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Le tri à bulles sur cette séquence est décrit dans la Figure 7. 11 26 77 912 42 136 666 92 11 26 77 42 912 136 666 92 11 26 77 42 136 912 666 92 11 26 77 42 136 666 912 92 11 26 77 42 136 666 92 912 11 26 42 77 136 666 92 912 11 26 42 77 136 92 666 912 Figure 7 Exécution du tri à bulles. Expérience : Vous alignez les n cartes face cachée. Vous ne pouvez retourner que deux cartes consécutives et uniquement les inverser ou pas, avant de les retourner à nouveau. Comment trier les cartes? 8 Tri crêpe Expérience : Pour la chandeleur vous réalisez des crêpes et vous les empilez au fur et à mesure sur une assiette. Toutes vos crêpes sont évidemment de tailles différentes. Vous souhaitez ranger vos crêpes de la plus grande à la plus petite, pour cela vous disposez uniquement d une spatule qui vous permet de retourner les n premières crêpes. Comment pouvez-vous ordonner vos crêpes? Intuition : Notre pile de crêpes peut être représentée par une liste d éléments. Chaque crêpe est représentée par un entier. Si nous avons k crêpes, la crêpe la plus petite est l entier 1 et la plus grande l entier k. La seule opération possible (outre l inspection visuelle du tas de crêpes) est de retourner avec une spatule les n premières crêpes de la pile, pour un n de notre choix. L idée est d abord d amener le plus grand élément de la liste au sommet de la pile, ensuite de retourner l ensemble de la pile ainsi modifiée et positionner ainsi le plus grand élément à la base. Il suffit alors de répéter le processus en ignorant la plus grande crêpe déjà à sa place. Exemple : Étant donné la liste des nombres suivants : 11, 912, 26, 77, 42, 136, 666, 92. Le tri crêpe sur cette séquence est décrit dans la Figure 8. 9 Conclusion L importance des algorithmes de tri dans notre quotidien n est plus à démontrer, la moindre requête à votre site préféré nécessite de trier les résultats pour les afficher. Une motivation plus mathématique est le calcul de la médiane d une suite de valeurs qui est immédiate sur une liste triée. Remarquons qu il existe pour le calcul de la médiane un algorithme naïf moins efficace qui consiste à retirer le maximum et le minimum de la liste jusqu à obtenir un ou deux éléments. Enfin il existe de nombreuses ressources pédagogiques sur les tris, comme par exemple ce site où il est possible de voir le déroulement de nombreux tris sur des exemples (https://interstices.info/jcms/c_6973/ les-algorithmes-de-tri?hltext=tri). Le site suivant propose de nombreuses références aux articles originaux sur la complexité des tris et une visualisation permettant de comparer l efficacité de différents tris (http://www.sorting-algorithms.com/). Plus sérieusement, le site suivant propose des danses folkloriques basées sur des algorithmes de tri http://algo-rythmics.ms.sapientia.ro/.

912 11 26 77 42 136 666 92 92 666 136 42 77 26 11 912 666 92 136 42 77 26 11 912 11 26 77 42 136 92 666 912 136 42 77 26 11 92 666 912 92 11 26 77 42 136 666 912 42 77 26 11 92 136 666 912 77 42 26 11 92 136 666 912 42 26 11 77 92 136 666 912 26 11 42 77 92 136 666 912 Figure 8 Exécution du tri crêpe.