Complex It e
Complex It e
Complex It e
TD : Complexité
- Correction -
Exercice 1
On considère le programme suivant:
Def Algo(n):
for i in range(0,n):
Algo1(n)
Algo2(n)
Algo3(n)
Sachant que Algo1(n) s'effectue en temps O(log(n)),Algo2(n) en temps O(n)etAlgo3(n) en temps O(n2),
Quelle est la complexité de Algo(n)?
La boucle for exécute n fois une procédure qui coute O(log n), donc la boucle for coutera O(n.log n).
L’algorithme au total coutera donc : O(n.log n) + O(n) + O(n2).
Donc la complexité de Algo(n) est : O(n2).
Exercice 2 :
Quelle est la complexité du programme suivant :
def Algo(n):
res = 1;
for i in range(0,n):
res = res + i
for i in range(0,n):
for j in range(0,i):
res = res * (i+j)
return res
Calculons le nombre d’opérations : T(n).
T(n)= 2 + 2.n + ∑𝒏−𝟏 𝒊−𝟏
𝒊=𝟎 ∑𝒋=𝟎 𝟑
Exercice 3 :
Quelle est la complexité du programme suivant:
def f(x, n): C(0)= 1
if n < 1: O(1) C(n)= 1 + n + C(n/2)
return n
S = 0 Complexité : O(n)
for i in range(0,n): O(n)
S += x/(i+n)
1
Exercice 4
1- Que vaut la complexité de l'algorithme suivant:
i=1
while i <= n :
i=i*2
Complexité : O(log2(n))
Complexité : O(n)
Exercice 5
Soient les 3 fonctions suivantes permettant de calculer la valeur d'un polynôme.
p(x) = a0+a1x+a2x2+...+anxn
en un point x (c'est-à-dire pour une valeur x donnée).
Les coefficients du polynômes sont stockés dans une liste : A=[ a0, a1, a2..., an-1 , an]
def f1(A,x) :#méthode naïve
n =len(A)
p=A[0]
for i in range(1,n) :
p = p + A[i]* x**i
return p
x**i : n’est pas une opération élémentaire : son cout pour i allant de 1 à n = n(n+1)/2
T(n)=4+3n+(1+2+3…+n-1)
T(n)=4+3n+((n-1).n)/2
T(n)= (n2 +5n)/2 +4
Complexité : O(n2)
2
def f2(A,x) :# elle utilise le fait que xi = xi-1* x
n =len(A)
p=A[0]
q = 1
for i in range(1,n) :
q = q * x
p = p + A[i] * q
return p
T(n)= 4 +5(n-1)
T(n)= 5n-1
Complexité : O(n)
#algorithme de Horner ;
il calcule, DANS CET ORDRE, les valeurs de :an, anx+an-1, puis (anx+an-1) x + an-2, etc.
def f3(A,x) :# utilisant la méthode de Horner
n =len(A)
p = A[n-1] ;
for i in range(n-1,0,-1) :
p = p*x + A[i-1]
return p
T(n)= 4 +4(n-1)
T(n)= 4n+1
Complexité : O(n)
Exercice 6
1- Écrire une fonction qui prend un tableau d’entiers T en argument et renvoie le tableau des sommes
cumulées croissantes correspondantes, autrement dit un tableau S de même taille dont la k-ième
composante vaut :
𝑘
𝑆[𝑘] = ∑ 𝑡[𝑖]
𝑖=0
Correction :
1. Écrire une fonction nommée suite prenant n ∈ N en argument et renvoyant un.
return u
return s
4. Écrire une autre fonction qui renvoie les mêmes valeurs que mystere mais avec une meilleure complexité.