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.