La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Analyse dAlgorithmes Algorithme Input Output Un algorithme est une procédure étape par étape pour résoudre un problème dans un temps fini. Structures de.

Présentations similaires


Présentation au sujet: "Analyse dAlgorithmes Algorithme Input Output Un algorithme est une procédure étape par étape pour résoudre un problème dans un temps fini. Structures de."— Transcription de la présentation:

1 Analyse dAlgorithmes Algorithme Input Output Un algorithme est une procédure étape par étape pour résoudre un problème dans un temps fini. Structures de données IFT-2000

2 Temps dexécution Les algorithmes transforment des objets en entrée en des objets en sortie. Le temps dexécution dun algorithme croît en fonction de la taille des entrées. Le temps dexécution en moyenne est souvent difficile à déterminer. Nous nous intéresserons au pire cas dans le temps dexécution. Facile à analyser Crucial dans les applications dans le domaine des jeux, des finances et de la robotique par exemple.

3 Études Expérimentales Écrire un programme implémentant un algorithme Exécuter le programme avec différentes tailles des données en entrée. Utiliser une fonction, comme la fonction prédéfinie clock(), pour avoir une mesure des temps dexécution. Tracer les résultats.

4 Limitation des expériences Il est nécessaire dimplémenter lalgorithme, ce qui peut être difficile. Les résultats peuvent ne pas être indicatifs du temps dexécution dautres entrées non inlcuses dans lexpérience. Pour comparer deux algorithmes, le même environnement de programmation (matériel et logiciel) doit être utilisé.

5 Analyse théorique Utiliser une description de haut niveau de lalgorithme au lieu de limplémenter. Caracteriser le temps dexécution comme une fonction de la taille des entrées, n. Tenir compte de toutes les possibilités comme entrée. Nous permet dévaluer la vitesse dun algorithme independemment de lenvironnement.

6 Pseudocode description haut niveau de lalgorithme Plus structuré quune prose en français! Moins detaillé quun programme Algorithme arrayMax(A, n) Input tableau A de n entiers Output lélément maximum de A currentMax A[0] for i 1 to n 1 do if A[i] currentMax then currentMax A[i] return currentMax Exemple: trouver lélément max dans un tableau

7 Pseudocode Structures de contrôle if … then … [else …] while … do … repeat … until … for … do … Lindentation remplace les accolades Declaration dune méthode Algorithme method (arg [, arg…]) Input … Output … Appel Methode/Fonction var.method (arg [, arg…]) Valeur retournée return expression Expressions Assignation (comme en C, C++, Java) Test dégalité (comme en C, C++, Java) n 2 Exposant et autres formats mathématiques permis

8 Le modèle Random Access Machine (RAM) Le CPU Une banque de cellules de mémoire illimitée, chacune peut contenir un nombre arbitraire de caractères Les cellules de mémoire sont adressables, leur accès prend une unité de temps

9 Operations primitives Instructions de base exécutées par un algorithme Ont leur correspondant en pseudocode Independants dun langage de programmation Leurs définitions exactes ne sont pas importantes On considère quelles prennent un temps constant dans le modèle RAM Exemples: Evaluation dune expression Assigner une valeur à une variable Indexation dans un tableau Appeler une methode Retourner dune méthode

10 Compter les opérations primitives En inspectant le pseudocode, nous pouvons determiner le nombre maximum dopérations primitives exécutées par lalgorithme, comme une fonction de la taille des entrées Algorithme arrayMax(A, n) # operations currentMax A[0] 2 for i 1 to n 1 do 2 + n if A[i] currentMax then2(n 1) currentMax A[i]2(n 1) { incrémenter le compteur i }2(n 1) return currentMax 1 Total 7n 1

11 Estimation du temps dexécution Lalgorithme arrayMax exécute 7n 1 opérations primitives dans le pire cas. Définissons: a= le temps que prend par la plus rapide des opérations primitives b = le temps que prend la plus lente des opérations primitives Soit T(n) le temps dans le pire cas de arrayMax. On peut alors écrire : a (7n 1) T(n) b(7n 1) Ainsi, le temps dexécution T(n) est bornée par deux fonctions linéaires

