35
Algorithmique et Analyse d’Algorithmes Algorithmique et Analyse d’Algorithmes L3 Info Cours 1 : notion de coût d’un algorithme Benjamin Wack 2017- 2018 1 / 41

Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

  • Upload
    lytu

  • View
    230

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’Algorithmes

Algorithmique et Analyse d’AlgorithmesL3 Info

Cours 1 : notion de coût d’un algorithme

Benjamin Wack

2017- 2018

1 / 41

Page 2: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’Algorithmes

Objectifs du cours

Savoir proposer une solution algorithmique à un problème posé,savoir implanter la solution et savoir analyser celle-ci.

Objectifs détaillés

I Savoir reconnaître et mettre en œuvre des schémas génériquesd’algorithmes (séquence, arbre, graphe...),

I Savoir construire une solution selon une démarche allant du plussimple (algorithme naïf) au plus efficace (diviser pour régner, etc.)

I Savoir démontrer la correction des algorithmesI Savoir comment évaluer la complexité d’une solution

algorithmique :- analyser la complexité au pire, en moyenne avec des hypothèsesprobabilistes,

- analyser la complexité en utilisant des mesures sur des simulations oudes jeux de test.

2 / 41

Page 3: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’Algorithmes

Plan

Présentation du cours

Problématique

Coût d’un algorithme

ComplexitéMéthodologieOrdres de grandeur

Algorithme de Horner

3 / 41

Page 4: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesPrésentation du cours

Structure du cours

Cours (Benjamin Wack)Une partie synthétique sur les concepts et schémas algorithmiquesUn algorithme classique afin de se constituer une culture de référence

TD1 (Florence Perronnin, Anne Rasse, Jean-Marc Vincent)Exercices permettent de renforcer la compréhension des concepts.

TD2 (Vincent Danjean, David Monniaux, Benjamin Wack)Mise en œuvre des concepts et préparation aux activités pratiques

APNEES (VD, DM, BW) : Activités Personnelles Non EncadréesÉvaluéesValidation des concepts par la pratique et évaluation de la compréhension

+ au moins autant de travail personnel ! (exercices, petits programmes)Adresse Mail enseignant : Pré[email protected]

5 / 41

Page 5: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesPrésentation du cours

Ressources

Bibliographie

I Algorithmique, T. Cormen, R. Rivest & C. Leiserson, DunodI Algorithmes, R. Sedgewick, Pearson Education

Page WebPlanning, documents, annales

http://www-verimag.imag.fr/~wack/ALGO5/

Moodle de l’UFRSujets et rendus d’Apnées

https://im2ag-moodle.e.ujf-grenoble.fr/course/view.php?id=229

6 / 41

Page 6: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesPrésentation du cours

Évaluations

Note finale = 67 % Examen + 33 % CC

Les contrôles continus

I 2 quicks (début octobre et fin novembre) : 50 % du CCI 3 comptes-rendus d’APNEEs dont 2 notés : 50 % du CC

Examen terminal

I 2h30 sans documents ni calculatriceI Session 2 en juin...

Challenge de programmation

I Semaine du 13 au 17 novembreI En équipes

7 / 41

Page 7: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesPrésentation du cours

Programme (indicatif) du coursI Complexité des algorithmes

1. Coût d’un algorithme (itérations, ordres de grandeur) Horner2. Analyse en moyenne Quicksort

I Preuves d’algorithmes3. Invariant, correction, terminaison Drapeau hollandais4. Logique de Hoare Dichotomie

I Types abstraits élémentaires et implantation5. Structures séquentielles Algorithme de parenthésage6. Structures arborescentes Partition Binaire de l’Espace

I Arbres7. Arbres binaires de recherche Arbres B8. Arbres ordonnés, structure de tas Algorithmes gloutons9. Arbres et codage Algorithme de Huffman

I Graphes et algorithmes10. Algorithmique de graphes Prim et Kruskal11. Prétraitement Algorithme de Knuth-Morris-Pratt

8 / 41

Page 8: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Notion de problème données

I Effectuer une recherche dans un inventaire stockI Résoudre une équation coefficientsI Trouver le plus court chemin sur un plan de ville planI Corriger des fautes d’orthographe texte + dictionnaireI Multiplier des matrices coefficientsI . . .

Dans chacun de ces exemples on s’intéresse en fait à une classe deproblèmes similaires, dont chaque instance est définie par des données.

