Cours Info Complexité algorithmique. D.Malka MPSI D.Malka Cours Info - 10 MPSI / 31

Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Algorithmique I. Algorithmique I p.1/??

Chapitre 7. Récurrences

Corrigé des TD 1 à 5

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

4. Les structures de données statiques

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Rappels sur les suites - Algorithme

1 Recherche en table par balayage

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

STAGE IREM 0- Premiers pas en Python

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Les arbres binaires de recherche

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

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

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

Quantification Scalaire et Prédictive

Calculateur quantique: factorisation des entiers

Parallélisme et Répartition

Représentation d un entier en base b

Algorithmes récursifs

Initiation à la programmation en Python

ARBRES BINAIRES DE RECHERCHE

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

MIS 102 Initiation à l Informatique


Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Informatique Générale

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

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)

Évaluation et implémentation des langages

Programmation C. Apprendre à développer des programmes simples dans le langage C

L exclusion mutuelle distribuée

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Initiation à l algorithmique

Cours d Algorithmique et de Langage C v 3.0

Raisonnement par récurrence Suites numériques

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

IFT3245. Simulation et modèles

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

Algorithmes de recherche

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

TP 1. Prise en main du langage Python

Programmation linéaire

Bases de programmation. Cours 5. Structurer les données

Exigences système Commercial & Digital Printing

Génération automatique de procédures numériques pour les fonctions D-finies

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

Conventions d écriture et outils de mise au point

Algorithmique et Programmation

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

Cours 1 : La compilation

4D v11 SQL Release 5 (11.5) ADDENDUM

Maple: premiers calculs et premières applications

Programmes des classes préparatoires aux Grandes Ecoles

Bases de données documentaires et distribuées Cours NFE04

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

CCP PSI Mathématiques 1 : un corrigé

Feuille TD n 1 Exercices d algorithmique éléments de correction

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

Guide d installation JMap 5.0

Cours de Master Recherche

Quelques algorithmes simples dont l analyse n est pas si simple

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Quelques tests de primalité

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

Algorithmes de recherche d itinéraires en transport multimodal

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

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

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

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Exigences système Commercial & Digital Printing

ALGORITHMIQUE ET PROGRAMMATION En C

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

données en connaissance et en actions?

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

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

PFE. Gestion de portefeuille électronique par carte à puce. Equipe N 16 Projet N 98. «Sujet non industriel proposé par les élèves»

Statistiques Descriptives à une dimension

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Polynômes à plusieurs variables. Résultant

Introduction à l informatique en BCPST

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

Leçon 01 Exercices d'entraînement

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

Découverte de Python

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

Introduction à l algorithmique et à la programmation (Info 2)

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

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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

Python - introduction à la programmation et calcul scientifique

Entraînement au concours ACM-ICPC

Transcription:

Cours Info - 10 Complexité algorithmique D.Malka MPSI 2015-2016 D.Malka Cours Info - 10 MPSI 2015-2016 1 / 31

Sommaire Sommaire 1 Temps d exécution d un programme 2 Complexité (en temps) d un algorithme 3 Complexité en espace d un algorithme D.Malka Cours Info - 10 MPSI 2015-2016 2 / 31

Temps d exécution d un programme Sommaire 1 Temps d exécution d un programme 2 Complexité (en temps) d un algorithme 3 Complexité en espace d un algorithme D.Malka Cours Info - 10 MPSI 2015-2016 3 / 31

Temps d exécution d un programme Exemple 1 Tri d une liste Temps d exécution d un programme Exemple Tri d une liste Tri d une liste On cherche à trier une liste. On dispose de deux programmes fondés chacun sur deux algorithmes exacts : Le tri par insertion, Le tri fusion. Voir programme de 2 ème année pour le détails de ces algorithmes. D.Malka Cours Info - 10 MPSI 2015-2016 4 / 31

