Analyse de la Complexité des Algorithmes: Exercices et Exemples, Exercises of Algorithms and Programming

algorithme et programmation et exercices

Typology: Exercises

2020/2021

Uploaded on 05/18/2021

wesswess
wesswess 🇹🇳

5

(2)

4 documents

1 / 9

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
9
Exercice :
Calculer les nombres de Fibonacci récursivement.
Les nombres de Fibonacci sont définis récursivement par :
F0 = 0
F1 = 1
Fi = F +F pour i >=2
Solution :
Algorithme Fibo(k)
Entrées: Une entier k >= 0
Sortie: Fk
Si k = 0 ou 1 alors retourner (k)
sinon retourner Fibo(k-1) + Fibo(k-2)
Fin si
II. Complexité
1. Définitions
Algorithme :
Un algorithme est une séquence (suite) s de calcul qui transforment un ensemble de
valeurs d
Complexité d un algorithme :
est le nombre d opérations élémentaires qu doit effectuer pour mener à bien
un calcul en fonction de la taille des données d entrée.
Complexité d un problème :
La complexité d un problème est la complexité du meilleur algorithme qui résout ce
problème.
du temps de calcul en fonction
du nombre des données.
Nous avons donc deux éléments à prendre en compte :
pf3
pf4
pf5
pf8
pf9

Partial preview of the text

Download Analyse de la Complexité des Algorithmes: Exercices et Exemples and more Exercises Algorithms and Programming in PDF only on Docsity!

Exercice : Calculer les nombres de Fibonacci récursivement. Les nombres de Fibonacci sont définis récursivement par : F 0 = 0 F 1 = 1 Fi = F +F pour i >= Solution : Algorithme Fibo(k) Entrées: Une entier k >= 0 Sortie: Fk Si k = 0 ou 1 alors retourner (k) sinon retourner Fibo(k-1) + Fibo(k-2) Fin si II. Complexité

  1. Définitions Algorithme : Un algorithme est une séquence (suite) s de calcul qui transforment un ensemble de valeurs d Complexité d un algorithme : est le nombre d opérations élémentaires qu doit effectuer pour mener à bien un calcul en fonction de la taille des données d entrée. Complexité d un problème : La complexité d un problème est la complexité du meilleur algorithme qui résout ce problème. du temps de calcul en fonction du nombre des données. Nous avons donc deux éléments à prendre en compte :

La taille des données. Le temps de calcul. Pour connaitre le temps de calcul, nous calculons le nombre d opérations fondamentales exécutées par l algorithme.

Séquence: T( n)= Ti(n) Alternative : Si C alors J Sinon K Fin si T (n)=TC( n)+max {TJ(n) ,TK(n)} Itération bornée : Pour i de j à k faire B Fin pour T(n)=(k j+1)* TB(n) Itération non bornée : Tant que C faire B Fin Tant que T(n)=Nbboucles * (TB(n)+ TC(n)) + TC(n) Répéter B C T (n)=Nbboucles *( TB(n)+ TC(n)) Exemple : multiplication de deux matrices : entrée : deux matrices A, B n n sortie : matrice C n n n n n

Au pire des cas : La complexité de tri à bulle est O(n²).

  1. Classes de complexité Les classes fréquentes de complexité sont :

Exercice : Entrée : un tableau de nombres T de taille n Sortie : un nombre s s = 0 Pour i de 1 à n faire s = s + T[i] retourner s

  1. Montrer que la complexité de cet algorithme est linéaire.
  2. Réécrire la boucle «pour» en une boucle «tant que». Exercice :
    1. Écrire un algorithme qui prend en paramètre un nombre a et un entier positif ou nul n et qui retourne an.
    2. Quel est la complexité de?
    3. : Entrée : un nombre a et un entier positif n Sortie : p n2 n; a2i a; res 1 Tant que n2 > 0 faire Si n2 mod 2 = 1 alors res resa2i Fin si n2 n2 / 2 a2i a2ia2i fint tant que retourner res
    4. Montrer que pour tout i, à la fin de ème étape de la boucle on a : a2i = a2i an^ = res * a2in2^ :
    5. Que retourne?

Notation de Landau ou O. La notation O est utilisée pour indiquer la borne supérieure asymptotique Théorème :

  1. Notations o (petit o), (grand omega) et (grand theta) La notation o est utilisée pour indiquer que la borne supérieure n est pas asymptotiquement approchée. Nous disons pour f o(g) que f est un petit o de g et que f est négligeable devant g. Exemples : f(x) = 3x^5 x^4 + x^2 = f = o(x 6 ) au voisinage de + x^6 en + : (ln x) = o( ) en + : = o(e ax ) en + : = o(a x ), lorsque a > 1 La notation est utilisée pour indiquer la borne inferieure asymptotique. Soit g une fonction définie sur une partie des nombres réels. L ensemble (g) est défini ainsi : Exemple : 5n²+