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:
" ∃ c≥0, ∀∞ 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
€
(i−1) =
i=2
n
∑i−1
i=2
n
∑
i=2
n
∑
ou avec changement de variable (i−1) →k
(i−1) =
i=2
n
∑k
k=1
n−1
∑=(n−1−1+1)(n−1+1)
2=(n−1)n
2
Rappel mathématique : sommes
! Sommes géométriques
12
€
2i=2n+1−1
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 : (r−1)Sn=(r+r2+ … + rn+1)−(1+r+r2+ … + rn)
Eq3': (r−1)Sn=rn+1−1
Donc : Sn=rn+1−1
r−1
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=(N−1)(N+2)
2
i=2
N
∑
€
(i−1) =(N−1)N
2
i=2
N
∑
€
(i−1) =(N−1)N
2
i=2
N
∑
€
N
1−N
1−N
T(N) = Ο(3N2+4N) = Ο(N2)
1−N
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:
" ∃ b≥0, ∀∞ 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
1−N
1−N
1−N
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,b≥0, ∀∞ 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 l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!