Algorithmique... Complexité. Luc Brun. luc.brun@greyc.ensicaen.fr. A partir de travaux de Habib Abdulrab(Insa de Rouen) Complexité p.



Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Rappels sur les suites - Algorithme

Chapitre 7. Récurrences

Algorithmique et structures de données I

4. Les structures de données statiques

Algorithmique et Programmation Fonctionnelle

Cours d Informatique

Organigramme / Algorigramme Dossier élève 1 SI

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

Optimisation Discrète

MIS 102 Initiation à l Informatique

Cours d Algorithmique et de Langage C v 3.0

Algorithme. Table des matières

Algorithmes récursifs

Tests non-paramétriques de non-effet et d adéquation pour des covariables fonctionnelles

Nombres premiers. Comment reconnaître un nombre premier? Mais...

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

Quelques tests de primalité


Algorithmes de recherche

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

ARBRES BINAIRES DE RECHERCHE

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

Algorithmique avec Algobox

Calcul Formel et Numérique, Partie I

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

Probabilités III Introduction à l évaluation d options

3 Approximation de solutions d équations

STAGE IREM 0- Premiers pas en Python

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

Définitions. Numéro à préciser. (Durée : )

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Initiation à LabView : Les exemples d applications :

Université Paris-Dauphine DUMI2E 1ère année, Applications

Sites web éducatifs et ressources en mathématiques

Quantification Scalaire et Prédictive

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

Modèles et Méthodes de Réservation

Initiation à l algorithmique

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

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

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)

1 Recherche en table par balayage

Algorithmique avec Algobox

aux différences est appelé équation aux différences d ordre n en forme normale.

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Cours d algorithmique pour la classe de 2nde

Représentation des Nombres

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

Chp. 4. Minimisation d une fonction d une variable

Métriques de performance pour les algorithmes et programmes parallèles

Chapitre VI - Méthodes de factorisation

Corrigé des TD 1 à 5

Section «Maturité fédérale» EXAMENS D'ADMISSION Session de février 2014 RÉCAPITULATIFS DES MATIÈRES EXAMINÉES. Formation visée

Ordonnancement temps réel

Résolution d équations non linéaires

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

La fonction exponentielle

Équations non linéaires

Chapitre 7 : Intégration sur un intervalle quelconque

Soutenance de stage Laboratoire des Signaux et Systèmes

d algorithmique D. Beauquier, J. Berstel, Ph. Chrétienne

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

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

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

GPA770 Microélectronique appliquée Exercices série A

Cours d Analyse. Fonctions de plusieurs variables

CHAPITRE 5. Stratégies Mixtes

Initiation à la programmation en Python

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

L exclusion mutuelle distribuée

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Quelques algorithmes simples dont l analyse n est pas si simple

CHAPITRE I. Modélisation de processus et estimation des paramètres d un modèle

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

INF601 : Algorithme et Structure de données

Algorithmique et Programmation, IMA

CCP PSI Mathématiques 1 : un corrigé

Sujet 4: Programmation stochastique propriétés de fonction de recours

Correction du Baccalauréat S Amérique du Nord mai 2007

Algorithmique et Programmation

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

Programmation Objet - Cours II

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

Propriétés des options sur actions

Théorie et codage de l information

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

Chapitre 5 : Flot maximal dans un graphe

Plan. 5 Actualisation. 7 Investissement. 2 Calcul du taux d intérêt 3 Taux équivalent 4 Placement à versements fixes.

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

Les deux points les plus proches

Adama MBODJI MBODJ.SYSTEM

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.

Transcription:

Algorithmique... Complexité Luc Brun luc.brun@greyc.ensicaen.fr A partir de travaux de Habib Abdulrab(Insa de Rouen) Complexité p.1/25

Plan... Notion de complexité Comment évaluer la complexité d un algorithme Exemple de calculs de complexité Complexité p.2/25

Notion de complexité (1) Comment évaluer les performances d un algorithme différents algorithmes ont des coûts différents en termes de temps d exécution (nombre d opérations effectuées par l algorithme), taille mémoire (taille nécessaire pour stocker les différentes structures de données pour l exécution). Ces deux concepts sont appelé la complexité en temps et en espace de l algorithme. Complexité p.3/25

Notion de complexité (2) La complexité algorithmique permet de mesurer les performances d un algorithme et de le comparer avec d autres algorithmes réalisant les même fonctionnalités. La complexité algorithmique est un concept fondamental pour tout informaticien, elle permet de déterminer si un algorithme a et meilleur qu un algorithme b et s il est optimal ou s il ne doit pas être utilisé... Complexité p.4/25

