Les algorithmes: complexité et notation asymptotique

Slides:



Advertisements
Présentations similaires
Aires et périmètres.
Advertisements

La recherche de chemin optimal
Tris.
Chap. 4 Recherche en Table
Chapitre annexe. Récursivité
Approche graphique du nombre dérivé
Portée des variables VBA & Excel
Fonctions & procédures
Au programme du jour …. Un peu plus de structures de données
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Cours n° 8 Conception et Programmation à Objets
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.
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
L’ interruption de boucle
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Systèmes Experts implémentation en Prolog
Défi écriture BEF Couverture. Défi écriture BEF Page 1.
Initiation à la programmation et algorithmique cours 3
Utilisation des tableaux
ALGORITHMES RECURSIFS
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Les éléments de base de l’algorithmique
Les structures de données arborescentes
II. Chaînage, SDD séquentielles
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Methode de Tri efficace
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Les tris.
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Abder Alikacem Semaine 13 La récursivité
Analyse d’algorithmes
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Structures de données IFT-2000
Structures de données IFT-10541
Mesurer l’efficacité des algorithmes
STRUCTURES DE DONNÉES Maxime CROCHEMORE
Efficacité des algorithmes
COURS DE PROGRAMMATION ORIENTEE OBJET :
Les Algorithmes de Tri Introduction Tri par Sélection
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
III. Récursivité Principe et exemples
Analyse d’algorithmes
Structures de données IFT-2000 Abder Alikacem Introduction Semaine 1 Département d’informatique et de génie logiciel Édition Septembre 2009.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Algorithmique Les structures Rappel L'enchaînement séquentiel
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
LES PILES ET FILES.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Chapitre 6 Les traitements avancés
Algorithmes de tri et de recherche
Méthodes de tri.
Arbres binaires et tables de hachage
Cours 4 - Trois algorithmes de recherche dans un tableau
ETNA – 1ème année Guillaume Belmas –
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Tutorat en bio-informatique Le 28 novembre Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Algorithmes de tri.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
CSI2510 Structures de données et algorithmes Analyse des algorithmes
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:

Les algorithmes: complexité et notation asymptotique

Comparer deux algorithmes Analyse d'algorithmes Notation O( ) Comparer deux algorithmes Soient deux algorithmes A1 et A2 Base de comparaison Mesure indépendante de l'implémentation : TAILLE D'UN PROBLÈME (n) Temps d'exécution d'un algorithme = fonction(taille du problème) i.e. f(n) Exemples : Taille d'une liste (recherche d'un élément dans une liste) Nombre de nœuds d'un arbre (impression d'un arbre) Taille d'un tableau (tri)

Analyse d'algorithmes Notation O( )

Analyse d'algorithmes Notation O( )

Analyse d'algorithmes Notation O( ) Exemple: évaluer le temps d’ exécution d’algorithme suivant: Boucle externe void TriSelection(int tab[MAXTAB], int n) { int PositionMin, temp,i,j; for (i = n-1; i > 0; i--) { PositionMin = i; for (j = 0; j < i; j++) if (tab[j] < tab[PositionMin]) PositionMin = j; } temp = tab[i]; tab[i] = tab[PositionMin]; tab[PositionMin] = temp; Boucle interne

Analyse d'algorithmes Notation O( ) Exemple (suite) Boucle externe for (i = n-1; i>0; i--) { Coût b1 /* PositionMin = i */ Coût i*a; /* pour exécuter la boucle interne*/ Coût b2; /* pour l'échange de tab[i] et tab[PositionMin] */ }

Analyse d'algorithmes Notation O( ) Exemple (suite) b=b1 +b2 n-1 S = ∑ (ai + b) i=1 (n-1)n S = a + (n-1)b 2 a a S = n2 + (b )n - b 2 2 Le programme est O(n2)

Analyse d'algorithmes Notation O( ) Définition du O( ) Nous dirons que f(n) est O(g(n)) s'il existe deux constantes positives K et n0 tel que |f(n)| <= K |g(n)| pour tout n>n0 Conclusion : Évaluer le coût d'un algorithme = Rechercher la fonction g(n) qui est la plus proche au dessus ou égale a f(n)

La recherche séquentielle Analyse d'algorithmes La recherche séquentielle Données pas triées recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences = O(n)

La recherche séquentielle Analyse d'algorithmes La recherche séquentielle Données triées recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences = O(n/2)

Analyse d'algorithmes La recherche binaire implantation en tableau = accès direct à n’importe quel élément en regardant tout de suite au milieu, on peut éliminer la moitié des données

Analyse d'algorithmes La recherche binaire: 10? 11 n 5 n/2 2 n/4 1 n/8 1 2 3 4 6 8 9 10 11 12 14 11 n 9 10 11 12 14 5 n/2 9 10 2 n/4 1 n/8 10

Analyse d'algorithmes Algorithme récursif récursion ? conditions d’arrêt ? convergence ? 1 2 3 4 6 8 9 10 11 12 14

Algorithme récursif - récursion Analyse d'algorithmes Algorithme récursif - récursion X Є tab[debut..fin] si x = tab[milieu] (condition d’arrêt) si x < tab[milieu] et x Є tab[debut..milieu-1] si x > tab[milieu] et x Є tab[milieu+1..fin] 1 2 3 4 6 8 9 10 11 12 14

Algorithme récursif - conditions d’arrêt Analyse d'algorithmes Algorithme récursif - conditions d’arrêt X € tab[debut..fin] si debut > fin X Є tab[debut..fin] si x = tab[milieu] 1 2 3 4 6 8 9 10 11 12 14

Algorithme récursif - convergence Analyse d'algorithmes Algorithme récursif - convergence 1 2 3 4 6 8 9 10 11 12 14 9 10 11 12 14 9 10 10

Analyse d'algorithmes Algorithme récursif 1 2 3 4 6 8 9 10 11 12 14 1 2 3 4 6 8 9 10 11 12 14 int rechercheBinRec(int tab[ ], int val, int debut, int fin) { int milieu; if (debut > fin) return -1; else { milieu= (debut + fin)/2; if( val == tab[milieu]) return milieu; { if( val < tab[milieu]) return(rechercheBinRec(tab,val,debut, milieu-1)); return(rechercheBinRec(tab,val,milieu+1,fin)); }

Analyse d'algorithmes Algorithme récursif Recherche séquentielle (données triées) Données présentes: O(n/2) Données absentes: O(n/2) Recherche binaire (données triées) Données présentes: O(log n) Données absentes: O(log n)

Analyse d'algorithmes Algorithme récursif Il vaut bien mieux implanter cet algorithme de manière itérative, car la fonction se rappelle jusqu'à trouver la position désirée, puis seulement on effectue les dépilages, alors que l'on n'a plus besoin des états intermédiaires qui ont été mémorisés par la récursivité puisque le problème est résolu.