L3 - Introduction à l’algorithmique (Année 2013/2014) F .Papadopoulos/B. Francesco/G. Lu-
carelli
TD1 et TD2- Premiers pas
Exercice 1. Complexité
Pour les algorithmes suivant, calculez leur complexité en fonction des différents paramètres.
AlgoA(n:entier) :
initialisation : i=0;
for (i== 0,in,i=i+ 2)do
afficher (i) ;
end
AlgoB(n:entier, m:entier) :
initialisation : i=0, j=0;
while (imet jn)do
ii+1 ;
jj+1 ;
end
AlgoC(n:entier, m:entier) :
initialisation : i=0, j=0;
while (imou jn)do
ii+1 ;
jj+1 ;
end
AlgoD(n:entier, m:entier) :
initialisation : i=0, j=0;
while (in)do
if jmthen
jj+1 ;
else
ii+1 ;
j1 ;
end
end
Exercice 2. Chebyshev
Chebyshev(n:entier ; x:entier) :
if n==0 then
retourner (1) ;
else
if n==1 then
retourner (x) ;
else
retourner (2*x*Chebyshev(n1,x)-Chebyshev(n2,x)) ;
end
end
1
1. Quel est le résultat de l’appel de Chebyshev(5,2) ? (détailler)
2. Pour tout yN, quel est le résultat de l’appel de Chebyshev(3,y) ?
3. Quelle est la complexité de cet algorithme ?
Exercice 3. Recherche séquentielle
On considère un tableau Tque l’on suppose trié par ordre croissant. On cherche une valeur clé
dans T(on suppose qu’il existe dans Tun élément dont la valeur est bien égal à clé et si plu-
sieurs élément de Tont a la même valeur, alors on cherche l’indice de la première occurrence
de clé).
1. Donner un algorithme itératif qui résout ce problème.
2. À quoi correspond le pire cas ? En déduire un complexité en Ode l’algorithme.
3. À quoi correspond le meilleur des cas ? En déduire un complexité en Θde l’algorithme.
4. Comment faut-il modifier cette algorithme si clé n’appartient pas forcément au tableau ?
Ceci modifie-t-il la complexité de notre algorithme?
Maintenant, nous supposons que clé apparaît exactement une fois dans le tableau et que toutes
les positions de clé dans le tableau sont équiprobables. Pour 1in,Iireprésente l’événe-
ment "clé apparait en position idu tableau T". Soit c(I)le nombre de comparaisons effectuées
pour l"événement I.
5. Montrer que c(Ii) = i. En déduire la complexité en moyenne de l’algorithme.
On suppose maintenant qu’il existe une probabilité 1q(avec 0q1) que clé n’apparaisse
pas dans T. On considère maintenant l’événement supplémentaire In+1 :"clé n’est pas dans le
tableau".
6. Montrer que c(In+1) = n. Pour tout 1in+ 1, calculer p(Ii), la probabilité de
l’événement i. En déduire la complexité en moyenne de l’algorithme.
Exercice 4. Comportements asymptotiques
1. Expliquer pourquoi l’affirmation "Le temps d’exécution est au moins en O(n2)"n’a pas de
sens ?
2. Peut-on écrire 2n+1 =O(2n)? Et 22n=O(2n)?
3. Donner les relations d’inclusions entre les ensembles suivants : O(nlog2(n)),O(2n),O(log2(n)),
O(1),O(n2),O(n3)et O(n).
4. Montrer que si f(n)O(g(n)) alors g(n)Ω(f(n)).
5. Montrer que si f(n)O(g(n)) alors f(n) + g(n)O(g(n)).
6. Montrer que f(n) + g(n)Θ(max(f(n), g(n))).
7. Montrer que O(f(n) + g(n)) = O(max(f(n), g(n))).
Exercice 5. Comportements asymptotiques des polynômes
Soit
P(n) =
d
X
i=0
aini
ad>0, un polynôme en nde degré d, et soit kune constante. Utiliser la définition des
notations asymptotiques pour démontrer les propriétés suivantes :
2
1. Si kdalors P(n) = O(nk).
2. Si kdalors P(n) = Ω(nk).
3. Si k=dalors P(n) = Θ(nk).
Exercice 6. Croissance asymptotiques relatives
Indiquer, pour chaque paire d’expression (A, B)du tableau ci-dessous, si Aest en O,ou Θ
de B. On suppose que k1et c > 1sont des constantes. Remplir le tableau suivant :
A B OΩ Θ
nkcn
2n2n/2
log(n!) log(nn)X
Exercice 7. secondes, minutes, heures, jours, mois, années, . . .
Considérons qu’un ordinateur exécute 106opérations par secondes. Calculer le temps d’exé-
cution d’algorithmes de complexité log2(n), n, n log2(n), n2, n3,2npour des entrées de taille
10,20,30 et 60.
Exercice 8. fontion d’Ackermann
La fonction d’Ackermann A:N×NNest définie comme suit pour tout m, n N:
A(m, n) =
n+ 1 si m= 0
A(m, n) = A(m1,1) si m > 0et n= 0
A(m, n) = A(m1, A(m, n 1)) si m > 0et n > 0
1. Montrer que pour tout nN, on a A(1, n) = n+ 2.
2. Calculer A(3,2).
3. Calculer A(4,4) (vous pouvez utiliser un ordinateur).
Exercice 9. Chercher la star
On reconnaît une star dans une soirée aux propriétés suivantes :
tout le monde est capable de la reconnaître ;
la star ne peut reconnaître personne.
L’objectif de ce problème est de trouver des algorithmes pour identifier les stars de la soirée.
Pour cela vous disposez de l’opération ijqui consiste à demander à la personne isi elle
connaît la personne j.
1. Combien de stars peut-il y avoir dans la même soirée ?
2. Proposez divers algorithmes pour ce problème et comparez leur complexité.
Exercice 10. Immeuble
Un immeuble est constitué de nétages. On dispose de kpots de fleurs. Il existe un étage itel
que j∈ {0, . . . , n}si on lâche un pot de fleurs de l’étage jalors :
si jialors le pot de fleur se casse en atterrissant ;
si j < i alors le pot de fleur résiste à chute.
L’objectif de ce problème est de trouver l’étage iavant de casser tous les pots de fleurs et en
minimisant le nombre de lâchers.
3
1. Montrer que si klog2(n)alors on peut identifier ien O(log2(n)) lâchers.
2. Montrer que si k < log2(n)alors on peut identifier ien O(k+n
2k1)lâchers.
3. Montrer que si k= 2 alors on peut identifier ien O(p(n)) lâchers.
4
1 / 4 100%