12 Taux de croissance du temps dexécution Changer lenvironnement (matériel/logiciel) Affecte T(n) par un facteur constant, mais Ne doit pas altérer le taux de croissance de T(n) Le taux de croissance linéaire du temps dexécution T(n) est une propriété intrinsèque de lalgorithme arrayMax

13 Taux de croissance Taux de croissance des fonctions: Linéaire n Quadratique n 2 Cubique n 3 Dans le diagramme log-log, la pente dune droite correspond au taux de croissance de la fonction.

14 Facteurs constants Le taux de croissance nest pas affecté par facteurs constants ou des termes de plus bas ordres Exemples 10 2 n est une fonction linéaire 10 5 n n est une fonction quadratique 1E+0 1E+2 1E+4 1E+6 1E+8 1E+10 1E+12 1E+14 1E+16 1E+18 1E+20 1E+22 1E+24 1E+26 1E+01E+21E+41E+61E+81E+10 n T ( n ) Quadratique Linéaire

15 Notation Grand-Oh Soit les fonctions f(n) et g(n), nous dirons que f(n) est en O(g(n)) sils existent c et n 0, des constantes positives, tel que f(n) cg(n) pour n n 0 Exemple: 2n + 10 est en O(n) 2n + 10 cn (c 2) n 10 n 10/(c 2) prendre c = 3 and n 0 = 10

16 Exemple Grand-Oh Exemple: la function n 2 nest pas en O(n) n 2 cn n c Les 2 inégalités ne peuvent être satisfaites si c doit être une constante

17 Autres Exemples Grand-Oh 7n-2 7n-2 est en O(n) besoin de c > 0 and n 0 1 tel que 7n-2 cn pour n n 0, Ceci est vrai pour c = 7 et n 0 = 1 3n n n n is O(n 3 ) besoin de c > 0 et n 0 1 tel que 3n n cn 3 pour n n 0, ceci est vrai pour c = 4 et n 0 = 21 3 log n + log log n 3 log n + log log n is O(log n) besoin de c > 0 et n 0 1 tel que 3 log n + log log n clog n pour n n 0, ceci est vrai pour c = 4 et n 0 = 2

18 Grand-Oh et le taux de croissance La notation big-Oh donne une borne supérieure au taux de croissance de la fonction Dire que f(n) est en O(g(n)) signifie que le taux de croissance de f(n) nest pas supérieur que le taux de croissance de g(n) Nous pouvons utiliser la notation big-Oh pour comparer des fonctions par rapport à leur taux de croissance f(n) is O(g(n))g(n) is O(f(n)) g(n) croît plusOuiNon f(n) croît plusNonOui Même croissanceOui

19 Règles du Grand-Oh Si f(n) est un polynôme de degrés d, f(n) est alors en O(n d ), i.e., 1. négliger les termes de plus bas degrés 2. négliger les coefficients constants Utiliser la petite possible classe de fonctions Dire 2n est en O(n) au lieu de 2n est en O(n 2 ) Utiliser la plus simple expression de la classe Dire 3n + 5 est en O(n) au lieu de 3n + est en O(3n)

20 Analyse asymptotique Lanalyse asymptotique dun algorithme determine le temps dexécution dans la notation big-Oh Pour appliquer lanalyse asymptotique Il faut trouver le nombre dopérations primitives exécutées dans le pire cas en focntion de la taille des entrées Exprimer par la suite cette fonctiond ans la notation big-Oh Exemple: Nous avons determiné que lalgorithme arrayMax execute au plus 7n 1 operations primitives Nous dirons que lalgorithme arrayMax sexécute en un temps O(n) Depuis que les facteurs constants et les termes de plus bas ordres sont négligés, nous pouvons les négliger également lorsque nous compterons les opérations primitives

21 Calcul des moyennes de prefix Nous allons illustrer lanlayse asymptotique avec deux algorithmes pour le calucl des moyennes de prefix La i-ème moyenne prefix dun tableau X est la moyenne des (i + 1) premiers éléments de X: A[i] = (X[0] + X[1] + … + X[i])/(i+1) Calculer le tableau A des moyennes prefix dun autre tableau X a des applications dans lanalyse financière

