Universit´e de Provence Algorithmique et
Licence Math-Info Programmation en Python
Premi`ere Ann´ee
V. Phan Luong
Cours 5 : Notions d’Algorithme et de Complexit´e
1 G´en´eralit´e
Un algorithme est une m´ethode effective pour r´esoudre un probl`eme. Par les termes
“m´ethode effective” on s’entend que la m´ethode peut r´eellement r´esoudre le probl`eme
en un nombre fini d’op´erations dont l’ex´ecution peut se faire en un temps fini. La
sp´ecification d’un algorithme se faire d’abord par la sp´ecification formelle du probl`eme
qu’il r´esoudre, suivie d’une m´ethode qu’il adopte pour r´esoudre le probl`eme.
Il faut bien analyser le probl`eme pour le comprendre et d´eterminer les donn´ees essentielles
du probl`eme et ce que l’on cherche comme solution. Les donn´ees essentielles du probl`eme
constituent ce que l’on appelle l’entr´ee de l’algorithme. Ce que cherche le probl`eme
constitue la sortie de l’algorithme.
Par exemple, le probl`eme de calculer le pgcd de deux entiers naturels a pour l’entr´ee les
deux entiers et la sortie le plus grand commun diviseur de ces deux entiers.
La m´ethode de r´esolution est sp´ecifi´ee en un nombre fini d’´etapes dont chacune ex´ecute
une op´eration bien connue et finie pour assurer que chaque ´etape termine et que l’algo-
rithme termine en un temps fini. Une bonne connaissance du domaine d’application est
n´ecessaire pour pouvoir sp´ecifier une m´ethode de r´esolution d’un probl`eme `a r´esoudre.
Un algorithme est efficace si sa m´ethode de r´esolution optimise l’espace de m´emoire
et le temps de calcul pour r´esoudre le probl`eme. L’efficacit´e est estim´ee par la no-
tion de complexit´e. On a donc la complexit´e en espace de m´emoire et la complexit´e
en temps d’ex´ecution. Ces complexit´es sont estim´ees en fonction de la grandeur des
donn´ees d’entr´ee du probl`eme. Dans l’ordre de plus efficace au moins efficace, on peut
citer les algorithmes dont l’estimation est en fonction logarithme, lin´eaire, quadratique,
exponentielle de la grandeur des donn´ees d’entr´ee.
Pour estimer de mani`ere ind´ependante de tous ordinateurs, l’efficacit´e en temps d’ex´ecution
est calcul´ee en nombre d’op´erations de base de l’agorithme. Par exemple, pour un
1