Il faut également préciser le résultat attendu.(par exemple pour l’inventaire : oui/non ? quantité ? localisation ?)

10 / 41

Page 9: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Qu’est-ce qu’un algorithme ?Procédure de résolution de n’importe quelle instance d’un problèmesuffisamment élémentaire pour être exécutée de façon automatique.

Problème concret

Problème formalisé

// AlgorithmeProgrammation

Programme

Exécution

Données

tt ))Instance Solution

Exemple : résolution d’équation

11 / 41

Page 10: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Un algorithme traite donc des données pour produire un résultat ; maisavec quelles primitives et quelles ressources ?

12 / 41

Page 11: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Nécessité d’un modèle

Alan M. Turing Machine « de papier »1912-1954 1936

La machine est dotée :I d’un ruban infini (' mémoire)I d’une tête de lecture/écritureI d’un automate (' processeur)

Un modèle donc tourné vers les opérations de lecture/écriture(' affectation, calculs)

13 / 41

Page 12: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Les questions “résolues” par Turing

I Qu’est-ce qu’un calcul effectué automatiquement ?I Peut-on tout calculer ?I Peut-on décider automatiquement si une formule logique est vraie ?

10 ans avant les premiers ordinateurs !

Cf. Modèles de calcul au semestre 6

14 / 41

Page 13: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Les questions traitées en Algo5

Est-ce que je peux construire un programme qui résout mon problème(sur une machine conforme à mon modèle) ?Spécification du problème et construction d’un algorithme

Est-ce que l’exécution de mon programme sur la machine donne bien lerésultat souhaité ?Vérification de propriétés qualitatives par test et preuve

Est-ce que mon programme me fournit le résultat en un tempsacceptable ?Validation de propriétés quantitatives par mesure et analyse

15 / 41

Page 14: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesProblématique

Les questions traitées en Algo5

Problème concretspécification

Correction Efficacité

Problème formalisé

construction // AlgorithmeProgrammation

preuveOO

analyse decomplexité

66

Programme

Exécution

^^ mesure

Données

tt ))

55

Instance Solution

test@@

Exemple : résolution d’équation

15 / 41

Page 15: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesCoût d’un algorithme

Notre modèle de machine

Une machine est constituée d’un processeur, d’une mémoire et d’unensemble d’opérations.

I Mémoire- infinie (mais un calcul donné utilise un espace fini),- types élémentaires (finis) int, float,...- puis on ajoutera des structures de données

I Opérations- nombre fini d’opérations (arithmétiques, booléennes...) ;- chaque opération a un nombre fini de paramètres(nombre fini de variables lues et écrites)

I Processeur- processeur unique ;- effectue les opérations en temps constant (1 top = 1 opération)

17 / 41

Page 16: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesCoût d’un algorithme

Efficacité d’un algorithme

I Est-ce que mon programme consomme une quantité acceptable deressources pour fournir un résultat ?

I Étant donnés deux programmes résolvant le même problème, lequelest le “meilleur” ?

CalculUn calcul est une séquence d’opérations qui, à partir d’une configurationinitiale de la mémoire, produit, en un temps fini, une configurationterminale.

I coût en temps à partir d’une configuration initiale d= nombre d’opérations dans la séquence

I coût en mémoire= nombre maximal de variables utilisées simultanément

18 / 41

Page 17: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesCoût d’un algorithme

Exemple (1)

Moyenne de 2 flottantsMOY(a,b)Données : Deux flottants : a et bRésultat : La moyenne de a et de bs := a + bm := s/2Return (m)

Coût de l’algorithmeCoût temps ? 2 opérationsCoût en espace mémoire ? 2 variables

Coût constant, indépendant des données

19 / 41

Page 18: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesCoût d’un algorithme

Exemple (2)

Puissance : calcul de xn

PUISSANCE(x ,n)Données : Un flottant x et un entier nRésultat : La valeur de xn

p := 1k := 0while k 6= n

p := p × xk := k + 1

Return (p)

I Coût en temps : 2 + 2n opérationsI Coût variable, dépend de la valeur des données

20 / 41

Page 19: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesCoût d’un algorithme

Exemple (3)

Maximum d’un tableauMAXIMUM(T ,n)Données : T tableau de n entiersRésultat : L’indice d’un élément maximax := T [1]for i := 1 to n

