Complexité Moyenne Transparents de Loı̈c Hélouët [email protected] Prépa agreg 2013/2014 Automates et Langages – Prépa Agreg – 2012/2013, 1 Bibliographie CLRS TH. Cormen, CH. Leiserson, R. Rivest, R. Stein Introduction à l’algorithmique. Ediscience, 1993. FGS Ch. Froidevaux, M-C. Godel, M. Soria. Types de données et Algorithmes. Ediscience, 1993. Automates et Langages – Prépa Agreg – 2012/2013, 2 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Partie I Complexité moyenne Automates et Langages – Prépa Agreg – 2012/2013, 3 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Plan 1 Rappels 2 Exemple 1 : Recherche dans un tableau 3 Exemple 2 : Le Quick Sort 4 Conclusion Automates et Langages – Prépa Agreg – 2012/2013, 4 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Taille, entrée et coût d’un calcul La complexité d’un algorithme est la quantité de ressources (temps, espace) nécessaire pour la résolution d’un problème Un algorithme A I accepte une donnée d’entrée d ∈ DA I produit une sortie A(d) Les entrées ont une taille : DA = S DA,n n∈N Hypothèse : chaque opération prend le même temps. Cela permet de parler de complexité en nombre d’opérations. Le coût CA (d) du calcul effectué par un algorithme est exprimé en nombre d’opérations élémentaires (comparaisons, operations mémoire, ...) pour calculer A(d). Automates et Langages – Prépa Agreg – 2012/2013, 5 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Notation de Landau O(n) On dit que f (n) est en O(g (n)) ssi il existe k > 0 ∈ N, il existe n0 , tels que ∀n > n0 , |f (n)| ≤ |g (n)|.k f est bornée, par le dessus, par g asymptotiquement (à un facteur près) Remarque : en informatique, on va calculer des complexités, i.e. des coûts positifs, et les valeurs absolues peuvent être ignorées. Ω(n) On dit que f (n) est en Ω(g (n)) ssi il existe k > 0 ∈ N, il existe n0 , tels que ∀n > n0 , |g (n)|.k ≤ |f (n)| f est minorée par g asymptotiquement, à un facteur près Automates et Langages – Prépa Agreg – 2012/2013, 6 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Notation de Landau Θ(n) On dit que f (n) est en Θ(g (n)) ssi il existe k1 , k2 > 0 ∈ N, il existe n0 , tels que ∀n > n0 , |g (n)|.k1 < |f (n)| < |g (n)|.k2 f est dominée et soumise à g asymptotiquement Automates et Langages – Prépa Agreg – 2012/2013, 7 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Exemples de complexités Complexités habituelles O(1) O(log (n)) O((log (n))c) O(n) O(nlog (n)) O(n2 ) O(nc ) O(c n ) O(n!) : : : : : : : : : bornée par une constante logarithmique polylogarithmique linéaire linéarithmique ( ou quasi-linéaire ) quadratique polynomiale exponentielle, parfois géométrique factorielle Automates et Langages – Prépa Agreg – 2012/2013, 8 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Complexité au pire Complexité au pire La complexité au pire d’un algorithme A pour une entrée de taille n est le nombre maximum d’opérations à effectuer pour une entrée d ∈ DA,n de A de taille n. CAmax (n) = max CA (d) d∈DA,n Meilleur des cas La complexité dans le meilleur des cas d’un algorithme A pour une entrée de taille n est le nombre minimal d’opérations à effectuer pour une entrée d ∈ DA,n de A de taille n. CAmin (n) = min CA (d) d∈DA,n La complexité au pire ne reflète pas exactement l’efficacité d’un algorithme. Tri fusion Tri rapide Pire cas O(n.log (n)) O(n2 ) Moyenne O(n.log (n)) O(n.log (n)) Automates et Langages – Prépa Agreg – 2012/2013, 9 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Complexité Moyenne La complexité moyenne d’un algorithme A pour une entrée de taille n est le nombre moyen d’opérations à effectuer pour une entée valide d ∈ DA,n . Soit p(.) une distribution sur DA,n CAmoy (n) = X p(d).CA (d) d∈DA,n CAmin (n) < CAmoy (n) < CAmax (n) Automates et Langages – Prépa Agreg – 2012/2013, 10 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Complexité Moyenne: Simplification du problème Cout = fonction de la taille entrée Si le coût de A ne dépend que de la taille de l’entrée (i.e,. ∀d, d 0 DA,n , CA (d) = CA (d 0 ) = f (n) ) CAmoy (n) = f (n) Exemple : Multiplication de matrices carrées C = AxB Pour i dans 1..n Pour j dans 1..n P Cij = aik .bkj k∈1..n Automates et Langages – Prépa Agreg – 2012/2013, 11 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Distribution Uniforme Distribution Uniforme Soit A un algorithme, et p(.) la distribution uniforme sur DA,n . CAmoy (n) = X 1 CA (d) |DA,n | d∈DA,n En pratique, souvent la seule hypothèse disponible ou raisonnable Automates et Langages – Prépa Agreg – 2012/2013, 12 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Exemple 1: Recherche dans un tableau Entrée : Un tableau T de taille n, une valeur entiere v . Chaque entrée du tableau choisie parmi 1, ..k. Sortie de l’algorithme : vrai si v est dans le tableau faux sinon Hypothèse : Pour chaque élément de T, les valeurs sont équiprobables. Automates et Langages – Prépa Agreg – 2012/2013, 13 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Exemple 1 : Recherche dans un tableau Algorithme Pour i dans 0 .. T.length -1 Si (T[i] == v) return true; Finpour return false; Complexité au pire O(n) comparaisons Evident : si v n’est pas dans le tableau Complexité Moyenne Automates et Langages – Prépa Agreg – 2012/2013, 14 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Le Quick Sort 1 n TriRapide(T, premier, dernier) T: tableau de taille n (entiers) premier, dernier : entiers entre 1 et n if premier < dernier then pivot := ChoixPivot(t,premier,dernier) pivot := partitionner(t,premier, dernier,pivot) TriRapide(t,premier,pivot-1) TriRapide(t,pivot+1,dernier) end if Automates et Langages – Prépa Agreg – 2012/2013, 15 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Le Quick Sort Partitionner(tableau T, premier, dernier, pivot) échanger T[pivot] et T[dernier] j := premier for all i de premier à dernier - 1 do if T [i] < T [dernier ] then échanger T[i] et T[j] j := j + 1 end if échanger T[dernier] et T[j] end for renvoyer j Automates et Langages – Prépa Agreg – 2012/2013, 16 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Le quickSort Complexités La complexité au pire du Quick Sort est en O(n2 ) La complexité moyenne du Quick Sort est en O(n.log (n)) Automates et Langages – Prépa Agreg – 2012/2013, 17 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Conclusion Complexité moyenne Resolution de récurrence : CAmoy (n) = P ai .CAm oy (n − i) + C0 i∈1..n Encadrement : C1 (n) ≤ CAmoy (n) ≤ C2 (n) avec C1 (n) ∼ C2 (n) Identités remarquables et Combinatoire : Hn = Pn i=1 i= n X 1 1 ∼ ln(n) + γ + O( ) i n i=1 n(n+1) 2 n X i=0 xi = Pn i=1 i2 = (2n+1)(n+1)n 6 1 − x n+1 pour x 6= 1 1−x Automates et Langages – Prépa Agreg – 2012/2013, 18 Rappels Exemple 1 : Recherche dans un tableau Exemple 2 : Le Quick Sort Conclusion Conclusion La complexité moyenne: I Bien définir/ compter les entrées I tenir compte de la distribution des entrées I Un problème recherche en soi. Difficile I Peu d’exemples de cours I ... qu’il faut connaitre Automates et Langages – Prépa Agreg – 2012/2013, 19