Td1 Complexite
Td1 Complexite
Exercice 1
Remplir les deux tableaux ci-dessous :
Exercice 2
Quel est le temps d’exécution (asymptotique) de chacun des algorithmes suivants, en fonction
de n ? Justifiez vos réponses.
a)
for i = 1 to n do
TD N°1 – Complexite 1
for j = 1 to 2n + 1 do
print (« Hello World)
end for
end for
b)
for i = 1 to 10 do
for j = 1 to n do
print (« Hello World »)
end for
end for
c)
for i = 1 to n do
for j = i to n do
print (« Hello World »)
end for
end for
d)
for i = 1 to n do
for j = 1 to 2 ∗ i + 1 do
print (« Hello World »)
end for
end for
e)
for i = 1 to n ∗ n do
for j = 1 to i do
print (« Hello World »)
end for
end for
f)
for (i = 0 to m) do
t ← 1
while (t < m) do
print (« Hello world »)
t ← t ∗ 2
end while
end for
Exercice 3
Soient TA(n), TB(n) et TC(n) les temps d’éxecution des algorithmes A, B et C, respectivement.
Instruction A
if (n < 100) then
Instruction B
else
for (j = 1 to n) do
Instruction C
end for
end if
TD N°1 – Complexite 2
Quelle est la durée d’exécution de cet algorithme, sous chacun des ensembles d’hypothèses
suivants ? Justifiez vos réponses.
1.TA(n) = O(n), TB(n) = O(n2) et TC(n) = O(log n).
2.TA(n) = O(n2), TB(n) = O(n2) et TC(n) = O(log n).
3.TA(n) = O(n2), TB(n) = O(n3) et TC(n) = O(log n).
Exercice 4
Quelle est la complexité, dans le pire des cas, de chacun des fragments de code suivants ?
Deux boucles d’affilée :
for (i = 0; i < N; i++) {
sequence of statements}
for (j = 0; j < M; j++) {
sequence of statements}
Comment la complexité changerait-elle si la deuxième boucle passait à N au lieu de M ?
Une boucle imbriquée suivie d’une boucle non imbriquée :
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
sequence of statements
}}
for (k = 0; k < N; k++) {
sequence of statements}
Une boucle imbriquée dans laquelle le nombre d’exécutions de la boucle interne dépend de la
valeur de l’index de la boucle externe :
for (i = 0; i < N; i++) {
for (j = N; j > i; j–) {
sequence of statements
}}
Exercice 5
TD N°1 – Complexite 3