Tri par paquets (RadixSort)



Documents pareils
Architecture des Systèmes d Information Architecture des Systèmes d Information

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

Impact on revenue requirements no Description (000$)

1 Introduction au codage

Analyse empirique et modélisation de la dynamique de la topologie de l Internet

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Réunion publique/téléconférence

Avec Skandia Euro Guaranteed Fund 2012 Maîtrisez les yo-yo des marchés financiers

Logiciel de Base. I. Représentation des nombres

Estimations définitives des prix pour les bobines d acier laminé à chaud européens, reconnues par le secteur

Les dates SAS expliquées à ma fille

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

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

Les arbres binaires de recherche

Résultats annuels Exercice clos au 30 avril juin 2015

Les chaînes de caractères

Informatique Générale

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

Cours d analyse technique. Henri Janssen INVESTA

Les informations sur l accessibilité et les conditions d accès pour les vélos sont disponibles sur eurostar.com.

# 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>

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

Conférence téléphonique. Tél.: (+33) Fax: (+33)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

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

LE RÉSEAU INTERNATIONAL D IMPLANTATION D ENTREPRISES. Philippe CHAMPEMOND Directeur Adjoint Erai Chine S IMPLANTER EN CHINE STRATEGIES & SOLUTIONS

Représentation des Nombres

REUNION PRESSE JEUDI 13 FEVRIER Contact presse CAPmedias / Anne COPEY / anne.copey@capmedias.

EXCEL et base de données

Codage d information. Codage d information : -Définition-

Secteur de la construction au Canada

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

Recherche dans un tableau

Quelques Algorithmes simples

DERIVES SUR ACTIONS ET INDICES. Christophe Mianné, Luc François

LE RENFORCEMENT DES CAPACITÉS DES ACTEURS DES FILIÈRES AGRICOLES: L EXPERIENCE DU PROJET MISTOWA. Plan

1 Recherche en table par balayage

Rapport statistique De Mars

CCIFER Executive Master Management. En partenariat avec ESCP Europe

Gestion obligataire passive

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Représentation d un entier en base b

Chapitre 7. Récurrences

RÉSULTATS 2013 RÉUNION SFAF PARIS, LE 21 FÉVRIER 2014

LaFourchette.com IMC AWARD E-COMMERCE

Algorithme. Table des matières

Initiation. àl algorithmique et à la programmation. en C

Dates and deadlines

Une version javascript sera disponible directement dans le cours prochainement.

Récupération de calories pour le chauffage et la production d eau chaude

Catalogue de formations

Algorithmes récursifs

4D v11 SQL Release 5 (11.5) ADDENDUM

ARBRES BINAIRES DE RECHERCHE

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

MT940-MultiLine. Formats. Version 3.02 du 17/01/2013. Sommaire: Extraits de compte (Formats utilisés) 2

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

Calculabilité Cours 3 : Problèmes non-calculables.

Le centre sera fermé du 20 au 31 juillet 2015

Mobile Paiement: perspectives et axes de développement

Les structures de données. Rajae El Ouazzani

Le format OpenPGP. Traduit par : Sébastien Person. personseb@yahoo.fr. Matthieu Hautreux. matthieu.hautreux@insa-rouen.fr.

Partie 7 : Gestion de la mémoire

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

EXPERIAN FOOTFALL: COMPTEZ-LES. ATTIREZ-LES. CONVERTISSEZ-LES.

Bases de programmation. Cours 5. Structurer les données

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

Python - introduction à la programmation et calcul scientifique

Trier les ventes (sales order) avec Vtiger CRM

DynAmiser vos investissements

La gestion de projet collaborative dans un contexte d amélioration continue

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

Cours d Informatique

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Surveillance épidémiologique : application à la détection et la prédiction des épidémies

Sommaire. BilanStat manuel de présentation et d utilisation Page 2

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Modèle de budget mensuel

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Jeux de caracte res et encodage (par Michel Michaud 2014)

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd

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

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Comptabilité énergétique

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

NOTICE MÉTHODOLOGIQUE SUR LES OPTIONS DE CHANGE

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

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Démonstration d utilisation De NesmaCom

Modèle de budget mensuel

Plus courts chemins, programmation dynamique

Transcription:

