2005/2006 Structures de Données Introduction à la complexité des algorithmes.

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

Chapitre annexe. Récursivité
Initiation à la programmation et algorithmique cours 2
Algorithmes et structures de données Cours 3
Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
LA LOGIQUE ALGORITHMIQUE. Algorithme Définition Ensemble dopérations Effectuées dans un ordre logique Afin dobtenir un résultat, Afin de résoudre un problème.
Algorithmique Résume.
Section VI Structures répétitives (suite)
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Les bases de l’Algorithmique
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Semaine #1 INF155 par Frédérick Henri.
Références Bibliographiques
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Introduction à l’algorithmique
Les éléments de base de l’algorithmique
Algorithmes Branch & Bound
Les structures de contrôle conditionnelles
Les algorithmes: complexité et notation asymptotique
Introduction à la récursivité
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Sémantique axiomatique
Methode de Tri efficace
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
Algorithmique et Programmation
Abder Alikacem Semaine 13 La récursivité
Analyse d’Algorithmes
Analyse d’algorithmes
Mesurer l’efficacité des algorithmes
Semaine #1 INF135 par Frédérick Henri.
STRUCTURES DE DONNÉES Maxime CROCHEMORE

1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Algorithmes probabilistes
Efficacité des algorithmes
Les Algorithmes de Tri Introduction Tri par Sélection
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Analyse des Algorithmes
Structures de données IFT-2000 Abder Alikacem La récursivité 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é.
Programmation procédurale Les différents schémas
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.
Programation Parallèle et Distribuée PhD Marco Antonio Ramos Corchado.
Un survol du language C.
Programmation linéaire en nombres entiers
Cours 4 - Trois algorithmes de recherche dans un tableau
Structures de contrôle
Introduction au langage C Fonctions et Procédures
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Les algorithmes recursifs
Introduction à la récursivité
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.
Module algorithmique et programmation
CSI2510 Structures de données et algorithmes Analyse des algorithmes
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
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.
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Complexité algorithmique
Transcription de la présentation:

2005/2006 Structures de Données Introduction à la complexité des algorithmes

2 Complexité des algorithmes Critères d’évaluation d’un programme Est-ce que le programme satisfait les spécifications de la tâche ? Est-ce qu’il fonctionne correctement ? Est-il bien documenté ? (commentaires, guide d’utilisation) Est-ce que le code est lisible ? … Ces critères sont associés au développement

3 Complexité des algorithmes Evaluation de performances d’un programme Est-ce que le programme utilise efficacement la mémoire ? Est-ce que son temps d’exécution est acceptable?   Complexité des algorithmes Estimations de temps et d’espace Indépendants de la machine

4 Complexité des algorithmes Définition : La complexité en espace mémoire d’un algorithme est la quantité de mémoire nécessaire à son exécution complète Définition : La complexité en temps d’un algorithme est la quantité de temps nécessaire à son exécution complète

5 Complexité des algorithmes enoncé1 : L’algorithme A implémenté par le programme P sur la machine M, et exécuté sur la donnée D utilise k secondes de calcul et j octets de mémoire enoncé2 : Sur toute machine, et quelque soit le langage de programmation, l’algorithme A1 est meilleur que l’algorithme A2 pour les données de grande taille

6 Complexité des algorithmes Mesure de la complexité en temps: la complexité en temps permet d’évaluer la rapidité d’exécution d’un algorithme en fonction des données en entrée Le temps d’exécution est proportionnel au nombre d’opérations fondamentales effectuées par l’algorithme Opérations fondamentales : addition, soustraction, comparaison, multiplication, …

7 Complexité des algorithmes Mesure de la complexité en temps: Soit P(I) le nombre d’opérations fondamentales effectuées par l’instruction I Dans une séquence d’instructions : les nombres d’opérations s’ajoutent Branchement conditionnel : P(if(cond) I 1 else I 2 ) ≤ P(cond)+max(P(I 1 ), P(I 2 ))

