Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Structures de données avancées : Principales structures de fichiers
Structures de données avancées : B arbres
Tris.
Chap. 4 Recherche en Table

Au programme du jour …. Un peu plus de structures de données
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Les Algorithmes de tri.
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Dpt. Télécommunications, Services & Usages Théorie de l information H. Benoit-Cattin Introduction 2. Sources discrètes & Entropie 3. Canaux discrets.

Algorithme et structure de données
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Algorithmique et programmation Informatique Cours 11 26/11/2001.
Utilisation des tableaux
ALGORITHMES RECURSIFS
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.

Les structures de données arborescentes
ALGORITHMIQUE Plan du cours Généralités -définition -importance
Les algorithmes: complexité et notation asymptotique
Chapitre VII. Tri Tri par tas Tri rapide.
Methode de Tri efficace
Les tris.
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-10541
Structures de données IFT-2000
8 Organisations unidimentionnelles : indexage et hachage
STRUCTURES DE DONNÉES Maxime CROCHEMORE



Algorithmes d ’approximation
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Les Algorithmes de Tri Introduction Tri par Sélection
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.

326 UMLV Méthodes de classement destinées à de grandes masses de données Applicables à des fichiers séquentiels Complexité : évaluée surtout en nombre.

1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.

Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Le langage C Structures de données
Les structures de données séquentielles contiguës
ALGORITHME DE TRI Le tri par insertion.
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Méthodes de tri.
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
ETNA – 1ème année Guillaume Belmas –
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Cours 5 - Trois algorithmes de tri d'un tableau
Algorithmes de tri.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département d’informatique et de génie logiciel Édition septembre 2009.
VI. Tri par tas.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Transcription de la présentation:

UMLV ã CLASSEMENT Liste L = ( 7, 3, 1, 4, 8, 3 ) classement, tri Liste classée (en ordre croissant) Tri interne éléments en table, liste chaînée. En mémoire centrale Tri externe éléments en fichiers Opérations élémentaires comparaison de deux éléments échange sélection de places

UMLV ã TRIS INTERNES Elémentaires Sélection Insertion [ Shell ] O (n²) Bulles Dichotomiques Tri rapide Fusion Par structures Arbre (équilibré) Tas Rangement Tri lexicographique Partitionnement - rangement O (n log n) O (n log n) ~ linéaires, O(n)

UMLV ã CLES Guy 1m75 60 k Anne 1m70 55 k Lou 1m75 57 k Luc 1m72 61 k CLE = TAILLE CLE = POIDS / TAILLE Anne 1m70 55 k Lou 1m75 57 k Guy 1m75 60 k Luc 1m72 61 k Anne 1m70 55 k Luc 1m72 61 k Guy 1m75 60 k Lou 1m75 57 k CLE = (TAILLE, POIDS) Anne 1m70 55 k Luc 1m72 61 k Lou 1m75 57 k Guy 1m75 60 k

UMLV ã TRI en TABLE L = (e1, e2, …, en) en table, accès direct à ei Clé : Élément  Ensemble muni de l ’ordre  Problème Calculer p, permutation de {1, 2, …, n} telle que Clé(ep(1))  Clé(ep(2))  …  Clé(ep(n)) Rang p-1(i) est le rang de l’élément i dans la suite classée Stabilité p est stable, chaque fois que Clé (ep(i)) = Clé (ep(k)) : i < k équivalent p(i) < p(k) [le tri n’échange pas les éléments de même clé]

UMLV ã Guy 1m75 60 k Anne 1m70 55 k Lou 1m75 57 k Luc 1m72 61 k Classement par rapport à la clé (TAILLE, POIDS) 1 2 3 4 p rang p-1 1 2 Guy 1m75 60 k Anne 1m70 55 k Lou 1m75 57 k 1m72 61 k 1 4 2 4 2 1 3 3 3 3 Luc 4 1 4 2 Problème équivalent à : trier (1, 2, …, n) suivant Clé o e

Tri par sélection UMLV ã t t ’ 1 2 3 4 5 6 7 8 9 10 11 12 3 1 5 4 6 8 échange MIN reste à classer Recherche du minimum par balayage séquentiel Ou organisation des éléments en « tas » (voir « file de priorité »)

UMLV ã Tri par sélection fonction TRI_PAR_SELECTION (t table [1…n]) : table ; début pour i ¬ 1 à n-1 faire { min ¬ i ; pour j ¬ i + 1 à n faire si t [ j ] < t [ min ] alors min ¬ j ; temp ¬ t [ i ] ; t [ i ] ¬ t [ min ] ; t [ min ] ¬ temp ; } retour ( t ) ; fin . Complexité : espace O (1) O (n²) comparaisons temps O (n²) n-1 échanges

- recherche séquentielle UMLV ã INSERTION t t ’ 1 2 3 4 5 6 7 8 9 10 11 12 4 7 1 5 8 9 3 2 1 2 3 4 5 6 7 8 9 10 11 12 4 7 1 5 3 8 9 2 classé classé Point d ’insertion - recherche séquentielle - recherche dichotomique

pour i ¬ 2 à n faire UMLV ã TRI PAR INSERTION fonction TRI_ PAR_INSERTION ( t table [1...n]) : table ; début t [ 0 ] ¬ - ¥ ; pour i ¬ 2 à n faire { k ¬ i - 1 ; temp ¬ t [ i ] ; tant que temp < t [ k ] faire { t [ k + 1] ¬ t [ k ] ; k ¬ k - 1 ; } t [ k + 1] ¬ temp ; } retour ( t ) ; fin . Complexité : espace O (1 ) O (n²) comparaisons temps O (n²) O (n²) affectations d’éléments Insertion dichotomique : O (n log n) comparaisons

