Algorithmique & Complexité. Merci à Maxime CROCHEMORE

Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

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

Les arbres binaires de recherche

Algorithmes de recherche

Chapitre 7. Récurrences

ARBRES BINAIRES DE RECHERCHE

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

Algorithmique et Programmation

Quelques Algorithmes simples

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

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

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Algorithmique, Structures de données et langage C

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

INF601 : Algorithme et Structure de données

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

CCP PSI Mathématiques 1 : un corrigé

1 Recherche en table par balayage

Les structures de données. Rajae El Ouazzani

Table des matières. I Mise à niveau 11. Préface

Programmation linéaire

STAGE IREM 0- Premiers pas en Python

Initiation à LabView : Les exemples d applications :

Rappels sur les suites - Algorithme

L exclusion mutuelle distribuée

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

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

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 : )

MIS 102 Initiation à l Informatique

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Algorithmes récursifs

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

Génie Logiciel avec Ada. 4 février 2013

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

chapitre 4 Nombres de Catalan

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

4. Les structures de données statiques

Initiation à l algorithmique

Raisonnement par récurrence Suites numériques

Programmation parallèle et distribuée

CORRECTION EXERCICES ALGORITHME 1

Cours de Master Recherche

Leçon 01 Exercices d'entraînement

Structure fonctionnelle d un SGBD

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Resolution limit in community detection

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Image d un intervalle par une fonction continue

Commun à tous les candidats

données en connaissance et en actions?

Calculateur quantique: factorisation des entiers

Optimisation Combinatoire (Méthodes approchées) II. Recherche Locale simple (Les bases)

Suites numériques 4. 1 Autres recettes pour calculer les limites

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Maple: premiers calculs et premières applications

Représentation d un entier en base b

Algorithmique et Programmation Fonctionnelle

Analyse des Systèmes Asservis

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Polynômes à plusieurs variables. Résultant

CHAPITRE VIII : Les circuits avec résistances ohmiques

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Représentation des Nombres

Correction TD algorithmique

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

4 Exemples de problèmes MapReduce incrémentaux

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

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

Pourquoi l apprentissage?

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

Continuité et dérivabilité d une fonction

I. Polynômes de Tchebychev

Projet de Traitement du Signal Segmentation d images SAR

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Jean-Philippe Préaux

Introduction à MATLAB R

Géométrie Algorithmique Plan du cours

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

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

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

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

3 Approximation de solutions d équations

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

Limites finies en un point

ÉVALUATION FORMATIVE. On considère le circuit électrique RC représenté ci-dessous où R et C sont des constantes strictement positives.

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Travaux pratiques avec RapidMiner

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

INTRODUCTION. 1 k 2. k=1

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

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

Algorithmique avec Algobox

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

Licence Sciences et Technologies Examen janvier 2010

Transcription:

Algorithmique & Complexité Merci à Maxime CROCHEMORE

Notion d'efficacité Plusieurs chemins pour une même solution Comment choisir? Problèmes de grande taille Plusieurs solutions Implémenter et tester les différentes solutions Prédire le temps/coût nécessaire Important : la notion de taille du problème

Pourquoi se soucier de l efficacité? Mémoire : possibilité de calculer au pas Temps : 1 min, 1 jour, 1 an de calcul? 2x plus de donnée = 4x plus de temps? 16x? Consommation électrique Embarqué...

Exemple 1 : calculer x n Méthode 1 : calculer le nombre d'affectations calculer le nombre de multiplications pow1(in réel x, in entierpos n) : réel entierpos r r 1 pour i=1 à n faire n * r r*x fin pour n+1 retourner r

Exemple 1 : calculer x n Méthode 2 pow2(in réel x, in entierpos n) : réel entierpos r si n = 0 faire r 1 sinon faire r pow2(x,n/2) r r*r ~ 2 log 2 (n+1) * si n est impair faire ~ 3 log r r*x 2 (n+1) + 1 fin si ~ log 2 (n) appels à pow2 fin si retourner r...

Analyse de la complexité Définition complexité d'un algorithme mesure du nombre d opérations fondamentales qu il effectue sur un jeu de données. exprimée comme une fonction de la taille du jeu de données. Ordre de grandeur Pas la complexité exacte Comportement asymptotique

Comportement asymptotique : rappel limites lim n n 2 +n+1 =lim n n 2 lim n ln(n)+n =lim n n lim n n+n =lim n n lim n x n +n =lim n x n

