Algorithmes de tris récursifs d un tableau à une dimension de valeurs numériques

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

Algorithmique I. Algorithmique I p.1/??

1 Recherche en table par balayage

Quelques Algorithmes simples

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

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

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

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

L exclusion mutuelle distribuée

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

Algorithmes récursifs

Recherche dans un tableau

données en connaissance et en actions?

Chapitre 7. Récurrences

ARBRES BINAIRES DE RECHERCHE

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

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

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Algorithmique et structures de données I

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

Algorithmique et Programmation

Les deux points les plus proches

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

Jean-Philippe Préaux

Chp. 4. Minimisation d une fonction d une variable

Corrigé des TD 1 à 5

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Business Intelligence

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

Trépier avec règle, ressort à boudin, chronomètre, 5 masses de 50 g.

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

MIS 102 Initiation à l Informatique

Programmation Objet - Cours II

L analyse d images regroupe plusieurs disciplines que l on classe en deux catégories :

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

EXCEL et base de données

Programmation Linéaire - Cours 1

= constante et cette constante est a.

Logiciel Libre Cours 3 Fondements: Génie Logiciel

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Présentation Bpifrance Prêt Numérique Juin 2015

à moyen Risque moyen Risq à élevé Risque élevé Risq e Risque faible à moyen Risq Risque moyen à élevé Risq

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

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

CORRECTION EXERCICES ALGORITHME 1

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

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

Convocations ministérielles et convocations du rectorat de Grenoble Déplacements temporaires

CHAPITRE V. Recherche et tri

Logiciel de facturation (ASP) pour les distributeurs de combustibles

Indications pour une progression au CM1 et au CM2

Etude comparative de différents motifs utilisés pour le lancé de rayon

Cours d algorithmique pour la classe de 2nde

Kerberos/AD/LDAP/Synchro

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

Examen Médian - 1 heure 30

MABioVis. Bio-informatique et la

Chaînes de Markov au lycée

Conventions d écriture et outils de mise au point

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

Manuel de validation Fascicule v4.25 : Thermique transitoire des structures volumiques

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

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

1 Définition de la non stationnarité

4D v11 SQL Release 5 (11.5) ADDENDUM

Modélisation et étude d un système de trading directionnel diversifié sur 28 marchés à terme

FORMATIONS De ploiement des PKI dans les entreprises Technologie VPN IPSEC Se curiser un syste me Unix ou Linux

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

Comment utiliser le catalogue?

Cours 02 : Problème général de la programmation linéaire

Recherche d Information(RI): Fondements et illustration avec Apache Lucene. par Majirus

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Introduction à MATLAB R

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

FAIRE UN PAIEMENT TIPI

L évaluation de la rentabilité d un investissement

Intégration et probabilités TD1 Espaces mesurés

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

NON-LINEARITE ET RESEAUX NEURONAUX

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Filtrage stochastique non linéaire par la théorie de représentation des martingales

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

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

TPE Artema IP. Manuel de l'utilisateur

Christophe CANDILLIER Cours de DataMining mars 2004 Page 1

Genie Logiciel Avancé Projet :Gestion d une chaîne hotelier low cost

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

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Réforme relative au permis de construire et aux autorisations d urbanisme

Initiation à l algorithmique

Table des matières. Introduction

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

Comment évaluer une banque?

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Alarme domestique- Présentation

Transcription:

Algorithmes de tris récursifs d un tableau à une dimension de valeurs numériques 1 Introduction On a étudié en première année des algorithmes de tris simples, on va maintenant approfondir cette notion en définissant des méthodes récursives de tris. On se limite dans le cadre du programme aux cas détaillés du tri rapide et du tri fusion. Le tri rapide «Quick Sort» L algorithme fait parti de la catégorie des algorithmes «diviser pour régner». A chaque appel de la fonction de tri, le nombre de données à traiter est diminué de un. C est-à-dire que l on ne traite plus l élément appelé «pivot» dans les appels de fonction ultérieurs, il est placé à sa place définitive dans le tableau. Le tableau de valeurs est ensuite segmenté en deux parties : - dans un premier tableau, toutes les valeurs numériques sont inférieures au «pivot», - dans un second tableau, toutes valeurs numériques sont supérieures au «pivot». L appel de la fonction de tri est récursif sur les tableaux segmentés. On peut par exemple choisir le premier élément du tableau comme «pivot» : Le «coût» temporel de l algorithme de tri est principalement donné par des opérations de comparaison sur les éléments à trier. On raisonne donc sur le nombre de données à traiter pour l analyse de la complexité de l algorithme. - Dans le pire des cas, un des deux segments est vide à chaque appel de la fonction de tri. Cela arrive lorsque le tableau est déjà trié. Le nombre de données à traiter pour le i me appel, est n i + 1. Le nombre total pour n appels de fonction est donc : n (n + 1). Cours Info - Jacques Delfaud - Page 1 sur 6

On peut aussi écrire une relation de récurrence du type : C(n) = C(n 1) + n 1. La complexité est donc de classe quadratique C(n) = O(n ). - Dans le meilleur des cas, les deux segments sont de taille égale. Pour un nombre de données à traiter n, chacun des segments suivant a donc au plus n 1 éléments (on retire le pivot). On répète ainsi la segmentation des tableaux jusqu à arriver au plus à un seul élément. ( ) n 1 On peut écrire une relation de récurrence du type : C(n) = C + n 1. La complexité est donc de classe quasi linéaire : C(n) = O(n ln(n)). Remarque : certains algorithmes de tri rapide prennent pour «pivot» le dernier élément, la valeur moyenne du premier et du dernier, ou un positionnement aléatoire dans le tableau. Pour se placer dans le meilleur des cas pour chaque segment de tableau, il faut prendre pour pivot la valeur médiane du tableau de valeurs. Le problème est que cette recherche de pivot idéal a aussi un «coût». On écrit tout d abord l algorithme effectuant la segmentation du tableau : - le pivot (1 er élément du tableau) est mis à sa place définitive, - pour des indices inférieurs, toutes les valeurs sont plus petites ou égales, - pour des indices supérieurs, toutes les valeurs sont plus grandes. Cours Info - Jacques Delfaud - Page sur 6