Tri par paquets (RadixSort) 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 2 3 4 5 6 7 8 9 1 Tri stable Algorithme de Tri STABLE = Un algorithme qui préserve l ordre (avant le tri) des éléments ayant la même clef à la fin du tri Entrée : (1,x),(6,m),(4,k),(5,t),(2,s),(3,b),(1,a),(6,f),(6,b) Exemple de résultat d un tri stable clef objet Sortie : (1,x),(1,a),(2,s) (3,b),(4,k),(5,t),(6,m),(6,f),(6,b) Algorithmes de tri pas stables : tri par tas, tri rapide 2 1

Tris Q: Jusqu à maintenant les meilleurs tris que nous avons vus sont exécutés en un temps O(n log n). Est-il possible de faire mieux? R: Non, en général, la limite inférieure de problème est Ω(n log n) mais dans certaines circonstances, O(n) est possible! 3 Tri par paquets Bucket sort Imaginez trier 200 articles d étudiants par ordre alphabétique selon la première lettre du dernier nom. Le tri par insertion (ou tri par sélection, ou tri par tri à bulle) essaierait de traiter le tas complet tout de suite. Le tri par fusion exigerait d étendre tous les 200 papiers, de les comparer et de les rempiler dans l'ordre Le tri par paquets place les 200 articles dans 26 paquets selon la première lettre du nom; Les paquets sont ensuite empilés dans l ordre. 4 2

Tri par paquets Bucket sort Soit S une séquence de n entrées (clé, élément) avec les clés dans [0, N - 1] Le tri par paquets utilise les clés comme indices dans un tableau auxiliaire B de séquences (paquets) Phase 1: Vider la séquence S en déplaçant chaque entrée (k, o) dans son paquet B[k] Phase 2: Pour i = 0,, N - 1, déplacer les entrées du paquet B[i] à la fin de la séquence S Analyse: Le tri par paquet prend un temps O(n + N) Algorithm bucketsort(s, N) Entrée: séquence S de (clé, élément) avec les clés dans [0, N - 1] Sortie: séquence S triée par clés croissantes B tableau de N séquences vides while!s.isempty() f S.first() (k, o) S.remove(f) B[k].insertLast((k, o)) for i 0 to N - 1 while!b[i].isempty() f B[i].first() (k, o) B[i].remove(f) S.insertLast((k, o)) 5 Tri par paquets Exemple Intervalle de clés [0, 9] Phase 1 Phase 2 6 3

Tri par paquets Propriétés Propriétés du type de clé Les clés sont utilisées comme les indices dans un tableau et ne peuvent pas être des objets arbitraires Aucun comparateur externe Propriété: tri stable L'ordre relatif de n'importe quels deux entrées avec la même clé est conservé après l'exécution de l'algorithme Le tri par paquets est rapide surtout lorsque N <<<< n ( plusieurs entrées avec des clés identiques); Quand N croit par rapport à n cet algorithme devient lent 7 Tri par paquets Extensions Extensions Clés entières entre [a, b] Insérer une entrée (k, o) dans un paquet B[k - a] Clés en chaîne de caractères parmi D chaînes de caractères possibles où D a une taille constante (par ex., les noms des 50 états américains) Trier D et calculer le rang r(k) de chaque chaîne de caractères k de D dans la séquence triée Insérer (k, o) dans un paquet B[r(k)] 8 4

Tri par paquets Ex: D ={January, February, March,... December} Sort D: 0.Apr 1.Aug 2.Feb 3.Dec 4.Jan 5.June 6.July 7.March 8.May 9.Nov 10.Oct 11.Sep April(c) April(d) Sequence à trier: {May(a), April(c), April(d), March(s)} May(a) 0 1 2 3 4 5 6 7 8 9 March(s) 10 11 9 Ordre lexicographique Un d-uplet est une séquence de d clés (k 1, k 2,, k d ), où la clé k i est la ième dimension du d-uplet L'ordre lexicographique de deux d-uplets est récursivement défini comme suit (x 1, x 2,, x d ) < (y 1, y 2,, y d ) (x 1 < y 1 ) ou (x 1 = y 1 & (x 2,, x d ) < (y 2,, y d )) c.-à-d., les éléments des d-uplets sont comparés par la première dimension, ensuite par la deuxième dimension, etc. Ex: (3,1,5)<(3,2,4) 10 5