Analyse de la complexité Définition complexité d'un algorithme mesure du nombre d opérations fondamentales qu il effectue sur un jeu de données. exprimée comme une fonction de la taille du jeu de données. Ordre de grandeur Pas la complexité exacte Comportement asymptotique En général, borne supérieure

Exemple 1 : calculer x n Méthode 2 pow2(in réel x, in entierpos n) : réel si n = 0 faire r 1 sinon faire r pow2(x,n/2) r r*r si n est impair faire ~ 2 log 2 (n+1) * r r*x ~ 3 log fin si 2 (n+1) + 1 fin si ~ log 2 (n) appels à pow2 retourner r...

Analyse de la complexité Définition complexité d'un algorithme mesure du nombre d opérations fondamentales qu il effectue sur un jeu de données. exprimée comme une fonction de la taille du jeu de données. Ordre de grandeur Pas la complexité exacte Comportement asymptotique En général, borne supérieure Mais aussi : borne inférieure, moyenne

Classes de complexités Rapides / Efficaces Sub-linéaire : O(log(n)) Linéaires : O(n) Autres : O(n log(n)) Peux efficaces Polynomiaux : O(n k ) pour k > 1 Exponentiels Supérieure à tout polynôme en n Impraticables très rapidement

Classe de complexité O(n) 2 n n 2 n Log n 1 n

Exemple 1 : calculer x n Méthode 1 pow1(in réel x, in entierpos n) : réel r 1 pour i=1 à n faire r r*x fin pour retourner r n * n+1 O(n)

Exemple 1 : calculer x n Méthode 2 pow2(in réel x, in entierpos n) : réel si n = 0 faire r 1 sinon faire r pow2(x,n/2) r r*r si n est impair faire r r*x 3 log fin si 2 (n+1) + 1 fin si retourner r O(ln(n))