8 Complexité des algorithmes Mesure de la complexité en temps: Boucles : soit P(i) le nombre d’opérations fondamentales lors de l’exécution de la i ème itération – –le nombre d’opérations dans la boucle est  P(i) – –i est la variable de contrôle de la boucle, – –le nombre d’itérations peut être majoré

9 Complexité des algorithmes Mesure de la complexité en temps: appel de procédures et fonctions calculer le nombre d’opérations effectuées par les procédures et fonctions appelées procédures et fonctions récursives : résoudre la relation de récurrence Exemple : factorielle d’un entier n version itérative: – –fact(n) = 1*2*3*…*n version récursive: – –fact(n) = 1 si n=0 – –fact(n) = n*fact(n-1) si n>0 Opération fondamentale : multiplication

10 Complexité des algorithmes Mesure de la complexité en temps: exemple int factIter(int n) { int f=1; for(int i=1; i<=n; i++) f=f*i; } P(i) =1, il y n itérations   P(i) = n int factRec(int n) { if(n==0) return 1; else return n*fact(n-1); } P(0)=0, P(n)=P(n-1)+1=n

11 Complexité des algorithmes complexité en moyenne et au pire: Soit D n l’ensemble des données de taille n, Soit coût A (d) la complexité de l’algorithme A sur la donnée d complexité dans le meilleur des cas : Min A (n) = min{coût A (d) | d  D n } complexité dans le pire des cas : Max A (n) = max{coût A (d) | d  D n } complexité en moyenne : Moy A (n) = p(d) est la probabilité d’avoir la donnée d en entrée

12 Complexité des algorithmes Exemple : recherche d’un élément dans un tableau fonction, Appartient (donnée T : tableau d’entiers, donnée N,x : entier) retourne booléen début variable i : entier i  1; 1) 1)tantque ( i ≤ N et T[i] ≠ x) faire 2) 2) i  i+1 3) 3)fin tantque 4) 4)si (i>N) retourner faux sinon retourner vrai finsi fin Opérations significatives : comparaisons

13 Complexité des algorithmes Exemple : recherche d’un élément dans un tableau (Analyse) invariants de boucle : propriétés vraies à chaque itération – –1 ère itération : i=1 – –k ième itération : i=k, et  j  [1,k[, T[i] ≠x (preuve par récurrence sur k) conditions d’arrêt : – –si au k ième itération : k ≤ N et T[k]=x  arrêt avec i=k – –si k>N  arrêt avec i=n+1 (élément non trouvé) (preuve par récurrence sur k) Complexité : – –Il y a au plus N itérations (N est la taille des données) – –La complexité est de N au pire des cas

14 Complexité des algorithmes La complexité peut être déterminée comme une fonction de la taille des données La complexité est bornée par la valeur d’une fonction en la taille des données L’efficacité de 2 algorithmes traitant du même problème doit être comparée pour des données de grande taille Quelques fonctions usuelles : n est la taille des données – –Complexité logarithmique : log (n) – –Complexité linéaire : n – –Complexité quasi-linéaire : n* log (n) – –Complexité polynomiale : n k, k>1 – –Complexité exponentielle : a n, a>1

15 Complexité des algorithmes Temps d’exécution : Exemple Sur un ordinateur effectuant opérations par seconde   s : micro-secondes, ms : milli-secondes, s :secondes, mn:minutes, h : heure, j : jour, a : année, > a31.7x10 3 a11.5 j19.9s1 s 19.9  s n=10 6 > a31.7 a2.7 h1.6 s0.1 s 16.6  s n=10 5 > a11.5 j100 s0.1 s10 ms 13.3  s n=10 4 > a16.6 mn1 s9.9 ms1 ms 9.9  s n=10 3 4x10 6 a1 s10 ms0.6 ms0.1ms 6.6  s n=10 2 2n2n n3n3 n2n2 n*log(n)nlog(n) Complexité Taille

16 Complexité des algorithmes Calcul de la complexité :

17 That is all Bon Courage & BONNE CHANCE