Un algorithme est une procédure de calcul bien définie, qui prend en entrée une valeur, ou un ensemble de valeurs, et qui produit après un nombre fini d’opérations une valeur, ou un ensemble de valeurs.
Problèmes algorithmiques
2 sortes de problèmes :
- les problèmes de décision : répondre par oui ou non
- les problèmes d’optimisation : trouver la "meilleure" solution en fonction de données selon des critères bien définis. Chaque jeu de données fournit une instance du problème.
Algorithmes itératifs
Itération
Une itération est la répétition d’un bloc d’instructions dans un programme informatique. Par abus de langage, on limitera les itérations aux répétitions dans les structures de contrôle Tant que (while) et Pour (for).
Un algorithme itératif est un algorithme utilisant une ou plusieurs itérations
Exemple d’algorithme itératif
FONCTION : AlgoMul (E x : nombre, E n : entier) : nombreDÉBUT
y := 1 ;
pour i:=1 à n faire
y := y*x
fin pour;
Retourner : y
FIN
Etude d’un algorithme
Critères d’un bon algorithme
On mesure la qualité d’un algorithme selon 3 critères :
- Sa terminaison : est-ce que l’exécution de l’algorithme se termine ?
- Sa correction : est-ce que l’algorithme renvoie le bon résultat ?
- Sa complexité : est-ce que l’algorithme est efficace ? Nous évaluons ces trois critères sur l’exemple précédent.
Terminaison de l’algorithme AlgoMul
Correction d’un algorithme itératif
- on conjecture un invariant
- on le montre par récurrence sur le nombre d’itérations
- on l’écrit à la fin des itérations
- on en déduit le résultat de l’algorithme.
Correction de l’algorithme AlgoMul
- On conjecture l’invariant Invi : "Après i tours de boucle, yi = x^i "
- On le montre par récurrence sur i :
- Initialisation : pour i = 0, avant la boucle, y = 1 = x^0 donc Inv0 est vrai.
- Récurrence : supposons Invi vrai : après i tours de boucle, yi = x i . Alors au tour de boucle suivant, yi+1 = yi × x = x^i × x = x^(i+1). Invi+1 est vrai.
- Conclusion : l’invariant est vrai sur toutes les itérations
- A la fin des itérations, i = n et l’invariant devient yn = x^n .
- La valeur renvoyée par l’algorithme est bien x^n
Complexité de l’algorithme AlgoMul
- A(1, 6) = 2, A(2) = 2, A(r) = dr e partie entière supérieure de r
- Pour chaque itération, r − n > 0 donc dr e − n est un entier positif, qui décroît de 1 à chaque itération. Donc il y a un nombre fini d’itérations et l’algorithme s’arrête.
- Comme n augmente de 1 en 1, n est le plus petit entier tel que la condition du Tant que est fausse i.e. tel que n ≥ r. C’est donc [r]
Thème très important merci
RépondreSupprimer