Rappels : suite & somme arithmétique { u 0 =a u n+1 =u n +b u n =a+b n n u = n+1 n 2 (u 0+u ) n i=0

Exemple 1 : calculer x n Méthode 1 pow1(in réel x, in entierpos n) : réel r 1 pour i=1 à n faire n * r r*x fin pour n+1 retourner r

Rappels : suite et somme géométrique b 1 { u 0 =a u n+1 =b u n u n =a b n n 1 b n+1 u =u n 0 1 b i=0

Rappel : suite arithmético-géométrique b 1 { u 0 =a u n+1 =b u n +c u n =(a r)b n +r r= c 1 b n u =(u r ) 1 bn+1 n 0 1 b +(n+1)r i=0

Complexité moyenne But Pas de borne, mais le coût moyen Contextes (a) Le nombre d éléments varient (b) Le coût dépendent de la valeur des n éléments Somme des coûts pondérée par leur fréquence (a) (b) n max n=0 p(n)c (n) K k =0 p(k)c (n k )

Avantages / inconvénients Pire cas Permet de borner le coût d'un appel Important pour le «temps-réel» Peut-être éloigné d'un usage courant Cas moyen Consommation en usage courant (nombreux appels) Le coût d'une exécution peut-être très éloigné Très lié aux hypothèses d'utilisation.

Hypothèses Ex. 2 : «le plus petit élément en tête» V={v 1,...,v n } parmi n valeurs distinctes et n 1 Algorithme test( in collection V, in entier n) : booléen i 2 tant que i <= n et v i > v 1 faire i i+1 fin tant que retourner i > n Coût le pire : n-1 itérations

Probabilités en espace fini Caractéristiques Soit X un variable aléatoire pouvant prendre les valeurs {x 1,..,x K } i =1 P [ X =x i ] 0 Espérance / moyenne d'un fonction de f(x) K P [ X =x i ]=1 K E [f ( X ) ]= i =1 P [ X =x i ]f (x i )

Dénombrement / analyse combinatoire Combinaisons ordonnées de n éléments factorielle n! Combinaisons ordonnées de k parmi n éléments arrangement Combinaisons de k parmi n éléments coefficient binomial A n k = n! k! ( k n) =C k n= n! k!(n k )!

Hypothèses Ex. 2 : «le plus petit élément en tête» V={v 1,...,v n } parmi n valeurs distinctes et n 1 Algorithme test( in collection V, in entier n) : booléen i 2 tant que i <= n et v i > v 1 faire i i+1 fin tant que retourner i > n Coût le pire : n-1 itérations Coût moyen n 1 n n 1 + (n k ) (k 1)! k +1 k =1 n! ( 2 (i 1) (n i)! (k i+1)!)

La récursivité Fonction/procédure s appelle elle-même Approche simple et naturelle pour les suites Une condition d arrêt Un appel avec une complexité diminuée Arbre des appels Liste des appels connectés Pile des appels Récursion sauvegarder le contexte courant Parcours en profondeur du graphe

Exemple 3 : pile / appels pour le calcul de x n Méthode 3 pow3(in réel x,in entier n): réel si n = 0 faire r 1 sinon faire r pow3(x,n/2)*pow3(x,n/2) si n est impair faire r r*x fin si fin si pow3(x,2) retourner r appels pow3(x,5) pow3(x,2) pow3(x,1) pow3(x,1) pow3(x,1) pow3(x,1) O(n)...

Exemple 3 : pile / appels pour le calcul de x n Méthode 3 pow3(in réel x,in entier n): réel si n = 0 faire r 1 sinon faire r pow3(x,n/2)*pow3(x,n/2) si n est impair faire r r*x fin si fin si pow3(x,2) retourner r pile pow3(x,5) pow3(x,2) pow3(x,1) pow3(x,1) pow3(x,1) pow3(x,1)... Coût mémoire = O( ln(n) ) pour sauvegarder les appels

Exemple 3 : pile / appels pour le calcul de x n Méthode 3 pow3(in réel x,in entier n): réel si n = 0 faire r 1 sinon faire r pow3(x,n/2)*pow3(x,n/2) si n est impair faire r r*x fin si fin si pow3(x,2) retourner r appels pow3(x,5) pow3(x,2) pow3(x,1) pow3(x,1) pow3(x,1) pow3(x,1)...

Exemple 3 : pile / appels pour le calcul de x n Méthode 2 pow3(in réel x,in entier n): réel si n = 0 faire r 1 sinon faire r pow3(x,n/2) r r*r si n est impair faire r r*x fin si fin si retourner r Coût calcul = Pile = O( ln(n) ) Appels / pile pow2(x,5) pow2(x,2) pow2(x,1) pow2(x,0)

Itération (rappel) : boucles / parcours Buts : Répéter un même action Parcourir une collection d'élément de même type 3 types tant que X faire Y : exécuter les actions Y tant X est vérifiée faire Y jusqu'à X exécuter les actions Y jusqu'à ce que X soit vérifiée Pour i=début à fin faire Y exécuter les actions Y pour i prenant les valeurs de début à fin

Terminaison d'un algorithme Récursif Condition d'arrêt La complexité décroît vers la condition d'arrêt Itératif Condition d'arrêt La valeur testée change à chaque itération et temps vers la condition d'arrêt

Réduire la complexité René Descartes dans le Discours de la Méthode : «diviser chacune des difficultés que j'examinerois, en autant de parcelles qu'il se pourroit, et qu'il seroit requis pour les mieux résoudre» Diviser pour régner On divise le problème en plusieurs sous problèmes et on combine les résultats pour obtenir la solution globale.

Autres types d'algorithmes Algorithmes exhaustifs Tester tous les cas Lorsque l'on ne sait rien faire d'autre Algorithmes gloutons Pas à pas Ne pas revenir en arrière Ex : optimisation

Algorithmique & Structures de donnée Merci à Maxime CROCHEMORE

Extension : notion d'efficacité Avant de coder Définir l'algorithme Prévoir son coût en calcul Prévoir son coût en mémoire Calibration Choix des structures Choix de l'algorithme

Importance des structures de donnée La manière de représenter impacte L'occupation mémoire Le coût d'accès Ex pour un ensemble : accéder au k ème élément Le coût de manipulation Ex pour un ensemble : ajouter/supprimer un élément

Exemple : structure de tableau Mémoire contiguë Coût mémoire : n*taille des éléments Coût accès au k ième élément constant = O(1) Coût d'insertion après le k ième élément O(n-k), si pas de re-allocation O(n) sinon Coût d'insertion avant le k ième élément idem http://www.cplusplus.com/reference/stl/vector/operator%5b%5d/

Collections : liste simplement chaînée Mémoire non-contiguë Coût mémoire : n*(type+références) Coût accès au k ième élément linéaire = O(k) Coût d'insertion après le k ième élément linéaire = O(k) si on part du début constant si on connaît la position du k ième élément Coût d'insertion avant le k ième élément O(k)

Collections : liste doublement chaînée Mémoire non-contiguë Coût mémoire : n*(type+2*références) Coût accès au k ième élément linéaire = O(k) Coût d'insertion après le k ième élément linéaire = O(k) si on part du début constant si on connaît la position du k ième élément Coût d'insertion avant le k ième élément idem

Exercice : Liste Utiliser un tableau pour implémenter une liste Hypothèse, le nombre maximale est bornée par N Un pointeur n'est rien d'autre qu'un indice dans un tableau! Actions à faire sur une liste : complexité Concaténer deux listes Connaître sa taille O(1) O(n) 40

Graphe Définition Des nœuds reliés par des arêtes Nœuds adjacents = il sont reliées 1 2 4 Deux catégories Non-orienté Orienté Actions Parcours (aller d'un nœud à son(ses) successeur(s)) Ajouter / supprimer une arête Ajouter / supprimer un nœud 3 2 1 4 3 5 41

Graphe : représentation 1 Ensemble N de k nœuds Matrice M de k² adjacences : M[i,j]=vrai N[j] est relié à N[i] Non orienté : M est symétrique Coûts Mémoire : O(k²) Accéder aux éléments suivant d'un nœud : O(k) Ajouter une arête : O(1) 42

Pour chaque nœud Graphie : représentation 2 L'ensemble des successeurs Coûts Mémoire : O(k+a) (a = le nombre d arête) a k² Entre O(k) et O(k²) Accéder aux éléments suivant d'un nœud : O(k) Raffiner en O(a max) Ajouter une arête : O(1) 43

Arbre Définition Graphe non-orienté sans cycle Racine : nœud de départ Feuilles : derniers nœuds Actions Ajouter / supprimer d'un nœud 1 2 3 4 5 6 7 8 Parcours en profondeur 1, 2, 5, 6, 3, 7, 9, 10, 4, 8 Parcours en largeur 9 10 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 44

Parcours d'un arbre binaire Préfixé 7 Nœud, fils gauche puis droit 4 9 7 4 2 1 3 6 5 9 8 10 2 6 8 10 Postfixé Fils gauche puis droit, nœud 1 3 5 1 3 2 5 6 4 8 10 9 7 Infixé Fils gauche, nœud, fils droit 1 2 3 4 5 6 7 8 9 10 45

Solution 1 (classique) Chaque nœud : les fils Arbre : représentations Solution 2 Chaque nœud : le premier fils + plus frère suivant Feuille = pas de fils 46

Arbres binaires Maximum 2 fils 0 pour une feuille 1 ou 2 pour les autres Hauteur de l'arbre? De ln(n) à n Arbres dégénérés peigne 47

Arbre binaire de recherche (ABR) Définition Arbre binaire Valeur du nœud supérieure au fils gauche inférieure au fils droit Actions principales Ajout / suppression en préservant la propriété 48

ABR : Ajout d'un élément Nouveau nœud = feuille 1.Chercher le père du nouveau nœud À gauche si plus petit À droite si plus grand 2. En fin de parcours (feuille) Chaîner Arbres de recherche 49

ABR : Ajout d'un élément (10) 8 3 26 18 35 12 23 10 Arbres de recherche 50

ABR : Ajout d'un élément (itératif) nœud racine de abr père vide Tant que nœud n'est pas vide faire père nœud Si val < valeur de nœud faire nœud fils gauche de nœud Sinon nœud fils droit de nœud Fin si Fin tant que.. Arbres de recherche 51

ABR : Ajout d'un élément (itératif)... nœud créer un noeud contenant val si père est vide faire racine de abr nœud sinon faire Si val < valeur de père faire fils gauche de père nœud Sinon faire fils droit de père nœud Fin si Fin si Coût O(n) Arbres de recherche 52

ABR : suppression d'un élément Soit N le nœud à supprimer 1. Chercher le père de N 2. Chercher, dans le sous-arbre droit du nœud, le futur père P du premier nœud sans fils gauche 3. Attacher le sous-arbre gauche de N à P 4. Attacher le fils droit de N à son père 5. Traiter les cas particuliers pas sous-arbre droit suppression de la racine. Arbres de recherche 53

ABR : suppression d'un élément (5) Père N 10 Fils gauche 5 3 1 4 8 6 9 Fils droit Arbres de recherche 54

ABR : suppression d'un élément (5) Père 10 Fils gauche 3 1 4 8 6 9 Fils droit Futur père Coût O(n) Arbres de recherche 55

Arbre binaire de recherche équilibré (AVL) Principale problème Adelson Velskii Landis Arbres dégénérés coût linéaire Solution Éviter la dégénérescence Définition : Arbre binaire de recherche Profondeur ne diffère d'au plus 1 entre sous-arbre gauche et droit Hauteur total log 2 (n) 56

AVL : exemples 57

AVL : adaptation des algorithmes Ajouter et Supprimer Suivi d'un phase d'équilibrage Équilibrage : rotations successives Sous-arbre gauche trop grand q q p p w p w u q u v u v v w 58

Rotation droite b a a b.............. 59

AVL : adaptation des algorithmes Ajouter et Supprimer Suivi d'un phase d'équilibrage Équilibrage : rotations successives Sous-arbre droit trop grand r r p w p w q T q T q p r T u v w u v u v 60

Rotation gauche-droite c b a a c b.................. 61

Rotation gauche-droite c b a a c b.................. 62

Trouver la position AVL : Coût Insertion / Suppression O(ln(n)) Équilibrage successifs En remontant, il peut y en avoir plusieurs O(ln(n)) 63

Arbre parfait partielle ordonnée : le tas Définition : Arbre binaire Parfait : tassé à gauche Partiellement ordonné Valeur père valeurs fils ou Valeur père valeurs fils 6 8 10 18 9 3 5 9 Hauteur = log 2 n 9 10 64

Ajouter Principe Ajouter dans la feuille la plus à gauche Restaurer l'ordre partiel 6 8 10 18 9 3 3 5 9 5 9 9 10 6 8 9 10 10 18 9 4 10 18 6 4 9 3 5 8 9 9 10 65

Le tas Avantage 1 Très compacte 2 8 Stockage dans un tableau T 3 5 9 10 Racine T[1] Fils gauche de T[i] = T[2i] 4 7 6 Fils droit de T[i] = T[2i+1] 1 2 8 3 5 9 10 4 7 6 Désavantage Si tableau, pas dynamique (ou taille bornée) 66

Ajouter : tas dans un tableau Ajouter (inout tas t, in taille n, in élément x) n n+1 i n t[n] x Tant que i > 0 et t[i] < t[(i-1)/2] faire t[i] t[(i-1)/2] i (i-1)/2 Fin tant que O(ln(n)) 67

Supprimer le minimum (maximum) dans un tas SupprMin (t tas, n taille > 0) n n-1 d n t[0] t[d+1] i 0 ; Faire fin vrai ; Si 2i+2 <= d alors faire Si t[2i+1] < t[2i+2] alors faire k 2i+1 Sinon faire k 2i+2 Fin si Si t[i] > t[ k] alors faire t[i] t[ k] i k fin faux Fin si Sinon si 2i+1=d et t[i] > t[ k] faire t[i] t[ k] Fin si Jusqu'à fin O(ln(n)) 68

Table de Hachage (hash code) Définition Utilisation d'une clef pour indexer les valeurs Avantage Division des coûts de recherche, ajout, suppression par H 0 1 2 3 4...... H-1... Exemple pour des listes 69

Autres notions : les files d'attentes Contexte Ajout / Suppression d'éléments en continue Types de files classiques FIFO : First In, First Out Insertion en queue O(1) Suppression en tête O(1) LIFO : Last In, First Out Insertion / Suppression en tête O(1) Avec priorité 70

File d'attente avec priorité Implémentation simple : table de hachage File vide : O(H) Insertion LIFO : O(1) Insertion FIFO : O(1) Mémoire : O(H)+O(n) Nombre fini 0 1 2 3 4... H-1 71

File d'attente avec priorité infinie Utilisation de structure dynamiques Listes / AVL Coûts File vide : O(1) Ajout : O(H) / O(ln(H)) avec H le nombre de priorité Mémoire : O(H)+O(n) 72

Tableau récapitulatif : coût des opérations Appartenance Insérer Supprimer Minimum Tableau n n n n Tableau trié ln(n) n n 1 Liste n 1 1 n Liste triée n 1 1 1 ABR de ln(n) à n 1 1 de ln(n) à n AVL ln(n) ln(n) ln(n) ln(n) Hash code - Liste n n n n Hash code - ABR ln(n) 1 1 1 Le coût d'insertion et suppression se fait sans la recherche de la position. Pour le coût total, il faut donc rajouter le temps d'appartenance. 73