Temps d exécution (1) Le temps d exécution d un programme dépend : 1. du nombre de données, 2. de la taille du code, 3. du type d ordinateur utilisé(processeur,mémoire), 4. de la complexité en temps de l algorithme «abstrait» sous-jacent. Complexité p.5/25

Temps d exécution (2) Soit n la taille des données du problème et T(n) le temps d exécution de l algorithme. On distingue : Le temps du plus mauvais cas T max (n): Correspond au temps maximum pris par l algorithme pour un problème de taille n. Le temps moyen T moy : Temps moyen d exécution sur des données de taille n ( suppositions sur la distribution des données). T moy (n) = r i=1 p i T si (n) p i probabilité que l instruction s i soit exécutée, T si (n) : temps requis pour l exécution de s i. Complexité p.6/25

Temps d exécution Règles générales : 1. le temps d exécution (t.e.) d une affectation ou d un test est considéré comme constant c, 2. Le temps d une séquence d instructions est la somme des t.e. des instructions qui la composent, 3. le temps d un branchement conditionnel est égal au t.e. du test plus le max des deux t.e. correspondant aux deux alternatives (dans le cas d un temps max). 4. Le temps d une boucle est égal à la somme du coût du test + du corps de la boucle + test de sortie de boucle. Complexité p.7/25

Problèmes du temps d exécution (1) Soit l algorithme suivant : Nom: Calcul d une somme de carrés Role: Calculer la valeur moyenne d un tableau Entrée: n : entier Sortie: somme : réel Déclaration: i: Naturel début somme 0.0 pour i 0 à n-1 faire somme somme+i*i finpour fin Complexité p.8/25

Problèmes du temps d exécution (2) T moy (n) = T max (n) = c 1 + c 1 + ( n(c 2 + c 3 + c 4 + c 5 + c 1 ) 5 ) = 2c 1 + n i=1 c i avec c 1 : affectation, c 2 : incrémentation, c 3 test, c 4 addition, c 5 multiplication. 1. Faux, Trop précis 2. Inutilisable. Notion de complexité : comportement asymptotique du t.e.: T max (n) = T moy (n) nc Complexité p.9/25

Estimation asymptotique Définition 1 Une fonction f est de l ordre de g, écrit avec la notation Grand-O comme: f = O(g), s il existe une constante c et un entier n 0 tels que: f(n) cg(n), pour tout n n 0 selon la définition ci-dessus, on aura: f 1 (n) = 2n + 3 = O(n 3 ), 2n + 3 = O(n 2 ), 2n + 3 = O(n)au plus juste f 2 (n) = 7n 2 = O(2 n ), 7n 2 = O(n 2 ) au plus juste mais, 7n 2 N EST PAS O(n) Complexité p.10/25

Égalité de complexité Définition 2 2 fonctions f et g sont d égale complexité, ce qui s écrit comme: O( f )= O( g ) (ou f = θ(g)), ssi f = O(g) et g = O(f) exemples: n, 2n, et 0, 1n sont d égale complexité: O(n) = O(2n) = O(0, 1n) O(n 2 ) et O(0, 1n 2 + n) sont d égale complexité: O(n 2 ) = O(0, 1n 2 + n) par contre: 2n et n 3 se sont PAS d égale complexité: O(2n) O(n 3 ) Définition 3 une fonction f est de de plus petite complexité que g, ce qui s écrit comme: O(f) < O(g), ssi f = O(g) mais g O(f) exemples: 100n est de plus petite complexité que 0, 01n 2 : O(100n)< O(0, 01n 2 ), log 2 n est de plus petite complexité que n: O(log 2 n) < O(n), par contre: 0, 1n 2 n est PAS de plus petite complexité que 10n 2 : O(0, 1n 2 ) = O(10n 2 ) Complexité p.11/25

Propriétés Réflexivité: Transitivité : g = O(g) si f = O(g) et g = O(h) alors f = O(h) Produit par un scalaire :O(λf) = O(f), λ > 0. Somme et produit de fonctions : O(f)+O(g)=O(max{f, g}) O(f).O(g)=O(f.g) Complexité p.12/25

Complexité d une boucle pour i 1 à n faire s finpour avec s=o(1). Temps de calcul de s: T s = C Nombre d appels de s : n Temps de calcul total : T(n) = nt s = O(n) Complexité : O(n) Complexité p.13/25

Boucles imbriquées Théorème 1 La complexité de p boucles imbriquées de 1 à n ne contenant que des instructions élémentaires est en O(n p ). Preuve: vrai pour p = 1, supposons la ppt vrai à l ordre p. Soit : pour i 1 à n faire instruction finpour où instruction contient p boucles imbriquées. Soit T inst (n) le temps d exécution de instruction et T(n) le temps total. T(n) = nt inst (n) avec T inst (n) Cn p pour n n 0 (par hypothèse). T(n) Cn p+1 T(n) = O(n p+1 ) Complexité p.14/25

