chap1algo-avan - WordPress.com

publicité
Université Abou Bakr Belkaid
Faculté des Sciences
Département d’informatique
Algorithmique Avancée et Complexité
Chap1:Introduction
RSD -GL
2015-2016
1
 Définition d’un Algorithme: Un algorithme est
suite finie d’opérations élémentaires constituant
un schéma de calcul ou de résolution d’un
problème.
• Pour résoudre informatiquement un problème
donné, on implante donc un algorithme sur
un ordinateur.
• Mais, pour un problème donné, il existe bien
souvent plusieurs algorithmes.
2
• Il existe des problèmes pour lesquels on a des algorithmes,
mais qui restent comme «!informatiquement non résolus!».
• C’est parce que  temps d’exécution sont trop long
• On cherche alors des méthodes pour abaisser ces temps
de calcul.
 Double problématique de l’algorithmique :
1. Trouver une méthode de résolution du problème.
2. Trouver une méthode efficace.
(Savoir résoudre un problème est une chose, le résoudre
efficacement en est une autre)
3
Le temps d’exécution du programme dépend :
– des données du problème
– de la qualité du code engendré par le compilateur
– efficacité de l’ordinateur
– de l’efficacité de l’algorithme
– … et aussi de la qualité de la programmation
Le Calcul de la complexité se fait indépendamment des caractéristiques
techniques des ordinateurs Car les ordinateurs progressent de jour en jour.
Donc
• On cherche une grandeur n pour «!quantifier!» les entrées.
• On calcule les performances uniquement en fonction de n.
xn
1: (Algorithme trivial)
Exemple: Calcul de
Algorithme
Y=x
Pour i=2 à n faire
Y=Y*x
Renvoyer(Y)
Coût: n-1 multiplications
5
Algorithme 2 (méthode binaire)
1. Écrire n sous forme binaire
2. Remplacer chaque :
– « 1 » par la paire de lettres « SX » ;
– « 0 » par la lettre « S ».
3. Éliminer la paire « SX » la plus à gauche.
4. Résultat : un mode de calcul de xn où
– S signifie « élever au carré »;
– X signifie « multiplier par x ».
Le tout en partant de x.
6
Calcul X23
1.
n = 10111
1
0
1
2.
SX
3.
1
1
S
SX
SX
SX
S
SX
SX
SX
4. Partons de x on aura :
x2, x4, x5, x10, x11, x22, x23.
Coût: 7 multiplications au lieu de 22 !
7
Complexité (coût)
[log2 n] ≤ Θ(n) ≤ 2[log2 n].
Pour n = 1000:
L’algorithme trivial effectue 999
multiplications,
L’algorithme binaire moins de 20.
8
Conclusion
Un bon algorithme doit faire
exactement ce qu’on lui demande
avec moins d’effort.
Téléchargement