ASD 2. Algorithmique et Structure de Données.

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

ARBRES BINAIRES DE RECHERCHE

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

Quelques Algorithmes simples

Chapitre 7. Récurrences

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

Algorithmique I. Algorithmique I p.1/??

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Les structures de données. Rajae El Ouazzani

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

Logiciel Libre Cours 3 Fondements: Génie Logiciel

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.

1 Recherche en table par balayage

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

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

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

Initiation à l algorithmique

Les deux points les plus proches

Algorithmique et Programmation

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

CHAPITRE V. Recherche et tri

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

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

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

4. Les structures de données statiques

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

Algorithmique, Structures de données et langage C

Programmation linéaire

Arbres binaires de recherche

Projet de programmation (IK3) : TP n 1 Correction

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

Quelques algorithmes simples dont l analyse n est pas si simple

CCP PSI Mathématiques 1 : un corrigé

INF601 : Algorithme et Structure de données

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

Image d un intervalle par une fonction continue

Recherche dans un tableau

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

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

Limites finies en un point


Java Licence Professionnelle CISII,

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

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

Algorithmes récursifs

Rappels sur les suites - Algorithme

Licence Sciences et Technologies Examen janvier 2010

TP Bases de données réparties

Représentation des Nombres

Programmation linéaire

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

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Polynômes à plusieurs variables. Résultant

Introduction à MATLAB R

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

Arbres binaires de décision

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

Chapitre 9. Algorithmique. Quelques définitions. L'informatique au lycée.

Cours de Probabilités et de Statistique

MIS 102 Initiation à l Informatique

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Programmation Linéaire - Cours 1

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

Cours d Algorithmique et de Langage C v 3.0

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Coefficients binomiaux

Plan du cours Cours théoriques. 29 septembre 2014

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

1.6- Génération de nombres aléatoires

Conventions d écriture et outils de mise au point

Statistiques Appliquées à l Expérimentation en Sciences Humaines. Christophe Lalanne, Sébastien Georges, Christophe Pallier

Leçon 01 Exercices d'entraînement

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

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Représentation d un entier en base b

Revue d article : Dynamic Replica Placement for Scalable Content Delivery

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

Differential Synchronization

3 Approximation de solutions d équations

Transmission d informations sur le réseau électrique

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

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Algorithmique - Cours et Travaux Dirigés Ecole Normale Supérieure de Lyon

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

Comparaison de fonctions Développements limités. Chapitre 10

Algorithme. Table des matières

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Plan du cours. Historique du langage Nouveautés de Java 7

TD1 Signaux, énergie et puissance, signaux aléatoires

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

L exclusion mutuelle distribuée

Transcription:

ASD 2 Algorithmique et Structure de Données Marc Gaëtano, Hélène Collavizza, Sylvain Schmitz gaetano@polytech.unice.fr Polytech Nice-Sophia Département Sciences Informatiques 930 route des Colles 06903 Sophia Antipolis - France

ASD 2 p.1/73 Tris rapides et rangs Présentation Files de priorité (tas) Tri par tas (heapsort) Tri rapide (quicksort) Tri fusion Optimalité

ASD 2 p.2/73 Tris : contexte tri interne : le tri s effectue en mémoire centrale. Les tris externes ne sont pas abordés dans ce cours tri de tableau : un tri qui trie un tableau. Extensible à toute structure de données offrant un accès en temps (quasi)constant à ses éléments (par exemple les Vectors en Java) tri générique : tous les tris présentés ici sont écrits pour trier des tableaux d objets à clef mais peuvent aisément s adapter pour des objets totalement ordonnés quelconques

ASD 2 p.3/73 Tris : propriétés tri comparatif : fondé sur la comparaison entre les clefs des éléments tri itératif : basé sur un ou plusieurs parcours itératifs du tableau tri récursif : basé sur une méthode récursive tri en place : ne nécessite qu une quantité constante de mémoire supplémentaire tri stable : conserve l ordre relatif des éléments de même clef

ASD 2 p.4/73 Tris : méthodes quadratiques Propriétés basées sur le parcours itératif du tableau à trier en général deux boucles imbriquées complexité en n 1 i=0 i = n(n 1) 2 = Θ(n 2 ) dans le pire des cas, mais aussi en moyenne implémentation triviale optimal pour les tableaux de petite taille (< 25)