Tri lexicographique Soit C i le comparateur qui compare deux d-uplets par leur ième dimension c.-à-d. par ex. pour C 2 : (x1,x2,x3) (y1,y2,y3) si x2 y2. pour C 3 : (x1,x2,x3) (y1,y2,y3) si x3 y3. Soit stablesort(s, C) n'importe quel algorithme de tri stable qui utilise un comparateur C. Par ex., stablesort pourrait appliquer un tri par paquets en utilisant la ième dimension comme clé Le tri-lexicographique trie une séquence de d -uplets dans l'ordre lexicographique en exécutant d fois l algorithme stablesort = une fois par dimension 11 Tri lexicographique Remarquer que le tri va de la fin au début. Pourquoi? Le tri lexicographique est exécuté en un temps O(dT(n)), où T(n) est le temps de stablesort Algorithme lexicographicsort(s) Entrée: séquence S de d-uplets Sortie: séquence S triée dans l ordre lexicographique for i d to 1 stablesort(s, C i ) 12 6

Tri lexicographique - Exemple (7,4,6) (5,1,5) (2,4,6) (2, 1, 4) (3, 2, 4) Trier les dimensions de droite à gauche (2, 1, 4) (3, 2, 4) (5,1,5) (7,4,6) (2,4,6) (2, 1, 4) (5,1,5) (3, 2, 4) (7,4,6) (2,4,6) (2, 1, 4) (2,4,6) (3, 2, 4) (5,1,5) (7,4,6) 13 Tri par base Le tri par base est un cas particulier du Tri lexicographique qui utilise le tri par paquets comme algorithme de tri stable pour chaque dimension 14 7

Tri par base - variation 1 Utilise le tri par paquets comme l algorithme de tri stable applicable aux d- uplets où les clés de chaque dimension i sont des entiers dans [0, N - 1] Exécuté en un temps O(d( n + N)) Algorithme radixsort(s, N) Entrée : séquence S de d-uplets tel que (0,, 0) (x 1,, x d ) et (x 1,, x d ) (N - 1,, N - 1) pour chaque d-uplet (x 1,, x d ) dans S Sortie : séquence S triée dans l ordre lexicographique for i d to 1 bucketsort(s, N) 15 Tri par base - variation 2 Considérer une séquence de n entiers avec une représentation binaire en b- bits x = x b - 1 x 1 x 0 Nous représentons chaque élément comme un b-uplet d entiers dans la gamme [0, 1] et appliquons le tri par base avec N = 2 Exécuté dans un temps O(bn); ex. trie les entiers Java (32bits) en O(n) Algorithme binaryradixsort(s) Entrée séquence S d entiers de b-bits Sortie séquence S triée remplacer tout élément x de S avec l entrée (0, x) for i 0 to b - 1 remplacer la clé k de chaque entrée (k, x) de S avec le bit x i de x bucketsort(s, 2) 16 8

Tri par base - Exemple Tri d une séquence de 4-bits entiers 17 Tri par base - Extension Tri par base - variation 3 Les clés sont des entiers dans [0, N 2-1] Nous représentons une clé comme un 2-uplet de chiffres dans [0, N - 1] et appliquons le tri par base, c.-à-d. nous l écrivons en notation de base N: Exemple (N = 10): 75 (7, 5) Exemple (N = 8): 35 (4, 3) Le temps d exécution du tri par base est O( n + N) Peut être étendu aux clés d entier dans une gamme [0, N d - 1] 18 9

Tri par base - Exemple (N = 10) Les clés sont dans l intervalle [ 0, 99 ] 75,12,54,33,14,87,45,17 75 = (7, 5), 12 = (1,2), 54 = (5,4), 33 =(3,3),... (7, 5) (1,2) (5,4) (3,3) (1,4) (8,7) (4,5) (1,7) (1,2) (3,3) (5,4) (1,4) (7, 5) (4,5) (8,7) (1,7) (1,2) (1,7) (1,4) (3,3) (4,5) (5,4) (7, 5) (8,7) 19 Tri par base - Extension Tri par base: variation avec une chaîne de caractères Les clés sont des chaînes de caractères de d caractères chacune Nous représentons chaque clé par un d-uplet d entiers où la dimension i est la représentation ASCII (entier de 8-bits) ou Unicode (entier de 16-bits) du ième caractère et appliquons le tri par base variation 1. 20 10

Tri par base - Exemple Utiliser la dernière variation pour trier les chaînes de caractères suivantes: cart, core, fore, cans, cars, bans Étape 1: convertir en 4-uplet cart: (3,1,18,20) cans: (3,1,14,19) core: (3,15,18,5) cars: (3,1,18,19) fore: (6,15,18,5) bans: (2,1,14,19) Étape 2: Trier chaque dimension du d-uplet avec un tri par paquets en commençant par la dernière dimension 21 11