if T [i ] ≥ maximax := imax := T [i ]Traiter (max)

Return (imax )

Coût de l’algorithmeModèle de coût ?Supposons Traiter coûteux

I pour T=[1,2,...,n] ?I pour T=[14,28,...,14n] ?I pour T=[n,1,2,...,n-1] ?

Dépend de la taille des donnéesBorné par une fonction linéaire

Expression du coût : en fonction de quoi ?

I Pour ce tableau n est la taille des donnéesI Pour un entier n est la valeur de la donnée : on préférera log2(n)

21 / 41

Page 20: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Généralisation

Taille de la donnée

Entier Entier

Cout du calcul

Espace des données

Machine

Espace des résultatsAlgorithme

Caractériser l’efficacité générale de l’algorithme =trouver la relation entre la taille des données et le coût de l’algorithmesur un (modèle de) machine donnée

23 / 41

Page 21: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Coût d’un algorithme

Coût (au pire)Le coût d’un algorithme A est fonction de la taille des données :

CA(n) = max(coût(d)) pour toutes les données d de taille n

I Suppose d’avoir fixé la notion de tailleI Maximum = garantie quelles que soient les conditions d’utilisationI Exhiber un cas défavorable « suffit »

Coût au mieux

CminA (n) = min(coût(d)) pour toutes les données d de taille n

I Correspond au cas le plus favorable

Quel comportement privilégie-t-on ? 24 / 41

Page 22: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Méthodologie

Coûts des structures de base

Instructions en séquenceLe coût de

Faire TrucFaire Machin

est la somme des coûts de Truc et de Machin

Composition des coûts

Le coût d’une boucle est donc la sommedes coûts de chaque itération

Instructions FOR, WHILE, REPEAT,...

26 / 41

Page 23: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Méthodologie

Coûts des structures de base (2)

Instructions conditionnellesif condition

Faire Trucelse

Faire MachinCoût de l’une des branches plus le coût d’évaluation de la condition

Majoration du coûtLe coût au pire sera donc majoré par le maximum des coûts au pire dechaque branche.

Cout(si Condition alors A sinon B) ≤ Cout(evaluation(Condition))+maxCout(A),Cout(B)

Instructions IF, SWITCH,... 27 / 41

Page 24: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Méthodologie

Coûts des structures de base (3)

Appel de procédureLe coût de l’appel d’une procédure est :

I le coût du corps de la procédure pour ses paramètres d’appelI plus le coût de l’évaluation de ses paramètres.

Méthode de calcul de coûtLe calcul du coût d’un algorithme s’obtient donc en composant les coûtsdes différentes opérations composant l’algorithme.

I assemblage et reconstructionI méthode par compositionI se fait à la conception de l’algorithme

28 / 41

Page 25: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Méthodologie

Exemple

Calcul de la somme des entiers de 1 à ni := 1somme := 0Tantque (i ≤ n) :

somme := somme + ii := i + 1

I Coût d’une itération = 2 (additions) + 1 testI Nombre d’itérations = nI Coût de la boucle = 3nI Coût de l’algorithme = 3n + 1

Niveau de détail judicieux ?

29 / 41

Page 26: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Ordres de grandeur

Ordres de grandeur

I La complexité est une prédiction du temps d’exécution duprogramme codant l’algorithme.

I Mais dépend de l’architecture de la machine, donc c’est uneabstraction (approximation)

I Passage à l’échelle des algorithmes

Ce qui est important c’est :

1. l’ordre de grandeur ;2. de pouvoir comparer les algorithmes

Complexité d’un algorithmeOn appelle complexité d’un algorithme une fonction de référence(logarithme, polynome, exponentielle...) comparable à son coût.

31 / 41

Page 27: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Ordres de grandeur

Exemples n = 106n = 109

I moyenne des éléments d’un tableau de taille n⇒ complexité en n opérations

1/1000e s1 sI tri par insertion des éléments d’un tableau de taille n⇒ complexité en n2 opérations

1/4 h30 ansI énumération des vecteurs de bits de taille n⇒ complexité en 2n opérations

10300 000 années...

Définir des ordres de grandeur comparables

Pour se donner une représentation concrète : sur un PC récent, environ 1milliard d’opérations / seconde

32 / 41

Page 28: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Ordres de grandeur

Borne supérieure asymptotique

Notation OPour une fonction donnée g on note O(g) l’ensemble de fonctions :