ASD 2 p.5/73 Tris : méthodes quasi-linéaires Les tris comparatifs optimaux tri par tas (ou heapsort) : complexité en Θ(n lg n) (pire des cas et en moyenne) tri rapide (ou quicksort) : complexité en Θ(n lg n) (en moyenne) mais peut dégénérer (Θ(n 2 ) dans le pire des cas) tri fusion : complexité en Θ(n lg n) (pire des cas et en moyenne) mais nécessite un tableau auxiliaire (le tri n est plus en place)

ASD 2 p.6/73 Tri par tas : introduction heapsort en anglais inventé par Williams en 1964 basé sur une structure de donnée très utile, la file de priorité complexité bornée par Θ(n lg n) quelle que soit la configuration initiale du tableau tri en place mise en œuvre très simple

ASD 2 p.7/73 Tri par tas : tri par sélection 1. Prendre le plus grand élément parmi lestaille premiers éléments d un tableau. 2. L échanger avec letaille ième élément du tableau. 3. Retour à l étape 1 en ne considérant que les taille 1 premiers éléments du tableau. 0 max taille T.length T <

ASD 2 p.8/73 Tri par tas : tri par sélection 0 max taille T.length T < Complexité de la recherche du plus grand élément : Θ(taille). Complexité globale du tri : Θ(n 2 ). Optimiser la recherche du plus grand élément

ASD 2 p.9/73 Tas : arbre parfait A est un arbre parfait si A est arbre binaire de hauteur h une feuille de A a la profondeur h ou h 1 A possède 2 h 1 nœuds de profondeur h 1 tous les nœuds de profondeur h sont regroupés le plus à gauche possible

ASD 2 p.10/73 Tas : arbre parfait Des arbres parfaits

ASD 2 p.11/73 Tas : arbre parfait Des arbres non parfaits

ASD 2 p.12/73 Tas : arbre parfait A un arbre parfait de taille n et de hauteur h n = 8 n = 15 Exercice Montrer que la hauteur h d un arbre parfait est lg n.

ASD 2 p.13/73 Tas : arbre parfait Représentation compacte à l aide d un tableau 0 A 1 x 2 y 3 M 4 N 5 O 6 P 7 8 9 10 11 h i j k l 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A x y M N O P h i j k l

ASD 2 p.14/73 Tas : arbre parfait Codage des nœuds pere(i) = (i 1)/2 gauche(i) = 2i + 1 i (i 1)/2 droite(i) = 2i + 2 2 i + 1 2 i + 2 (i 1)/2 i 2i+1 2i+2

ASD 2 p.15/73 Tas : arbre parfait Représentation un tableau T d objets à clef et un entier N égal à la longueur du préfixe du tableau T occupé par le tas N = 0 l arbre parfait est vide et N = T.length l arbre parfait est plein Opérations triviales sur un arbre parfait accès à la racine (T[0]), à la dernière feuille (T[N 1]), aux sous-arbres gauche et droit et au père ajout (resp. suppression) de la dernière feuille avec N N + 1 (resp. N N 1)

ASD 2 p.16/73 Tas : arbre parfait Exercices Représentez l arbre parfait correspondant au tableau contenant les clefs 53, 8, 57, 1, 90, 17, 89, 27, 35. À quel indice du tableau touve-t-on la racine de l arbre parfait? le père de la dernière feuille? Comment savoir si ce dernier est un fils gauche ou un fils droit? Quel est l indice de son frère? Quelle est la taille d un arbre parfait de 100 éléments?

ASD 2 p.17/73 Tas : arbre ordonné A est un arbre partiellement ordonné si A est un arbre binaire A contient des objets à clef A sous-arbre de A, clef(r(a )) clef(r(a )), A sous-arbre de A, où r(a) est la racine de l arbre A et clef(x) la clef de l objet à clef x

ASD 2 p.18/73 Tas : arbre ordonné Exemple 37 29 21 28 18 9 19 11 15 16 12

ASD 2 p.19/73 Tas : file de priorité Structure de données fondamentale un arbre parfait partiellement ordonné de taille n supporte les opérations : extrême : retourne l élément de clef maximum (ou minimum) du tas en Θ(1) extraire : retire et retourne l élément de clef extrême du tas en O(lg n) ajouter : ajoute un nouvel élément au tas en O(lg n)

ASD 2 p.20/73 Tas : file de priorité Exemple 37 29 21 28 18 12 19 16 9 11 15

ASD 2 p.21/73 Tas : file de priorité Différent d un ABR 23 NON TAS 37 NON ABR 10 37 29 21 5 17 29 41 28 18 12 19 3 8 14 20 16 9 11 15 ABR TAS