Temps d exécution d un programme Exemple 1 Tri d une liste Temps d exécution d un programme Exemple Tri d une liste Tri d une liste Les deux programmes sont : écrits en langage Python exécutés sur la machine suivante : Processeur Intel Core i5-4210u CPU 1,70GHz x 4 Mémoire vive 8Go (7,7 Go utilisable) OS : Linux Ubuntu 14.04 LTS 64bits D.Malka Cours Info - 10 MPSI 2015-2016 5 / 31

Temps d exécution d un programme Exemple 1 Tri d une liste Temps d exécution d un programme Exemple Tri d une liste Expérience Avec chacun des deux programmes, trions par ordre croissant une liste aléatoire de N éléments pour N allant de : 100 à...,... 10 8. D.Malka Cours Info - 10 MPSI 2015-2016 6 / 31

Temps d exécution d un programme Exemple 1 Tri d une liste Temps d exécution d un programme Exemple Tri d une liste Expérience Résultats : N 10 2 10 3 10 4 10 5 10 6 10 7 10 8 Tri-fusion 0, 3ms 0, 9ms 5, 5ms 20ms 215ms 2, 3s 25, 8s Tri-sélection 1, 8ms 67ms 5, 7s 11min 19h 66 j 21ans D.Malka Cours Info - 10 MPSI 2015-2016 7 / 31

Temps d exécution d un programme De quoi dépend le temps d exécution d un programme? Temps d exécution d un programme Facteurs d influence Le temps d exécution d un programme dépend : de la machine qui l exécute, du langage dans lequel il est écrit, de l algorithme sous-jacent. Prépondérance de l algorithme Pour des entrées de grandes tailles, l algorithme est la cause déterminante du temps d exécution d un programme notion de complexité algorithmique en temps. D.Malka Cours Info - 10 MPSI 2015-2016 8 / 31

Sommaire 1 Temps d exécution d un programme 2 Complexité (en temps) d un algorithme 3 Complexité en espace d un algorithme D.Malka Cours Info - 10 MPSI 2015-2016 9 / 31

Que mesure la complexité? Complexité (en temps) d un algorithme Que mesure la complexité? Complexité en temps d un algorithme La complexité en temps d un algorithme : est une mesure intrinsèque de sa rapidité d exécution, permet de comparer deux algorithmes résolvant le même problème. D.Malka Cours Info - 10 MPSI 2015-2016 10 / 31

Coût d un algorithme Exemple - Somme des n premiers entiers Calcul de la somme des n premier entiers à l aide d une boucle : Entrées: entier naturel n Sorties: entier naturel somme somme=0 i=1 tant que i<=n faire somme=somme+i i=i+1 retourner somme Algorithm 1: Algorithme A 1 Coût(A 1 ) : 2 n additions D.Malka Cours Info - 10 MPSI 2015-2016 11 / 31

Coût d un algorithme Exemple - Somme des n premiers entiers Calcul de la somme des n premiers entiers à l aide de la formule mathématique : n n(n + 1) 1 =. 2 Entrées: entier naturel n Sorties: entier naturel somme somme=n*(n+1)/2 retourner somme Algorithm 2: Algorithme A 2 Coût(A 2 ) : 1 addition + 1 multiplication + 1 division D.Malka Cours Info - 10 MPSI 2015-2016 12 / 31

Coût d un algorithme Exemple - Somme des n premiers entiers Comparaison du coût des deux algorithmes en terme d opérations arithmétiques : Coût(A 1 ) : 2 n opérations arithmétiques. Coût(A 2 ) : 3 opérations arithmétiques. Pour n > 1, Coût(A 2 ) < Coût(A 1 ). L algorithme A 2 est plus efficace que l algorithme A 1. D.Malka Cours Info - 10 MPSI 2015-2016 13 / 31

Evaluation de la complexité d un algorithme Choix de la mesure élémentaire Pour évaluer la complexité en temps d un algorithme, il faut choisir une mesure : nombre de comparaisons, nombre d affectations, nombre d opérations arithmétiques,... La complexité algorithmique est une évaluation asymptotique du nombre d opérations élémentaires. Elle est exprimée en fonction de la taille n des entrées. Il n existe pas un ensemble de règles standardisées pour évaluer la complexité d un algorithme. D.Malka Cours Info - 10 MPSI 2015-2016 14 / 31