Algorithme de segmentation Données : T : un tableau de valeurs numériques [1..n] i, j : les indices de début et de fin de la segmentation à effectuer Résultat : le tableau T «segmenté» avec le pivot à sa place définitive, l indice de la place du pivot Segmente(T, i, j) g i+1 d j p T[i] Tant que g<= d faire Tant que d >= 0 T[d] > p faire d d-1 Fin Tant que Tant que g <= j T[g] <= p faire g g+1 Fin Tant que Si g < d alors Echange(T,g,d) d d-1 g g+1 Fin Tant que k d Echange(T,i,d) Retourner k // Echange de T[g] et T[d] Le nombre de comparaisons du type T [d] > p et T [g] p est égal dans meilleur des cas à n 1. La complexité de cet algorithme est donc au mieux de classe linéaire : C(n) = O(n). Dans le pire des cas, tous les éléments sont identiques. La complexité est alors quadratique : C(n) = O(n ). Remarque : il existe des variantes de cette méthode qui permettent d avoir une complexité de l algorithme en O(n ln(n)), même lorsque tous les éléments sont identiques. L algorithme récursif de tri rapide est le suivant : Données : T : un tableau de valeurs numériques [1..n] i, j : les indices de début et de fin de tri à effectuer Résultat : le tableau T trié entre les indices i et j compris Tri_rapide(T, i, j) Si i < j alors k = Segmente(T, i, j) Tri_rapide(T, i, k-1) Tri_rapide(T, k+1, j) Cours Info - Jacques Delfaud - Page 3 sur 6

Remarque : Cette méthode de tri est très efficace lorsque les données sont distinctes et non ordonnées. La complexité est alors globalement en O(n ln(n)). Lorsque le nombre de données devient petit (< 15) lors des appels récursifs de la fonction de tri, on peut avantageusement le remplacer par un tri par insertion dont la complexité est linéaire lorsque les données sont triées ou presque. Algorithme de Tri rapide optimisé Données : T : un tableau de valeurs numériques [1..n] i, j : les indices de début et de fin de tri à effectuer Résultat : le tableau T trié entre les indices i et j compris Tri_rapide(T, i, j) Si i < j alors k = Segmente (T, i, j) Si k - i > 15 alors Tri_rapide(T, i, k-1) Sinon Tri_insertion(T, i, k-1) Si j - k > 15 alors Tri_rapide(T, k+1, j) Sinon Tri_insertion(T, k+1, j) 3 Le tri fusion La méthode de tri fusion pour un tableau de données est la suivante : On coupe en deux parties à peu près égales les données à trier. On trie les données de chaque partie par la méthode de tri fusion. On fusionne les deux parties en interclassant les données. L algorithme est donc récursif. Il fait parti des algorithmes «diviser pour régner». La récursivité s arrête car on finit par arriver à des listes composées d un seul élément et le tri est alors trivial. Cours Info - Jacques Delfaud - Page 4 sur 6

Algorithme de Fusion de deux listes triées Données : T : un tableau de valeurs numériques [g..d] m : un indice tel que g m < d et que les sous-tableaux T[g..m] et T[m+1..d] soient ordonnés Résultat : le tableau T de valeurs numériques [g..d] ordonnées Fusion(T, g, d, m) n1 m-g+1 // Nombre d éléments du tableau intermédiaire G n d-m // Nombre d éléments du tableau intermédiaire D Pour i de 1 à n1 faire G[i] T[g+i-1] Fin Pour Pour j de 1 à n faire D[j] T[m+j] Fin Pour i 1 j 1 G[n1+1] // On marque la fin du tableau G D[n+1] // On marque la fin du tableau D Pour k de g à d faire Si i <= n1 G[i] D[j] alors T[k] G[i] i i+1 Sinon Si j <= n G[i] > D[j] alors T[k] D[j] j j+1 Fin Pour Cet algorithme a une complexité en temps de classe linéaire : C(n) = O(n). Par contre, il oblige à utiliser un espace supplémentaire égal à la taille du tableau original T. Algorithme de Tri fusion Données : T : un tableau de valeurs numériques non triées [g..d] g, d : les indices de début et de fin de tableau Résultat : le tableau T avec les mêmes valeurs mais triées Tri_fusion(T, g, d) Si g < d alors m (g+d) div Tri_fusion(T, g, m) Tri_fusion(T, m+1, d) Fusion(T, g, d, m) Fin si Cours Info - Jacques Delfaud - Page 5 sur 6

Si l on s intéresse au nombre de données à traiter à chaque appel de fonction, la relation de récurrence est du type : ( n ) C(n) = C + n. La méthode de tri fusion a donc une efficacité temporelle comparable au tri rapide en O(n ln(n)). Par contre, elle n opère pas en place : une zone temporaire de données supplémentaire de taille égale à celle de l entrée est nécessaire. Des versions plus complexes peuvent être effectuées sur place mais sont moins rapides. Cours Info - Jacques Delfaud - Page 6 sur 6