ASD 2 p.22/73 Tas : accès au maximum Accès au maximum en Θ(1) 0 37 T[0] 29 21 18 28 12 19 16 9 11 15 10

ASD 2 p.23/73 Tas : extraire le maximum Accès et remplacement du maximum en Θ(1) 0 10 37 29 21 18 28 12 19 16 9 11 15 10 N 1

ASD 2 p.24/73 Tas : tasser Reconstitution de l ordre partiel en O(lg n) 10 29 29 21 10 21 18 28 12 19 18 28 12 19 16 9 11 15 16 9 11 15 29 29 28 21 28 21 18 10 12 19 18 15 12 19 16 9 11 15 16 9 11 10

ASD 2 p.25/73 Tas : ajout d un élément Ajout d une nouvelle dernière feuille en Θ(1) 37 29 21 28 18 12 19 16 9 11 15 45 (N 1)+1

ASD 2 p.26/73 Tas : ajout d un élément Reconstitution de l ordre partiel en O(lg n) 37 37 29 21 29 21 28 18 12 19 28 18 45 19 16 9 11 15 45 16 9 11 15 12 37 45 29 45 29 37 28 18 21 19 28 18 21 19 16 9 11 15 12 16 9 11 15 12

ASD 2 p.27/73 Tas : exercices On considère le tableau initial ayant pour éléments 53, 8, 57, 1, 90, 17, 89, 27 et 35 comme représentant un arbre parfait. Tassez chaque sous-arbre de bas en haut jusqu à obtention d un tas. Quel est le plus grand élément du tableau? L extraire du tas, tasser l arbre resultant, et obtenir le second plus grand élément du tableau. En déduire une méthode de tri du tableau initial.

ASD 2 p.28/73 Tri par tas : principe Construction du tas initial : arbre parfait : rien à faire, c est le tableau! ordre partiel : tasser l arbre de bas en haut le tri proprement dit : tant que le tas n est pas vide faire : 0 taille T.length T <

ASD 2 p.29/73 Tri par tas : le tas initial Tasser tous les nœuds des feuilles vers la racine N 1 pere(n 1)

ASD 2 p.30/73 Tri par tas : complexité Complexité de la construction du tas initial Soit A un arbre parfait de taille n (et de hauteur lg n ) un sous-arbre de hauteur h a sa racine à la profondeur lg n h = au plus 2 lg n h sous-arbres de hauteur h α, 0 α < 1 lg n = lg n α = 2 lg n h = n 2 h+α n 2 h = au plus n 2 h sous-arbres de hauteur h

ASD 2 p.31/73 Tri par tas : complexité Complexité de la construction du tas initial tasser un arbre de hauteur h s effectue en Θ(h) = la complexité de la construction du tas initial est bornée par lg n h=0 lg n n 2hΘ(h) = Θ(n h=0 h 2 h) Θ(n h=0 hk h ) = Θ(n k (1 k) 2) avec k = 1, soit Θ(2n) = Θ(n) 2

ASD 2 p.32/73 Tri par tas : complexité Complexité du tri par tas Pour trier un tableau de taille n construction initiale du tas bornée par Θ(n) le tri propremement dit borné par n Θ(lg n) le tri est en Θ(n lg n) en moyenne et dans le pire des cas

ASD 2 p.33/73 Tri par tas : exercices Feuille de TD8 1. Implémentation des classestasdecroissant, TasCroissant ettristas. 2. Extraction des éléments de clefk. 3. Tas d-aires.

ASD 2 p.34/73 Tri rapide : introduction quicksort en anglais inventé par Hoare en 1960 appelé aussi le tri des bijoutiers ou tri de perles l exemple le plus célèbre de la technique diviser pour régner basé sur des méthodes de partionnement de tableau tri en place un dérivé intéressant : la recherche d un rang statistique

ASD 2 p.35/73 Tri rapide : principe Tri récursif 0 i j T.length 1 Partitionner 0 i p j T.length 1 Trier Trier i p 1 p p+1 j

ASD 2 p.36/73 Tri rapide : partition Partition d une tranche de tableau Un algorithme conservatif qui déplace les éléments d une tranche T[i..j] et qui retourne l indice p T 0 i p j T.length 1 de telle façon que g,i g < p, d,p < d j, clef(t[g]) < clef(t[p]) clef(t[d]) sous les conditions i p j

ASD 2 p.37/73 Tri rapide : partition Partitionner invariant de boucle (T[i] est choisi comme pivot) : i p k j T < >? traitement final : i T < p > j k

