Home Cours algorithmique Complexité des algorithmes Introduction à la complexité - calculs simples
Bookmark and Share

Liens sponsorisés

Login Form



Introduction à la complexité - calculs simples Print E-mail
Written by Administrator   

1) Introduction:
La complexité des algorithmes est une notion qui nous renseigne sur le temps de l'éxécution de l'algorithmes. On distingue beaucoup de classes de complexité qu'on va essayer de voir et de détailler à travers des exemples. Il existe aussi la notion de complexité en mémoire que l'on ne va pas détailler dans ce cours, mais qui est très analogue et plus simple que la complexité temporelle qu'on va étudier

2) Un premier exemple:
Considérons un algorithmes simple de recherche de minimum dans un tableau t de taille n, notre programme s'écrit alors

 

min:=t[1];  
for i:=2 to n do
if min<t[i] then min:=t[i]

 Das cette boucle, on fait n-1 passages plus une instruction avant,

On tout donc cette algorithmes fait n opérations, on dit alors qu'il est de complexité linéaire et on note O(n)

 

Considérons maintenant l'algorithme de tri séléction que vous trouvez ici :

procedure TriSelection(n : integer ; var t : tab);
var i, j, min, tmp : integer;
begin
for i:=1 to n-1 do begin

min := i;

for j:=i+1 to n do
if (t[j] < t[min]) then min:=j;

if (i <> min) then begin

tmp := t[i];
t[i] := t[min];
t[min] := tmp;
end;
end;
end;

 Si on analyse cet algorithme on trouve que le nombre d'opérations est de n*(n-1)/2. On peut donc dire qu'il est en O(n²/2) mais vu qu'avec le notion de complexité on ne donne pas d'importance aux constantes et que la notation mathématique du O (domination), on écrit donc que l'algorithme est en O(n²) et on dit qu'il est de complexité quadratique.

 

Ainsi, nous avons vu les classes les plus simples de complexité : la complexité linéaire ou en O(n) et la complexité quandratique en O(n²). Ce type d'algorithme appartient en fait à une classe d'algorithme plus général qui a une complexité dite polynomiale donc en O(n^p).  On peut créer un exemple simple ayant cette complexité : typiquement p boucles imbriquées ayant chacune n itérations. Nous verrons dans les autres cours, des complexités plus complexes :)

 

 

 

Liens sponsorisés