Evaluation de la complexité d un algorithme Quelques règles La séquence d instructions : x_1,x_2... x_n Coût(x 1,x 2,...,x n ) = k Coût(x k ) Exemple : somme=n+1 somme=somme*n somme=somme/2 Algorithm 3: Algorithme A Coût(A) = Coût(1) + Coût(2) + Coût(3) D.Malka Cours Info - 10 MPSI 2015-2016 15 / 31

Evaluation de la complexité d un algorithme Quelques règles La boucle simple : Tant que i < n faire x i Coût(boucle) = i (Coût(comparaison) + Coût(x i )) Exemple : tant que i<=n faire somme=somme+i i=i+1 Algorithm 4: Algorithme A Coût(A) = Coût(i <= n) + Coût(somme + i) + Coût(i = i + 1) = 3n D.Malka Cours Info - 10 MPSI 2015-2016 16 / 31

Evaluation de la complexité d un algorithme Quelques règles Les instructions conditionnelles : Si condition faire x vrai sinon faire x faux Exemple : si i%2==0 alors n=i/2 Coût(conditionnelle) <= Coût(test) + Max(Coût(x vrai ),Coût(x faux )) sinon i=i+1 n=i/2 Algorithm 5: Algorithme A Coût(A) <= Coût(i%2 == 0) + Max(Coût(i = i + 1),Coût(i = i + 1,n = i/2)) Coût(A) <= 3 D.Malka Cours Info - 10 MPSI 2015-2016 17 / 31

Complexité d un algorithme Les types de complexité On note : d : une entrée de taille n (par exemple, un tableau d entiers de longueur n), D n : l ensemble des entrées d possibles, de même taille n (par exemple l ensemble des listes de taille n=3 d entiers égaux à 0 ou 1, les possibilités sont : [0,0,0], [0,0,1],[0,1,0],... [1,1,0]... [1,1,1] ) Coût A (d) : le coût de l algorithme A pour l entrée d. On peut alors calculer trois complexités différentes : la complexité dans le pire des cas, la complexité dans le meilleur des cas, la complexité moyenne. Les pire cas, meilleur cas et cas moyen s entendent à n fixé et n grand! D.Malka Cours Info - 10 MPSI 2015-2016 18 / 31

Complexité d un algorithme Complexité au pire Complexité dans le pire des cas Max A = Max(Coût A (d) d D n ) C est cette complexité qu on utilise le plus souvent pour comparer deux algorithmes. D.Malka Cours Info - 10 MPSI 2015-2016 19 / 31

Complexité d un algorithme Complexité au mieux Complexité dans le meilleur des cas Min A = Min(Coût A (d) d D n ) Cette complexité est rarement intéressante. D.Malka Cours Info - 10 MPSI 2015-2016 20 / 31

Complexité d un algorithme Complexité moyenne Complexité moyenne Moy A = d D n P(d)Coût A (d) avec P(d) la probabilité d occurrence de l entrée d. La plus satisfaisante mais très difficile à calculer par méconnaissance de la distribution de probabilités suivie par le entrées. D.Malka Cours Info - 10 MPSI 2015-2016 21 / 31

Complexité d un algorithme Complexité asymptotique Les algorithmes s exécutent souvent sur des entrées de grande taille n. Conséquences : le coût exact d un algorithme n est pas intéressant, une approximation asymptotique de la complexité est suffisante. échelle de fonction de complexité : log(n) < n < n log(n) < n 2 < n 3 <... < k n < n! < n n D.Malka Cours Info - 10 MPSI 2015-2016 22 / 31

Complexité d un algorithme Complexité asymptotique 10 5 10 4 10 3 Fonctions complexites ; croissances comparees log(n) n n 2 n 3 2 n n! n n Cout 10 2 10 1 10 0 10 20 30 40 50 60 n D.Malka Cours Info - 10 MPSI 2015-2016 23 / 31