ASD 2 p.38/73 Tri rapide : partition Exemple i j 4 2 5 1 7 3 6 i k j i k j 4 2 5 1 7 3 6 4 2 5 1 7 3 6 p p i k j i k j i k j 4 2 5 1 7 3 6 4 2 1 5 7 3 6 4 2 1 5 7 3 6 p p p i 4 j 2 1 3 7 5 6 p k i j k i j 4 2 1 3 7 5 6 3 2 1 4 7 5 6 p p Exercice Écrivez la méthode de partition qui prend en paramètres les indices i et j, partitionne T[i..j], et retourne l indice p.

ASD 2 p.39/73 Tri rapide : le tri Algorithme récursif sur une tranche de tableau la tranche de tableau a au plus un élément : ne fait rien la tranche de tableau a au moins deux éléments : partitionner la tranche de tableau trier récursivement les deux tranches issues du partitionnement le tri : appliquer sur la tranche égale au tableau entier

ASD 2 p.40/73 Tri rapide : méthodes Méthode principale public void t r i e r ( ) { t r i e r (0,T. length 1 ) ; } Méthode récursive private void t r i e r ( i n t i, i n t j ) { i f ( i < j ) { i n t p = p a r t i t i o n n e r ( i, j ) ; t r i e r ( i, p 1); t r i e r ( p+1, j ) ; } }

ASD 2 p.41/73 Tri rapide : exemple 4 10 7 2 6 9 5 1 8 3 3 1 2 4 6 9 5 7 8 10 1 2 3 4 5 6 9 7 8 10 1 2 3 4 5 6 8 7 9 10 1 2 3 4 5 6 7 8 9 10

ASD 2 p.42/73 Tri rapide : complexité Meilleur des cas Partitions n 2 X n/2 = n lg(n) 4 X n/4 = n... = n = complexité = Θ(n lg n)

ASD 2 p.43/73 Tri rapide : complexité Pire des cas Partitions n n 1 n 2 n 1 n 3....... 1 = complexité = Θ(n(n + 1)/2) = Θ(n 2 )

ASD 2 p.44/73 Tri rapide : complexité Exercices Soient les éléments de clefs 11, 13, 16, 17, 5, 19 et 25. Dans quel ordre les mettre pour que le tri se fasse en Θ(n 2 )? Pour qu il se fasse en Θ(n lg n)?

ASD 2 p.45/73 Tri rapide : complexité meilleur des cas : la méthode de partitionnement produit toujours deux tranches de taille égale C(n) = 2C( n ) + Θ(n) = C(n) = Θ(n lg n) 2 pire des cas : la méthode de partitionnement produit toujours une tranche de longueur 0 C(n) = C(n 1) + Θ(n) = C(n) = Θ(n 2 ) en moyenne :?

ASD 2 p.46/73 Tri rapide : complexité Hypothèses de calcul de la complexité en moyenne on évalue C n le nombre moyen de comparaisons entre les objets à clef durant le tri d un tableau de taille n on évaluetrier qui utilisepartitionner qui effectue exactement k 1 comparaisons sur une tranche de longueur k les clefs des éléments du tableau sont toutes distinctes les places des éléments dans le tableau sont équiprobables

ASD 2 p.47/73 Tri rapide : complexité Après l appel àpartitionner on a T 0 p n 1 p n p 1 le nombre moyen de comparaisons effectuées par les deux appels récursifs est C p + C n p 1 la moyenne des quantités précédentes quand p varie est 1 n 1 n p=0 (C p + C n p 1 ) partitionner effectue n 1 comparaisons

Tri rapide : complexité La complexité en moyenne du tri rapide est C n = n 1 + 1 n n 1 (C p + C n p 1 ) p=0 soit, par symmétrie n 1 C n = n 1 + 2 n C p Exercice p=0 Montrer que cette expression se réduit à C n 2nH n ( 1, 38 n lg n) ASD 2 p.48/73

ASD 2 p.49/73 Tri rapide : améliorations Choix du pivot Choix de l élément médian parmi trois Petites tranches Utilisation d un tri naïf (insertion) sur les tranches de longueur inférieure à k (k 20) Duplication des clefs Nécessité d une méthode de partition adaptée Amélioration de près de 25% en moyenne sur le temps d exécution par rapport à la version initiale

ASD 2 p.50/73 Tri rapide : exercices Feuille de TD8 4. Implémentation des classespartitionternaire ettrirapideternaire. 5. Implémentation de la classepresquetrier.