22 Moyennes prefix (Quadratique) Lalgorithme suivant calcule les moyennes prefix en un temps quadratique en appliquant la definition Algorithm prefixAverages1(X, n) Input tabelau X de n entiers Output tableau A des moyennes prefix de X #opérations A nouveau tableau de n entiers n for i 0 to n 1 do n s X[0] n for j 1 to i do …+ (n 1) s s + X[j] …+ (n 1) A[i] s / (i + 1) n return A 1

23 Progression arithmétique Le temps de calcul de prefixAverages1 est O(1 2 … n) La somme des n premiers entier est n(n 1) 2 Voici une simple preuve visuelle Ainsi, lalgorithme prefixAverages1 sexécute en un temps de lordre O(n 2 )

24 Moyennes prefix (Linéaire) Lalgorithme suivant calcule les moyennes prefix en un temps linéaire en considérant les sommes courantes Algorithm prefixAverages2(X, n) Input tableau X de n entiers Output tableau A des moyennes prefix de X #opérations A nouveau tableau of n entiersn s 0 1 for i 0 to n 1 don s s + X[i]n A[i] s / (i + 1) n return A 1 Lalgorithme prefixAverages2 sexécute en un temps en O(n)

25 propriétés des logarithmes: log b (xy) = log b x + log b y log b (x/y) = log b x - log b y log b xa = alog b x log b a = log x a/log x b propriétés des exponentiels: a (b+c) = a b a c a bc = (a b ) c a b /a c = a (b-c) b = a log a b b c = a c*log a b Sommations (Sec ) Logarithmes et Exposants (Sec ) Techniques de preuves (Sec ) Probabilité de base (Sec ) Les Maths que vous devez réviser

26 Famille du Grand-Oh big-Omega f(n) est (g(n)) sil existe une constante c > 0 et un entier constant n 0 1 tel que f(n) cg(n) for n n 0 big-Theta f(n) est (g(n)) sils existent des constantes c > 0 et c > 0 et un entier constant n 0 1 tel que cg(n) f(n) cg(n) for n n 0 little-oh f(n) est o(g(n)) si, pour toute constante c > 0, il existe un entier constant n 0 0 tel que f(n) cg(n) pour n n 0 little-omega f(n) est (g(n)) si, pour toute constante c > 0, il existe un entier constant n 0 0 tel que f(n) cg(n) pour n n 0

27 Intuition pour la notation asymptotique Big-Oh f(n) est O(g(n)) si f(n) est asymptotiquement inférieure ou égale à g(n) big-Omega f(n) est (g(n)) si f(n) est asymptotiquement supérieure ou égale à g(n) big-Theta f(n) est (g(n)) si f(n) est asymptotiquement égale à g(n) little-oh f(n) est o(g(n)) si f(n) est asymptotiquement strictement inférieur que g(n) little-omega f(n) est (g(n)) si f(n) est asymptotiquement strictement supérieure que g(n)

28 Exemple Utilisation de la famille du Grand-Oh f(n) est (g(n)) si, pour toute constante c > 0, il existe un entier constant n 0 0 tel que f(n) cg(n) pour n n 0 besoin 5n 0 2 cn 0 pour un c donné, le n 0 qui satisfait cela est n 0 c/5 0 5n 2 est (n) f(n) est (g(n)) sil existe une constante c > 0 et un entier constant n 0 1 tel que f(n) cg(n) pour n n 0 prendre c = 1 and n 0 = 1 5n 2 est (n) f(n) est (g(n)) sil existe une constante c > 0 et un entier constant n 0 1 tel que f(n) cg(n) pour n n 0 prendre c = 5 and n 0 = 1 5n 2 est (n 2 )


Télécharger ppt "Analyse dAlgorithmes Algorithme Input Output Un algorithme est une procédure étape par étape pour résoudre un problème dans un temps fini. Structures de."

Présentations similaires


Annonces Google