Académique Documents
Professionnel Documents
Culture Documents
TD 2-ASD-Complixite
TD 2-ASD-Complixite
ASD – 2023/2024
Série de TD 2
Objectifs du TD 2 :
Etudier un algorithme pour comprendre son fonctionnement en analysant son code.
Puis déduire le pire des cas lors de l’exécution de l’algorithme (son déroulement).
Finalement estimer et calculer sa complexité dans le pire des cas (avec justification : voir cours :
chapitre 2).
Exercice 01
Analyser la complexité des algorithmes suivants en déterminant l’ordre du temps de calcul, pour chacun d’eux
(Justifiez clairement vos réponses)
Algorithme A, Algorithme B,
… …
Début Début
1. i0 1. i0
2. Tant que i < N faire 2. Tant que i <N faire
3. j1 3. jN
4. Tant que j <= N faire 4. Tant que j < =1 faire
5. jj+1 5. jj -2
Ftq ftq
6. ii+1 6. ii+1
Ftq ftq
Fin Fin
Exercice 02
Analyser les portions de codes suivantes pour :
- Comprendre le fonctionnement de l’algorithme A puis calculer sa complexité.
1
Exercice 3
Analysez la portion du code de l’algorithme A pour calculer sa complexité sachant que le coût de la fonction
Fonc (i, j) est (N). Justifiez clairement vos réponses et nommez l’algorithme A selon sa complexité.
Algorithme A
…….
Début
1. Pour i1 à N faire
2. ji
3. Tant que j ≤ N faire
4. C[j] Fonc(i, j)
5. j j +1
Fin Tant que
Fin Pour
Fin
Exercice 04
La recherche d’un élément E dans un tableau trié de N entiers, peut être effectuée par:
1. Un algorithme de recherche séquentielle (déjà traitée au TD 1).
2. ou un algorithme de recherche dichotomique (à développer) .
On s'intéresse à déterminer et comparer la complexité des deux algorithmes recherche.
Exercice 05
Evaluer la complexité maximale (au pire des cas: Algorithme Tri-a-Bulles,
T[j-1] > T[j] toujours vérifiée) du morceau de ………………
Début
code suivant: 1. Pour i← n à 1 faire
2. Pour j←2 à i faire
3. Si Tab[j-1] > Tab[j] alors
4. temp ←Tab[j-1] ;
5. Tab[j-1] ← Tab[j] ;
6. Tab[j] ← temp
Finsi
Finpour
Finpour
Fin
Exercice 6 :
Nous revenons vers le problème traité en TP 2, celui des nombres premiers, il s’agissait de :
1. Proposer un algorithme, puis le programme Java correspondant, qui détermine les M (Exp : M= 100)
premiers nombres premiers, en utilisant une fonction itérative Premier (N).
2. Puis d’optimiser (au maximum) la fonction itérative Premier (N) ?
3. Maintenant, nous vous demandons d’analyser et estimer les complexités des solutions optimisées de la
fonction itérative Premier (N), puis déterminer la meilleure solution en termes d’efficacité.
4. Finalement, analyser la complexité de l’algorithme 100-premiers-nombres-premiers, que déduisez vous.