ASD 2 p.51/73 Rang : définition Le k-ième rang statistique d un tableau l élément de rang k le k-ième plus petit élément l élément d indice k 1 dans le tableau trié sous l hypothèse toutes les clefs sont distinctes sinon, notion d un rang statistique possible parmi r

ASD 2 p.52/73 Rang : méthodes Méthode naïve On trie le tableau en Θ(n lg n) et on trouve le rang en Θ(1) Méthode rapide Algorithme destructif basé sur le partitionnement les éléments du tableau sont conservés mais déplacés moitié du tri rapide à la fin, l élément de rang k occupe la place qu il occuperait dans le tableau trié, à l indice k 1

ASD 2 p.53/73 Rang : méthode rapide T 0 k T.length 1 partitions : 1 3 5 7 6 4 2 partitionner récursivement la tranche qui contient l indice k on a trouvé k quand : la tranche à partitionner est de longueur 1 l indice du pivot est k (seulement avec la méthode partitionner présentée dans ce cours)

ASD 2 p.54/73 Rang : méthodes Méthode principale public ObjetAClef rang ( i n t k ) { return rang (0,T. length 1, k 1 ) ; } Méthode récursive private ObjetAClef rang ( i n t i, i n t j, i n t k ) { i f ( i == j ) return T [ i ] ; i n t p = p a r t i t i o n n e r ( i, j ) ; i f ( k < p ) return rang ( i, p 1,k ) ; i f ( k > p ) return rang ( p+1, j, k ) ; } return T [ p ] ;

ASD 2 p.55/73 Rang : exemple Recherche de l élément de rang 2 0 1 2 3 4 5 6 7 8 9 4 10 7 2 6 9 5 1 8 3 3 1 2 4 6 9 5 7 8 10 1 2 3 1 2 2

ASD 2 p.56/73 Rang : complexité meilleur des cas : la méthode de partitionnement produit toujours deux tranches de taille égale C n = C n 2 + Θ(n) = C n = Θ(n) pire des cas : la méthode de partitionnement produit toujours une tranche de longueur 0 et le rang est dans la dernière tranche en moyenne :? C n = C n 1 + Θ(n) = C n = Θ(n 2 )

ASD 2 p.57/73 Rang : complexité Hypothèses de calcul de la complexité en moyenne on évalue C n le nombre moyen de comparaisons entre les objets à clef durant la recherche d un rang dans un tableau de taille n on évaluerang qui utilisepartitionner qui effectue exactement k 1 comparaisons sur une tranche de longueur k les clefs des éléments du tableau sont toutes distinctes équiprobabilité de la place des éléments

ASD 2 p.58/73 Rang : complexité Après l appel àpartitionner on a T 0 p k p n 1 p n p 1 le nombre moyen de comparaisons effectuées par l un des deux appels récursifs est soit C p soit C n p 1 la moyenne des quantités précédentes quand p varie est 1( k 1 n p=0 C n p 1 + n 1 p=k+1 C p) partitionner effectue n 1 comparaisons

ASD 2 p.59/73 Rang : complexité La complexité en moyenne de la recherche est C n = n 1 + 1 k 1 n ( soit, par symmétrie p=0 C n p 1 + n 1 p=k+1 C p ) C n n 1 + 2 n n 1 p= n 2 C p On montre par récurrence sur n que C n O(n)

Rang : exercices Exercices Comment pourrait-on modifier le tri par sélection pour obtenir un algorithme de recherche de l élément de rang k? Quelle est sa complexité dans le pire des cas? Qu en est-il si l on utilise un tas pour optimiser la sélection? Feuille de TD8 6. Implémentation de la classerangentrois. 7. Construction d un oléoduc. ASD 2 p.60/73

ASD 2 p.61/73 Tri fusion : introduction merge sort en anglais inventé par John von Neumann en 1945 un autre exemple standard de la technique diviser pour régner basé sur des méthodes de fusion de listes ou de tableaux nécessite un tableau auxiliaire (non en place) complexité de Θ(n lg n) en moyenne, dans le pire et le meilleur des cas

ASD 2 p.62/73 Méthode de fusion Un algorithme itératif F qui fusionne deux tranches triées A[g..m] et A[m + 1..d] en une tranche triée auxiliaire B[g..d] avec la complexité Θ(d g + 1) A 0 g m d T.length 14 25 28 37 51 59 20 31 43 46 62 F B 0 g m d T.length 14 20 25 28 31 37 43 46 51 59 62 sous les conditions g m < d