O(g) = f telles que ∃c ≥ 0,∃n0 ≥ 0,∀n ≥ n0, f (n) ≤ c.g(n)

On écrit f = O(g) pour f ∈ O(g).On dit que g est une borne supérieure asymptotique pour f .

Vite dit : g dépasse f à partir d’un certain rang (taille de données)

Pause courbesExemples

n = O(n3) 1250n3 = O(2n)

n +√n = O(n) n

√n + n log n = O(n

√n)

33 / 41

Page 29: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Ordres de grandeur

Échelles de comparaison (à connaître)

Échelle polynomiale

I Si k ≤ l alors nk = O(nl )

Échelle logarithmique

I log(n) = O(n)I log(log(n)) = O(log(n))

Échelle exponentielle

I Si 0 < a < b alors an = O(bn)I Pour tous a > 1 et k ≥ 0 on a nk = O(an)

Deux propriétés utilesSi f = O(g) alors f + g = O(g) et k × f = O(g) 34 / 41

Page 30: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesComplexité

Ordres de grandeur

Autres encadrements

f = O(g) si ∃c ≥ 0,∃n0 ≥ 0,∀n ≥ n0, f (n) ≤ c.g(n)

Borne inférieure asymptotique (notation Ω)

f = Ω(g) si ∃c ≥ 0,∃n0 ≥ 0,∀n ≥ n0, c.g(n) ≤ f (n)

Borne asymptotique approchée : (notation Θ)

f = Θ(g) si ∃c1, c2 ≥ 0,∃n0 ≥ 0,∀n ≥ n0, c1.g(n) ≤ f (n) ≤ c2.g(n)

35 / 41

Page 31: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesAlgorithme de Horner

Évaluation d’un polynôme

Un polynôme P à une seule variable X s’écrit de façon unique

P = anX n + an−1X n−1 + . . . + a1X + a0

Résultat : La valeur P(x0)

Données : Les coefficients an, . . . , a0 suffisent à donner le polynômeRangés dans un tableau A de taille n + 1Une valeur x0 en laquelle on veut évaluer le polynôme

Types de données :I les coefficients an, . . . , a0 sont des flottantsI x0 peut être un flottant mais aussi une matrice, un polynôme...

I Incidence sur le modèle de coût

37 / 41

Page 32: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesAlgorithme de Horner

Algorithme (très) naïf

Évaluation de P en x0EVAL(P,x0)Données : Un tableau de coefficients A et un flottant x0Résultat : La valeur de P(x0)r = 0i = nwhile i ≥ 0

p = 1k = 0while k 6= i

p = p × x0k = k + 1

(calcul de x0i dans p)

r = r + A[i ]× pi = i − 1

Return (r)

Complexité en O(n2)38 / 41

Page 33: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesAlgorithme de Horner

Évaluation droite-gaucheIdée : ne pas recalculer les puissances de x0 pour rien

Évaluation de P en x0 par la droiteEVAL_DROITE(P,x0)Données : Un tableau de coefficients A et un flottant x0Résultat : La valeur de P(x0)r = 0i = 0p = 1while i ≤ n

r = r + A[i ]× pp = p × x0i = i + 1

Return (r)

Complexité en O(n)

39 / 41

Page 34: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesAlgorithme de Horner

Évaluation gauche-droite efficaceOn se base sur la pseudo-factorisationP = ((. . . (an × X + an−1) . . .)× X + a1)× X + a0

Évaluation de P en x0 par la méthode de HornerHORNER(P,x0)Données : Un tableau de coefficients A et un flottant x0Résultat : La valeur de P(x0)r = 0i = nwhile i ≥ 0

r = r × x0 + A[i ]i = i − 1

Return (r)

Même complexité mais :I En place et meilleure constanteI Autres applications : dérivation, division, calcul de racines...

40 / 41

Page 35: Algorithmique et Analyse d'Algorithmes - L3 Info Cours 1 : notion de

Algorithmique et Analyse d’AlgorithmesAlgorithme de Horner

Conclusion

I Un même problème peut être résolu par des algorithmes trèsdifférents

I On peut (parfois) passer de l’un à l’autre par raffinementI L’analyse de complexité est un critère fiable pour les comparerI ... mais pas le seul

La prochaine fois

I schémas récursifsI analyse du coût en moyenneI tri rapide

41 / 41