Chapitre 1 - Algorithmique Et Complexitã©
Chapitre 1 - Algorithmique Et Complexitã©
Chapitre 1 - Algorithmique Et Complexitã©
complexité
1
1. Introduction
Un algorithme est une suite finie d’opérations
élémentaires constituant un schéma de calcul ou de
résolution d’un problème.
Le temps d’exécution d’un algorithme dépend des
facteurs suivants :
• Les données du programme: généralement lorsque
la taille des données traités par le programme
augmente son temps d’exécution augmente aussi.
Exemple: le tri d’un tableau de 10 éléments prend
un temps inferieur au temps du tri d’un tableau de
100 éléments.
• La qualité du compilateur (langage utilisé):
Exemples:
- Dans le cas de tri d’un tableau, N est le nombre d’éléments
du tableau.
- Dans le cas de calcul d’un terme d’une suite, N est l’indice
du terme
- Dans le cas de calcule de la somme des éléments d’une
matrice de n*m éléments, la taille de données est n*m.
4
2. Notion de complexité
Objectif
On cherche à mesurer la complexité d’un
algorithme indépendamment de la machine et du
langage utilisés, c-à-d uniquement en fonction de
la taille des données N que l’algorithme doit traiter.
L’objectif est donc de trouver la fonction (f(N), C(N)
…) qui exprime le nombre d’opérations effectuées
par l’algorithme en fonction de la taille de données
N.
Exemple:
F(n) = 3n+6
C(n)= 4n2
5
2. Notion de complexité
Exemple 1:
Algorithme: somme
Cet algorithme calcule la somme des N
N, i, S : entier premiers entiers.
La taille des données est N.
Début
L’algorithme somme effectue:
i 1;
S 0; 2 affectations ( i 1, S0))
N + 1 comparaison ( i<=N);
Tantque i <=N faire
N additions (s+i);
S S+i; N affectations (S S+i);
N additions (i+1);
i i+1;
N affectations (ii+1);
Fintantque
Ecrire (s);
1 affichage (écrire (s)):
fin
6
5N+4 opérations élémentaires
f(n) = 5N+4
2. Notion de complexité
10
3. Règles de calcul de la complexité d’un
algorithme
11
4. Complexité des algorithme récursive
début
Op1
Si n=0 alors
retourneOp2
1;
Sinon
Op3 Op4 Op5
retourne (n* factorielle(n-1))
fin si
fin
12
4. Complexité des algorithme récursive
Donc
13 la complexité de la fonction factorielle est en O(n).
4. Complexité des algorithme récursive
Exercice:
Soit la fonction produit suivante qui calcule le
produit x*a. Evaluer sa complexité.
fonction produit(x, a :entier): entier
début
Si a=0 alors
retourne 0;
Sinon
Si a=1 alors
retourne x;
Sinon
retourne (x+ produit(x, a-1))
fin si
fin si
fin
14
5. Complexité au mieux et au pire
16
5. Complexité au mieux et au pire
Exemple:
Soit la fonction f(n) qui représente le temps
d’exécution d’un programme P. f (n) = n3 +
3n + 6
si n=10 et c=2 on obtient:
21
7. Classes de complexité algorithmique
Les temps d’exécution selon la taille de donnée.
NB: chiffres pour une machine pouvant effectuer 106 opérations par
seconde
22