UMLV ã Tri des Bulles Un balayage 4 2 3 5 1 4 2 3 5 1 4 2 3 1 5 4 2 1 3 5 4 1 2 3 5 Suite des balayages 1 4 2 3 5 5 4 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 peuvent être éliminés

pour k ¬ n à i + 1 pas - 1 faire UMLV ã TRI DES BULLES fonction TRI_des_BULLES ( t table [1…n] ) : table ; début i ¬ 1 ; tant que i £ n - 1 faire { dernier_échange ¬ n ; pour k ¬ n à i + 1 pas - 1 faire si t [ k - 1] > t [ k ] alors { temp ¬ t [ k - 1 ] ; t [ k - 1 ] ¬ t [ k ] ; t [ k ] ¬ temp ; dernier_échange ¬ k ; } i ¬ dernier_échange ; retour ( t ) ; fin. Complexité : espace O (1) temps O (n²) comparaisons et échanges

UMLV ã PARTAGE / FUSION Si liste assez longue 7 3 9 2 1 5 3 7 9 2 7 1 TRI TRI 2 3 7 9 1 3 5 7 FUSION 5 1 2 3 7 9 Schéma pour : TRI RAPIDE TRI par FUSION

UMLV ã PREUVE Schéma correct si - correct sur listes courtes - partage correct - fusion correcte et surtout si - (L1, L2 ) = PARTAGE ( L ) Þ | L1 | < | L | et | L2| < | L |

TMAX = O ( n log n ) si | L1 | ~ | L2 | ~ | L | / 2 et UMLV ã COMPLEXITE TMAX = O ( n log n ) si | L1 | ~ | L2 | ~ | L | / 2 et PARTAGE et FUSION linéaires Soit n = | L | = 2k (après ajout éventuel d’éléments fictifs) T (n) = g n + 2 T (n/2) si n > 1 T (1) = b = g k + b T (n) = g n log n + b n = O ( n log n )

UMLV ã TRI RAPIDE Partage avec pivot = 3 3 2 4 1 7 6 3 2 1 7 4 6 3 2 1 ³ 3 < 3 3 2 1 4 7 6 Suite du tri TRI TRI 3 1 2 4 6 7

UMLV ã fonction TRI_RAPIDE ( t table [1…n] ) : table ; début appliquer TR (1, n ) à t ; retour ( t ) ; fin . procédure TR (i, j) ; /* classe la partie t [ i...j ] de t */ si i < j alors { p ¬ choix (i, j) ; k ¬ PARTAGE (i, j, p) ; TR (i, k - 1) ; TR (k + 1, j) ; } fin . choix(i, j) : choix aléatoire d’un entier entre i et j.

UMLV ã fonction PARTAGE ( i, j, p ) ; /* partage t suivant le pivot t [ p ] */ début g ¬ i ; d ¬ j ; échanger (t [ p ], t [ j ] ) ; pivot = t [ j ] ; répéter tant que t [ g ] < pivot faire g ¬ g + 1 ; tant que d ³ g et t [ d ] ³ pivot faire d ¬ d - 1 ; si g < d alors { échanger (t [ g ] , t [ d ] ) ; g ¬ g + 1 ; d ¬ d - 1 ; } jusqu ’à ce que g > d ; échanger ( t [ g ], t [ j ] ) ; retour ( g ) ; fin. pivot < pivot ³ pivot i d g j

Complexité du Tri rapide UMLV ã Complexité du Tri rapide Temps (PARTAGE (i, j, p)) = Q (j - i + 1) (i < j) TMAX(TR (1, n)) = O (n²) Exemple : table déjà classée et choix successifs de p : 1, 2, …, n - 1 TMOY(TR (1, n)) = O (n log n) (t [1], …, t [n] ) = ( 1, 2, …, n ) toutes les permutations de t [1], …, t [n] équiprobables. Preuve [ T (n) = TMOY(TR (1, n)) ] probabilité 1/n de d ’avoir k parmi {1, 2, …, n} T (0) = T (1) = b Partage Appels récursifs Þ T (n) £ (2 b + 2 g) n loge n n ³ 2 par récurrence sur n .

UMLV ã

UMLV ã Autre choix du pivot Plus de garantie sur le temps d ’exécution moyen ordre croissant x > y t x y i k j pivot = x fonction choix (i, j) : indice ; début pour k ¬ i à j - 1 faire si t [k] > t [k + 1] alors retour k ; retour -1 ; /* cas t [i]  t [i+1]  ...  t [j] */ fin.

UMLV ã Version itérative fonction TRI_RAPIDE_ITERATIF ( t table [1…n] ) : table ; début P ¬ empiler(Pile_vide, (1,n)) ; tantque non vide(P) faire (i, j) ¬ sommet(P) ; dépiler(P) ; si i < j alors p ¬ choix (i, j) ; k ¬ PARTAGE (i, j, p) ; P ¬ empiler(P, (k +1, j)) ; P ¬ empiler(P, (i, k -1)) ; retour t ; fin. NOTE : ordre des empilements sans importance. Hauteur de la pile : O(n)

UMLV ã Optimisation mémoire Suppression de la récursivité terminale avec optimisation procédure TR_optimisé (i, j) ; début tant que i < j faire { p ¬ choix (i, j) ; k ¬ PARTAGE (i, j, p) ; si k - i < j - k alors { TR_optimisé (i, k - 1) ; i ¬ k + 1 ; } sinon { TR_optimisé (k + 1, j) ; j ¬ k - 1 ; } } fin. Hauteur de la pile de récursion : O ( log n )