Boucles tant que h 1 tant que h n faire h 2*h fintantque Test, multiplication, affectation : O(1) : T = C Nombre d itérations : log 2 (n). Temps de calcul : T(n) = C log 2 (n) = O(log 2 (n)) Complexité p.15/25

Complexité d un algorithme récursif (1) Soit l algorithme : fonction factorielle (n: Naturel) : Naturel début fin si n = 0 alors sinon finsi retourner 1 retourner n*factorielle(n-1) Complexité p.16/25

Complexité d un algorithme récursif (2) c 1 test, c 2 multiplication. T(0)=c 1 T(n)=c 1 +c 2 +T(n-1) T(n) = nc 2 + (n + 1)c 1 Soit C = 2max{c 1,c 2 } T(n) Cn + c 1 = O(n) Complexité en O(n). Les calculs de complexité d algorithmes récursifs induisent naturellement des suites. Complexité p.17/25

Algorithmes récursifs en O(log 2 (n)) (1) Théorème 2 Soient, debut, f in et n = f in debut trois entiers. La complexité de l algorithme ci dessous est en O(log 2 (n)). procédure f (debut,fin) Déclaration Entiermilieu début milieu debut+fin 2 si fin-milieu > 1 et milieu-debut > 1 alors s sinon si test alors f (debut,milieu) sinon f (milieu,fin) finsi finsi fin Complexité p.18/25

Algorithmes récursifs en O(log 2 (n)) (2) Tests, s : O(1) T(n) = T( n 2 ) + C T( n 2 ) = T(n 4 ) + C. =. T(1) = T(0) + C T(n) = T(0) + Clog 2 (n) Complexité p.19/25

Algorithmes récursifs en O(n log 2 (n)) (1) procédure f (debut,fin) Déclaration Entier milieu début milieu debut+fin 2 si fin-milieu > 1 et milieu-debut > 1 alors s 1 sinon pour i 1 à n faire s 2 finpour f(début,milieu) f(milieu,fin) finsi fin Complexité p.20/25

Algorithmes récursifs en O(n log 2 (n)) (2) Tests, s : O(1) Boucle : O(n). T(n) = n + 2T( n 2 ) 2T( n 2 ) = n + 4T(n 4 ). =. 2 p 1 T(2) = n + 2 p T(1) T(n) = n p + 2 p T(1) avec p = [log 2 (n)]. On a de plus: O(n log 2 (n) + nt(1)) = O(n log 2 (n)) Complexité p.21/25

Principales complexités O(1) : temps constant, O(log(n)) : complexité logarithmique (Classe L), O(n) : complexité linaire (Classe P), O(n log(n)) O(n 2 ),O(n 3 ),O(n p ) : quadratique, cubique,polynomiale (Classe P), O(p n ) complexité exponentielle (Classe EXPTIME). O(n!) complexité factorielle. Complexité p.22/25

Influence de la complexité n 2n. O(1) O(log 2 (n)) O(n) O(n log 2 (n)) O(n 2 ) O(n 3 ) O(2 n ) t t + 1 2t 2t + 2n 4t 8t t 2 1 log 2 (n) n n log 2 (n) n 2 n 3 2 n n = 10 2 1µs 6µs 0.1ms 0.6ms 10ms 1s 4 10 16 a n = 10 3 1µs 10µs 1ms 10ms 1s 16.6min n = 10 4 1µs 13µs 10ms 0.1s 100s 11, 5j n = 10 5 1µs 17µs 0.1s 1.6s 2.7h 32a n = 10 6 1µs 20µs 1s 19.9s 11, 5j 32 10 3 a Complexité p.23/25

Limites de la complexité La complexité est un résultat asymptotique : un algorithme en O(Cn 2 ) peut être plus efficace qu un algorithme en O(C n) pour de petites valeurs de n si C C, Les traitements ne sont pas toujours linéaires Il ne faut pas supposer d ordres de grandeur entre les différentes constantes. Complexité p.24/25

Conseils Qualités d un algorithme : 1. Maintenable (facile à comprendre, coder, déboguer), 2. Rapide Conseils : 1. Privilégier le point 2 sur le point 1 uniquement si on gagne en complexité. 2. «ce que fait» l algorithme doit se lire lors d une lecture rapide : Une idée par ligne. Indenter le programme. 3. Faire également attention à la précision, la stabilité et la sécurité. La rapidité d un algorithme est un élément d un tout définissant les qualités de celui-ci. Complexité p.25/25