Académique Documents
Professionnel Documents
Culture Documents
contradiction.
d) 2n2 ∗ 2n + n2 logn = Θ(n2 ∗ 2n ) Vrai car :
c1 ∗ n2 ∗ 2n ≤ 2n2 ∗ 2n + n2 logn ≤ c2 ∗ 2n2 ∗ 2n
D’une part c1 ∗n2 ∗2n ≤ 2n2 ∗2n +n2 logn évident, et c1 = 2. D’autre part n2 ∗lon < n2 ∗2n
pour n ≥ 2.
Donc 2n2 ∗ 2n + n2 logn ≤ 3 ∗ 2n2 ∗ 2n ; donc c1 = 2, c2 = 3, n0 = 2.
e) Résoudre :
(
1 si n = 1
T (n) =
7 ∗ T (n/2) si n > 1
T (n) = 7 ∗ T (n/2)
7 ∗ 7 ∗ T ( 2n2 )
7 ∗ 7 ∗ 7 ∗ T ( 2n3 )
...
7k ∗ T ( 2nk )
k
On pose n = 2k , =⇒ logn = k ∗ log2, donc k = log2 n. D’où T (n) = 7k ∗ T ( 22k ) = 7k
T (n) = Θ(7log2 n ) = Θ(nlog2 7 ). Comme log2 7 = 2.81 donc T (n) > n2 .
Exercice 2.- Soit S[1..n] un tableau d’entiers et x un entier donné. Écrire un algorithme qui permet
de vérifier s’il existe ou non dans S deux entiers x1 , x2 tels que x = x1 + x2 .
a) Algorithme naı̈f
finFonction;
USTHB Licence Informatique 2ème année Algo (sections: B, C) - N. Bensaou, C. Ighilaza 2
pour i = 1 à n faire
x2 = x - S[i];
si (recherDicho (S, x2) == 1) alors retourner 1;
fsi;
finPour;
retourner 0;
Pour i =2 à n faire
si A[i] == A[i-1] alors freq ++;
si freq > freqMax alors freqMax = freq;
M= A[i];
sinon freq =1;
fsi
fsi;
finPour;
finProcédure;
b) Invariant :
”à la fin de la k-ème itération il existe 1 <= j <= k tel que Mk = A[j] et f reqM axk =
max(f reqj )”
c) Complexité : Complexité : Θ(n) car le tableau est parcouru entièrement...
USTHB Licence Informatique 2ème année Algo (sections: B, C) - N. Bensaou, C. Ighilaza 3
d) Validité : La terminaison est évidente (l’algorithme consiste en une boucle finie qui
termine quand i = n).
La consistence : par récurrence sur k. (cf. validité d’un algorithme de recherche du
maximum dans un tableau).
e) Procédure récursive
Si i<n Alors
Si A[i] = A[i-1] Alors freq ++
Si freq > freqMax Alors freqMax = freq
Sinon freq =1;
fsi
MaxFreqRec (A, i+1, n)
fsi
fsi
finProcedure