Complexité d un algorithme Complexité asymptotique : notation O Notation O Soient f et g : N R + : f = O(g) ssi c R + ; n 0 N tels que : n > n 0, f(n) c g(n) 120 Borne asymptotique superieure : f(n) =O(n) f(n) = 100 n +n +3 g(n) =1,1.n 100 80 fonction 60 40 20 0 0 20 40 60 80 100 n On majore la complexité algorithmique. D.Malka Cours Info - 10 MPSI 2015-2016 24 / 31

Complexité d un algorithme Complexité asymptotique : notation Ω Notation Ω Soient f et g : N R + : f = Ω(g) ssi c R + ; n 0 N tels que : n > n 0, 0 c g(n) f(n) 25000 Borne asymptotique inferieure : f(n) =Ω(n 2 ) f(n) =2n 2 +3n +2 g(n) =1,9.n 2 20000 15000 fonction 10000 5000 0 0 20 40 60 80 100 n On minore la complexité algorithmique. D.Malka Cours Info - 10 MPSI 2015-2016 25 / 31

Complexité d un algorithme Complexité asymptotique : notation Θ Notation Θ Soient f et g : N R + : f = Θ(g) ssi c 1,c 2 R + ; n 0 N tels que : n > n 0, c 1 g(n) f(n) c 2 g(n) Bornes asymptotiques inferieure et supérieure : f(n) =Θ(n 1200000 3 ) f(n) =n 3 n 2 +10n 1000log(10n) +100 g(n) =0.9n 3 1000000 h(n) =1.1n 3 800000 fonction 600000 400000 200000 0 200000 0 20 40 60 80 100 n On borne la complexité algorithmique. D.Malka Cours Info - 10 MPSI 2015-2016 26 / 31

Exemple Complexité d un algorithme Exemple Notations asymptotiques 2n = O(n 2 ) 2n = O(n) 2n = Θ(n) 2n Θ(n 2 ) D.Malka Cours Info - 10 MPSI 2015-2016 27 / 31

Exemple Factorielle n Complexité d un algorithme Exemple - Factorielle de n Entrées: entier naturel n Sorties: entier naturel fact c=n fact=1 tant que c>0 faire fact=fact*c c=c-1 retourner fact Algorithm 6: Calcul de n! Complexité en temps Mesure : nombre d affectations. 2n affectations La complexité (au pire) de l algorithme est O(n). D.Malka Cours Info - 10 MPSI 2015-2016 28 / 31

Vocabulaire Complexité d un algorithme Vocabulaire Un algorithme... de complexité O(1) effectue un nombre constant d opérations de complexité O(log(n)) est logarithmique de complexité O(n) est linéaire de complexité O(n k ) est polynomial D.Malka Cours Info - 10 MPSI 2015-2016 29 / 31

Complexité en espace d un algorithme Sommaire 1 Temps d exécution d un programme 2 Complexité (en temps) d un algorithme 3 Complexité en espace d un algorithme D.Malka Cours Info - 10 MPSI 2015-2016 30 / 31

Complexité en espace d un algorithme Complexité en espace d un algorithme En bref Complexité en espace Mesure l espace mémoire occupé maximal durant l exécution de l algorithme. On définit l unité d espace mémoire comme la taille d une structure de données particulière. On mesure la complexité en espace par le nombre n d unités de mémoire occupées lors de l exécution de l algorithme. Brièvement... Soit un tableau d entiers de longueur n. Unité d espace mémoire : taille d un entier. L espace mémoire occupé par ce tableau est O(n). Soit un tableau d entiers de longueur 5n. Unité d espace mémoire : taille d un entier. L espace mémoire occupé par ce tableau est O(n). Soit une matrice m n à coefficients réels. Unité d espace mémoire : taille d un flottant. L espace mémoire occupé par cette matrice est O(n m). D.Malka Cours Info - 10 MPSI 2015-2016 31 / 31