1
Analyse asymptotique
et Calcul de coût
Sources : Mario Marchand, Alexandre Meyer, Maxime Crochemore,
Éric Fimbel, Chrisitine Froidevaux & Al., Thomas Cormen & Al.
Algorithmique avancée
Hervé Blanchon
IUT 2 – Département Informatique
Université Pierre Mendès France
2
Analyse d’une fonction
!Analyse détaillée d’un algorithme:
"Avantage : Très précise
"Désavantage : Long à calculer
Solution
!Analyse asymptotique du comportement de l’algorithme lorsque le(s)
paramètre(s) de l’algorithme tendent vers l’infini :
"Avantage : Facile à calculer
"Désavantage : Moins précis, mais donne une idée précise de la classe
de l’algorithme
Rappel mathématique : limite d’une fonction à +∞"
!On se contente ici d’une définition « intuitive » (on ne présente pas ici la
notion mathématique de limite)
!Dit simplement, on s’intéresse à la valeur l de de la fonction f(n) lorsque n
devient arbitrairement grand – soit lorsque n tend vers l’infini ; ce que l’on
note n+.
!Cela se note :
qui se lit : l est la limite de f(n) lorsque n tend vers +
3
lim
n+f(n)=l
Rappel mathématique : limite d’une fonction à +
!Limite finie
"Dire que la fonction f admet la limite finie l en + revient à dire que
f(n) se rapproche de l à mesure que n grandit (ou « tend vers plus
l'infini »)
!Exemples
4
lim
n+
1
n
$
%
& '
(
) =0
lim
n+
3n2+6n+4
n2+3
$
%
&
'
(
) =lim
n+
3+6n+4n2
1+3n2
$
%
&
'
(
) =3+0+0
1+0
$
%
& '
(
) =3
lim
n+
3n2+6n+4
n3+3
$
%
&
'
(
) =lim
n+
3n+6n2+4n3
1+3n3
$
%
&
'
(
) =0+0+0
1+0
$
%
& '
(
) =0
Rappel mathématique : limite d’une fonction à +
!Limite infinie
"L'idée intuitive d'une limite infinie est que pour n suffisamment grand,
f(n) peut devenir aussi grand que l'on veut
!Exemples
5
lim
n+
n
( )
= +
lim
n+
3n2+6n+4
n+3
$
%
&
'
(
) =lim
n+
3n+6+4n
1+3n
$
%
&
'
(
) =lim
n+
3n+6+0
1+0
$
%
& '
(
) = +
lim
n+
3n3+6n+4
n2+3
$
%
&
'
(
) =lim
n+
3n+6n+4n2
1+3n2
$
%
&
'
(
) =lim
n+
3n+0+0
1+0
$
%
& '
(
) = +
6
Notation-Ο (grand oh)
!Détermine une borne supérieure
!Définition formelle : f(n) = Ο(g(n)) s’il existe deux constantes positives n0 et
c telles que
"f(n) cg(n) pour tout n>n0
!En d’autres termes
"cg(n) majore f(n)
Notation-Ο (Calcul analytique)
!Étant données deux fonctions f(n) et g(n), f(n) = Ο(g(n)) ssi:
" c0, n, f(n) / g(n) c
!Exemple
"f(n) = 3n2+6n+4 et g(n) = n3+3
limn+ f(n) / g(n) = 0
donc 3n2+6n+4 est Ο(n3+3)
!On dit « f(g) est en grand oh de g(n) » (cg(n) majore f(n))
7
lim
n+
f(n)
g(n)
$
%
&
'
(
) ∈ ℜ+ {+=[0,+[}
8
Notation-Ο (Analyse d’un algorithme)
!On utilise la notation Ο pour décrire le pire des cas et on cherche une
fonction simple qui décrit le comportement de l’algorithme dans le pire cas.
"Exemples : Ο(n), Ο(n2), Ο(log n)
!L’analyse est simplifiée selon les règles suivantes :
"Seul le monôme avec le degré le plus élevé est conservé
"Les constantes multiplicatives sont éliminées
!Exemple :
"si dans le pire des cas f(n) = 3n2+5n+4
f(n) = Ο(n2)
"en effet
lim
n+
3n2+5n+4
n2
$
%
&
'
(
) =lim
n+
3+5
n+4
n2
$
%
& '
(
) =3+0+0=3
Notation-Ο (Analyse d’un algorithme)
!Exemples
"3n2 100n + 6 = Ο(n2)
!car 3n2 > 3n2 100n + 6
"3n2 100n + 6 = Ο(n3)
!0,01n3 > 3n2 100n + 6
"3n2 100n + 6 Ο(n)
!c × n < 3n2 lorsque n > c
À vérifier vous-même en calculant la limite de la
division de f(n) par g(n) !
9
Rappel mathématique : sommes
!Sommes arithmétiques
10
i=n(n+1)
2
i=1
n
i=(sup inf +1)(sup +inf )
2
i=inf
sup
Rappel mathématique : sommes
!Sommes arithmétiques avec changement de variable
11
(i1) =
i=2
n
i1
i=2
n
i=2
n
ou avec changement de variable (i1) k
(i1) =
i=2
n
k
k=1
n1
=(n11+1)(n1+1)
2=(n1)n
2
Rappel mathématique : sommes
!Sommes géométriques
12
2i=2n+11
i=0
n
Démonstration :
Eq1: Sn=ri=
i=0
n
1+r+r2+ … + rn
On multiplie les deux côtés de Eq1 par r :
Eq2 : rSn=r+r2+ … + rn+1
On soustrait Eq1 de Eq2 :
Eq3 : (r1)Sn=(r+r2+ … + rn+1)(1+r+r2+ … + rn)
Eq3': (r1)Sn=rn+11
Donc : Sn=rn+11
r1
Nombre exact d’exécutions
(pire des cas)
Analyse
asymptotique
InsertionSort( T[ 1.. N ] )
pour i 2 à N Ο(N)
key T[i] Ο(N)
j i!1!Ο(N)
tant que j > 0 et T[j]>key!Ο(N2)
T[j+1] T[j]!Ο(N2)
j j!1!Ο(N2)
T[j+1] key !Ο(N)
13
Notation-Ο (Analyse d’un algorithme)
i=(N1)(N+2)
2
i=2
N
(i1) =(N1)N
2
i=2
N
(i1) =(N1)N
2
i=2
N
N
1N
1N
T(N) = Ο(3N2+4N) = Ο(N2)
1N
14
Notation-Ω (grand oméga)"
!Détermine une borne inférieure
!Définition formelle : f(n) = Ω(g(n)) s’il existe deux constantes positives n0 et
c telles que
"cg(n) < f(n) pour tout n>n0
!En d’autres termes
"cg(n) minore f(n)
Notation-Ω (Calcul analytique)
!Étant données deux fonctions f(n) et g(n), f(n) = Ω(g(n)) ssi:
" b0, n, f(n) / g(n) b
!Exemple
"f(n) = 3n2+6n+4 et g(n) = n+3
limn+ f(n) / g(n) = +
donc 3n2+6n+4 est Ω(n+3)
!On dit « f(g) est en grand oméga de g(n) » (bg(n) minore f(n))
15
lim
n+
f(n)
g(n)
$
%
& '
(
) ∈ ℜ++
{ }
16
Notation-Ω (Analyse d’un algorithme)
!On utilise la notation Ω pour décrire le meilleur des cas et on cherche
une fonction simple qui décrit le comportement de l’algorithme dans le
meilleur des cas.
"Exemples : Ω(n), Ω(n2), Ω(log n)
!L’analyse est simplifiée selon les règles suivantes:
"Seul le monôme avec le degré le plus élevé est conservé
"Les constantes multiplicatives sont éliminées
!Exemple :
"si dans le meilleur des cas f(n) = 3n2+5n+4
f(n) = Ω(n)
"en effet
lim
n+
3n2+5n+4
n
$
%
&
'
(
) =lim
n+3n+5+4
n
$
%
& '
(
) =lim
n+(3n+5+0) = +
Notation-Ω (Analyse d’un algorithme)
!Exemples
"3n2 100n + 6 = Ω(n2)
!car 2,99n2 < 3n2 100n + 6
"3n2 100n + 6 Ω(n3)
!n3 > 3n2 100n + 6
"3n2 100n + 6 = Ω(n)
!101010n < 3n2 100n + 6
À vérifier vous-même en calculant la limite de la
division de f(n) par g(n) !
17
Nombre exact d’exécutions
(meilleur des cas)
Analyse
asymptotique
InsertionSort( T[ 1.. N ] )
pour i 2 à N Ω(N)
key T[i] Ω(N)
j i!1!Ω(N)
tant que j > 0 et T[j]>key!Ω(N)
T[j+1] T[j]! 0 Ω(1)
j j!1! 0 Ω(1)
T[j+1] key !Ω(N)
18
Notation-Ω (Analyse d’un algorithme)
T(N) = Ω(5N+2) = Ω(N)
1=N
i=2
N
1
N
1N
1N
1N
19
Notation-Θ (grand théta)"
!Relation d’équivalence
!Définition formelle : f(n) = Θ(g(n)) s’il existe trois constantes positives n0,c1
et c2 telles que
"c1g(n) f(n) c2g(n) pour tout n>n0
!En d’autres termes
"c1g(n) majore f(n)
et
"c2g(n) minore f(n)
Notation-Θ (Calcul analytique)
!Étant données deux fonctions f(n) et g(n), f(n) = Θ(g(n)) ssi:
" a,b0, n, a f(n) / g(n) b
!Exemple
"f(n) = 3n2+6n+4 et g(n) = n2+3
limn+ f(n) / g(n) = 3
donc 3n2+6n+4 est Θ(n3+3)
!On dit « f(g) est en grand thêta de g(n) » (g(n) majore et minore f(n))
!f(n) = Θ(g(n)) ssi f(n) = Ο(g(n)) et f(n) = Ω(g(n))
20
lim
n+
f(n)
g(n)
$
%
&
'
(
) ∈ ℜ+ {+= ]0,+[}
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !