Complexité Moyenne

publicité
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
Téléchargement