Chapitre II.Rappels mathématiques et complexité Outils mathématiques - Notations asymptotiques - Séries - Dénombrements - Equations de récurrence
Comparaisons de complexités Comparer sur un ensemble des données très grand; « Ordre de grandeur », « Comportement asymptotique »
Notation asymptotique Pour caractériser le comportement asymptotique en terme de complexité d’un algorithme on utilisera les fonctions dont le domaine est N Notations :
Notation Pour une fonction donnée g(n), on note L’ensemble de fonctions: L’écriture simplifiée : g(n) s’appelle borne approchée asymptotique pour f(n) Chaque fonction utilisée à l’intérieur de la notation doit être positive asymptotiquement
Exemples en (1)
Exemples en (2)
Exemples en (3) Considérons la partie gauche de cette inégalité Considérons la partie gauche de cette inégalité la partie gauche de cette inégalité est
Notation Pour une fonction donnée g(n), on note L’ensemble de fonctions: L’écriture simplifiée : g(n) s’appelle borne asymptotique supérieure pour f(n) Remarque 1: implique Remarque 2: et On dit que g et f ont un même ordre de grandeur asymptotique
Notation Pour une fonction donnée g(n), on note L’ensemble de fonctions: La notation fournit une borne asymptotique inférieure Théorème: pour deux fonctions quelconques et , si et seulement si et
Notations asymptotiques pour les bornes non-approchées La borne supérieure n’est pas asymptotiquement approchée La borne inférieure n’est pas asymptotiquement approchée
Notations asymptotiques définition exemple
Critères pour comparer les fonctions Soit f(n) et g(n) deux fonctions asymptotiquement positives
Notations standard et fonctions classiques (1) (1) Polynômes On dit qu’une fonction f(n) a une borne polynomiale si , ce qui équivaut à dire que Complexité quadratique : Complexité linéaire :
Notations standard et fonctions classiques (2) Exponentielles - par convention Comparaison des vitesses de croissance des polynômes et des exponentielles Ou Cas particulier (rappel, réelles) :
Notations standard et fonctions classiques (3) Logarithmes - log binaire - log naturel Pour tout réel etc.. Comparaison des vitesses de croissance ou illustration graphique Complexité logarithmique
Séries (1) Série arithmétique : 𝑘=1 𝑛 𝑘=1+2+3+…𝑛 = 1 2 𝑛 𝑛+1 = 𝑆 𝑛 Démonstration 𝑆 𝑛 = 1 2 𝑆 𝑛 + 𝑆 𝑛 = (1+2 + 3 +…𝑛 + 𝑛+𝑛−1+𝑛−2+…1)/2 = 𝑛+1 ∙ 𝑛 2 𝒌=𝟏 𝒏 𝒌 = 𝟏 𝟐 𝒏 𝒏+𝟏 =𝜣 𝒏 𝟐
Séries(2) Série géométrique ou exponentielle : Pour 𝑥≠1 𝑘=1 𝑛 𝑥 𝑘 =1+𝑥+ 𝑥 2 + 𝑥 3 +… 𝑥 𝑛 = 𝑥 𝑛+1 −1 𝑥−1 = 𝑆 𝑛 Raison 𝑥 Démonstration 𝑆 𝑛 = 𝑟𝑆 𝑛 − 𝑆 𝑛 𝑟−1 = (𝑥+ 𝑥 2 + 𝑥 3 +… 𝑥 𝑛+1 - 1−𝑥− 𝑥 2 − 𝑥 3 +… 𝑥 𝑛 )/(𝑟−1)= 𝑺 𝒏 = 𝒙 𝒏+𝟏 − 𝟏 𝒙−𝟏
Dénombrements(1) La théorie de dénombrements tente de répondre à la question « Combien? » sans pour autant procéder à une numération. Ex. « Combien de mémoire faut-il réserver pour toutes les chaines binaires possibles de longueur n ?» (1). Règle de la somme : le nombre de façons de choisir un élément appartenant à un ensemble parmi deux ensembles disjoints est la somme des cardinaux de ces deux ensembles: 𝐴∪𝐵 = 𝐴 + 𝐵 Ex. Etant donnés deux tableaux des entiers T1 et T2 de taille m et k respectivement combien d’éléments de mémoire faut-il réserver pour le tableau qui contiendra tous les éléments de T1 et de T2?
Dénombrements(2) (2). Règle du produit: le nombre de façons de choisir une paire ordonnée des éléments chacun appartenant à un ensemble est le nombre de fçons de choisir le premier élément multiplié par le nombre de façons de choisir un second élément 𝐴×𝐵 = 𝐴 ∙ 𝐵 Ex. Sur le site d’une agence matrimoniale se sont inscrits k hommes et l femmes. Combien de couples potentiels faudrait-il constituer?
Dénombrements(3) Chaînes. Une chaîne sur un ensemble fini 𝐸 est une séquence d’éléments de 𝐸. Ex. Soit 𝐸= 0;1 . Combien de chaînes binaires de longueur 3 existe-t-il? Une chaîne de longueur k est appelée une k-chaine. Il existe 𝐸 𝑘 k-chaines sur un ensemble fini 𝐸 Ex. Dans le système d’immatriculation des véhicules (SIV, 2009) la numérotation des véhicules se fait de manière séquentielle (de AA-001-AA à ZZ-999-ZZ). Les lettres I,O,V sont exclues. Les sous-chaînes WW et SS sont exclues à gauche. La sous-chaîne SS est exclue à droite. Quelle est la quantité possible des numéros d’immatriculation en France ?((23x23)-2)x999x((23x23)-1)
Dénombrements(4) Permutations. Une permutation d’un ensemble fini 𝐸 est une séquence ordonnée de tous les éléments de 𝐸, chaque élément apparaissant exactement une fois. Ex. Soit 𝐸= 0;1 . Combien de permutations existe-t-il? Il existe 𝑛! de permutations d’un ensemble de n éléments. Une k- permutation de 𝐸 est une séquence ordonnée de k éléments de 𝐸, sans qu’un élément apparaisse plus d’une fois dans la séquence. Ex. Un code produit d’une société de commerce électronique contient 4 chiffres décimales tous différents. Combien de slots faut-il réserver dans le catalogue électronique des produits? Le nombre de k-permutations d’un ensemble de n éléments : 𝑛 𝑛−1 𝑛−2 … 𝑛−𝑘+1 = 𝑛! 𝑛−𝑘 !
Dénombrements(5) Combinaisons. Une k- combinaison d’un ensemble 𝐸 de n éléments est un sous-ensemble de 𝐸, composé de k éléments. Le nombre de k-combinaisons d’un ensemble de n éléments peut être exprimé en fonction du nombre de ses k-permutations. Pour chaque k-combinaison il existe exactement k! permutations de ses éléments. Le nombre de k-combinaisons d’un ensemble de n éléments: 𝑛! 𝑘! 𝑛−𝑘 ! Coefficients binomiaux : 𝐶 𝑛 𝑘 = 𝑛! 𝑘! 𝑛−𝑘 ! , 𝐶 𝑛 𝑘 = 𝐶 𝑛 𝑛−𝑘 Binôme de Newton : 𝑥+𝑦 𝑛 = 𝑘=0 𝑛 𝐶 𝑛 𝑘 𝑥 𝑘 𝑦 𝑛−𝑘 , 2 𝑛 = 𝑘=0 𝑛 𝐶 𝑛 𝑘
Equations de récurrences Souvent pour évaluer le temps d’exécution d’un algorithme sur des données de taille n, on décompose le problème en sous-problèmes sur des données de tailles plus petites et on exprime T(n) en fonction de divers T(p) avec p<n : On obtient alors une équation de récurrence
Les récurrences des partitions On se limitera à ce type de récurrences. Considérons l’algorithme de tri par fusion d’un tableau Principe 1. Diviser la séquence de n éléments à trier en deux sous-séquences de taille n/2 éléments 2. Trier les deux sous-séquences récursivement à l’aide de tri par fusion 3. Fusionner les deux sous-séquences triées pour produire la réponse triée. Condition de sortie de récursion – une séquence d’un élément est déjà triée.
Algorithme de tri par fusion(1) Supposons que nous avons à notre disposition une procédure Fusionner(A,p,q,r). Elle fusionne deux séquences ordonnées A[p],…,A[q] et A[q+1],…, A[r]. Exemple A : 1 3 5 7 2 4 6 8, p=1, q=4, r=8 A trié : 1 2 3 4 5 6 7 8 Complexité de « Fusionner » est
Algorithme de tri par fusion (2) Procédure Tri-Fusion(val A,p,r) Var q:entier Début Si p<r Alors Tri-Fusion(A,p,q) Tri-Fusion(A,q+1,r) Fusionner(A,p,q,r) FinSi Fin Tri-Fusion
Complexité Temps d’exécution dans le pire des cas
Résolution de récurrence (1) (1) Par substitution : substituer la solution pressentie à la fonction et appliquer l’induction mathématique. Considérons On suppose que Démontrer que
Résolution de récurrence (2) On suppose la validité pour En substituant dans l’équation de récurrence pour c>1 on majore par donc Il est maintenant nécessaire de vérifier pour les premiers n ( pour n=1 – faux), mais on doit choisir n>n0, (n=2,3..)- choisir c suffisamment grande
Résolution de récurrence (3) L’inconvénient de la méthode par substitution : il faut « pressentir » la forme de la solution. (2)Méthode itérative. Principe : développer (itérer) la récurrence et de l’exprimer sous la forme d’une sommation en termes dépendant uniquement de n et de conditions initiales. Utiliser ensuite l’évaluation de sommations.
Résolution de récurrence (4) Considérons (Ici on se sert de la borne) Combien de fois faut-il itérer la récurrence avant d’atteindre la condition aux limites (n=1) ? L’itération atteint 1 quand donc i = (ou dépasse)
Résolution de récurrence (5) (3) Théorème général Soient 𝑎≥1 et 𝑏>1 constantes, soit f(n) – une fonction et soit T(n) définie pour les entiers positifs par la récurrence Où l’on interprète n/b soit comme soit comme T(n) peut alors être borné asymptotiquement comme suit 1)Si pour une certaine constante ,alors 2)Si , alors 3)Si pour une certaine constante et si suffisamment grand, alors
Exemple d’application du théorème général ss on a a=9, b=3, f(n)=n On peut appliquer le cas 1 du théorème général et donc