ASD 2 p.63/73 Tri fusion : principe Tri En Place de A[g..d] à l aide de B[g..d] (TEP) g m m+1 d g m m+1 d A B TV TV g m m+1 d g F d B A où TV est le Tri de A[i..j] Vers B[i..j] et F la fusion

ASD 2 p.64/73 Tri fusion : principe Tri de A[g..d] Vers B[g..d] (TV) g m m+1 d g m m+1 d A A TEP TEP g m m+1 d g F d A B où TEP est le Tri En Place de A[i..j] à l aide de B[i..j] et F la fusion

ASD 2 p.65/73 Tri fusion : exercices Exercices Dans quel cas un TEP n a-t il rien à faire? Que doit faire un TV dans ce même cas? Trier la table contenant initialement les clefs 53, 8, 57, 1, 90, 17, 89, 27 et 35. L ordre initial des éléments a-t il un impact sur le temps d exécution du tri? Que dire des cas n = 2 m et n = 2 m + 1? Feuille de TD8 8. Implémentation de la classetrifusion.

Comparaison des tris 22000 20000 18000 Comparaison des algorithmes de tri. Tas Rapide Rapide2 Fusion Java 16000 Temps moyen (1/1000 ms). 14000 12000 10000 8000 6000 4000 2000 0 5000 6000 7000 8000 9000 10000 11000 12000 Nombre d éléments. ASD 2 p.66/73

Comparaison des tris 20000 18000 16000 Comparaison biaisée des algorithmes de tri. Tas Rapide Rapide2 Fusion Java Temps moyen (1/1000 ms). 14000 12000 10000 8000 6000 4000 2000 0 5000 6000 7000 8000 9000 10000 11000 12000 Nombre d éléments. ASD 2 p.67/73

ASD 2 p.68/73 Optimalité des tris comparatifs Tri comparatif Aucune hypothèse sur les clefs des éléments à trier, nécessité de comparer les clefs entre elles Algorithme de tri une suite de comparaisons de clefs suivant une certaine méthode un processus qui transforme un tableau [e 0,e 1,...,e n 1 ] en un autre tableau [e σ0,e σ1,...,e σn 1 ] où (σ 0,σ 1,...,σ n 1 ) est une permutation de (0, 1,...,n 1)

ASD 2 p.69/73 Arbre de décision : exemple Un algorithme de tri = un arbre binaire de décision e0? e1 e1? e2 e0? e2 e0 e1 e2 e0? e2 e1 e0 e2 e1? e2 e0 e2 e1 e2 e0 e1 e1 e2 e0 e2 e1 e0 Arbre de décision du tri par insertion du tableau [e 0,e 1,e 2 ]

ASD 2 p.70/73 Arbre de décision : exercices Dessinez l arbre de décision du tri par sélection du tableau [e 0,e 1,e 2 ]. Combien un arbre de décision a-t il de feuilles?

ASD 2 p.71/73 Arbre de décision : définition Un algorithme de tri = un arbre binaire de décision feuille de l arbre : une permutation des éléments du tableau initial tri : le chemin de la racine à la feuille correspondant au tableau trié hauteur de l arbre : le pire des cas pour le tri bassesse de l arbre : le meilleur des cas pour le tri hauteur moyenne de l arbre : la complexité en moyenne du tri

ASD 2 p.72/73 Arbre de décision : propriétés un arbre binaire de hauteur h a au plus 2 h feuilles (récurrence) le nombre de feuilles de l arbre de décision est n! où n est la taille du tableau à trier d où n! 2 h = lg(n!) h. On a alors : n! = 2πn( n e )n (1 + Θ( 1 n )) = n! > (n e )n h lg(n!) > lg(( n e )n ) = n lg n n lg e = h = Ω(n lg n) Un tri comparatif est en Ω(n lg n) dans le pire des cas

ASD 2 p.73/73 Tris rapides : synthèse un tri comparatif ne peut pas avoir une complexité en moyenne ou dans le pire des cas meilleure que Θ(n lg n) le tri par tas est un tri comparatif optimal qui ne dégénère pas (sa complexité est Θ(n lg n) dans tous les cas) le tri rapide est un tri comparatif optimal qui peut dégénérer mais qui est meilleur (par un petit facteur constant) en moyenne que le tri par tas le tri fusion est un un tri comparatif optimal qui ne dégénère pas mais qui nécessite un tableau annexe