Algorithmique et efficacité
Un petit survol grâce au “problème du nombre manquant”
Olivier.Delgrange@umons.ac.be
Service d’Informatique Théorique
31 mars 2011
Journée Math-Sciences
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Contenu
1Qu’est-ce que l’algorithmique ?
2Efficacité d’un algorithme
3Problème du nombre manquant
4Conclusion
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 2 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Qu’est-ce que l’algorithmique ? - 1
Algorithmique : Science de la conception et de l’étude d’algorithmes
Algorithme
Un algorithme est une séquence d’instructions simples (éventuellement répétitives) qu’il “suffit” d’exécuter
pour résoudre un problème bien formulé.
Un problème est spécifié par ses données (les entrées ou input) et les résultats à produire (les sorties ou
output).
Un algorithme peut donc être vu comme une “méthode transformant les entrées en sorties.
Un problème bien formulé est précis et ne laisse aucune possibilité d’interprétation incorrecte.
Problème : calcul du PGCD de deux nombres entiers aet b, avec a,b>0
Exemple : pgcd(253,2231) = 23 =253
2231 =11×23
97×23 =11
97
ENTRÉES : deux entiers a,bavec a,b>0
SORTIE : le plus grand entier ctel que cdivise aet cdivise b.
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 3 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Qu’est-ce que l’algorithmique ? - 2
Un algorithme répète des étapes simples et exploite des propriétés
Soit xmod yle reste de la division de xpar y, avec x,yentiers ; y>0 et x0.
Propriété mathématique
Supposons ab>0 (cas symétrique si ba>0)
Si amod b=0pgcd(a,b) = b
Si amod b=r>0pgcd(a,b) = pgcd(b,r)
Algorithme de résolution (algorithme d’Euclide)
PGCD(a,b)
1ramod b
2TantQue r6=0
3Faire ab
4br
5ramod b
6Retourner b
L’algorithme se termine toujours !
Par définition du reste de la division, (amod b)<b.
rfinit toujours par devenir égal à 0 ! ! !
Remarque : si a<balors la première étape réalise l’échange de aet b.
a b r
253 2231 253 2231 253 207 253 207 46 207 46 23 46 23 0
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 4 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Efficacité d’un algorithme - 1
Un programme est la mise en œuvre d’un algorithme sur ordinateur
Les performances d’un programme dépendent de plusieurs facteurs :
La vitesse de l’ordinateur sur lequel l’algorithme est mis en œuvre,
le langage de programmation utilisé pour sa mise en œuvre,
l’efficacité intrinsèque de l’algorithme !
Deux types d’efficacité d’un algorithme
Complexité en temps : Temps consommé par l’algorithme pour résoudre le problème.
Plus un algorithme est rapide, plus il est attractif !
Complexité en espace : Quantité de mémoire consommée par l’algorithme pour résoudre le
problème.
Moins un algorithme consomme de mémoire, plus il est attractif !
Très souvent, on sera amené à trouver un compromis entre la
consommation mémoire et le temps d’exécution.
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 6 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Efficacité d’un algorithme - 2
Comment évaluer le temps d’exécution ? ? ?
Utilisation du chronomètre : Arbitraire ! ! ! : cela dépend de l’ordinateur sur lequel l’algorithme est
implémenté, du langage utilisé, des autres tâches que l’ordinateur réalisait au
même moment...
Inacceptable pour juger de la qualité d’un algorithme !
On s’intéresse plutôt à l’évolution du temps d’exécution lorsque la taille du
problème grandit : on parle de la complexité en temps de l’algorithme.
Question : Si mon algorithme résout le problème P, de taille nen un temps Tsur mon
ordinateur, combien de temps faudra t’il à mon algorithme pour résoudre une
instance deux fois plus grosse du même problème (de taille 2n), sur le même
ordinateur ? ? ?
Question : Si j’achète un ordinateur deux fois plus rapide, est-ce que mon algorithme
résoudra un problème deux fois plus gros dans le même temps ?
Réponse : Tout cela dépend de la complexité en temps de l’algorithme ! ! !
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 7 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Efficacité d’un algorithme - 3
Comment évaluer la consommation mémoire ? ? ?
Comptage précis du nombre de cases mémoires élémentaires nécessaires : tâche fastidieuse, de
plus ce nombre dépend du langage de programmation utilisé !
Inacceptable pour juger de la qualité d’un algorithme !
On s’intéresse plutôt à l’évolution de la consommation mémoire lorsque la taille
du problème grandit : on parle de la complexité en espace de l’algorithme.
Question : Si mon algorithme résout le problème P, de taille nen un espace Msur mon
ordinateur, combien d’espace faudra t’il à mon algorithme pour résoudre une
instance deux fois plus grosse du même problème (de taille 2n), sur le même
ordinateur ? ? ?
Question : Si j’achète un ordinateur avec deux fois plus de mémoire, est-ce que mon
algorithme parviendra à résoudre un problème deux fois plus gros ?
Réponse : Tout cela dépend de la complexité en espace de l’algorithme ! ! !
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 8 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Efficacité d’un algorithme - 4
Complexités dans le pire des cas
Comptage du nombre d’opérations de l’algorithme
Le nombre total d’opérations exécutées par l’algorithme est un attribut de l’algorithme et non de
l’ordinateur sur lequel on exécute le programme.
Il est très difficile de compter précisément le nombre d’instructions effectuées par un algorithme.
La plupart des algorithmes effectuent un nombre variable d’opérations selon les données qu’ils reçoivent
en entrée.
Si nous pouvons évaluer le nombre d’opérations réalisées par un algorithme, nous serons en mesure de
comparer les performances en temps de plusieurs algorithmes pour le même problème.
Tentons de comprendre la croissance du nombre maximal d’opérations effectuées lorsque la taille du
problème grandit.
=Complexité en temps dans le pire des cas :
Borne supérieure du nombre d’étapes par rapport à la taille du problème.
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 9 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Efficacité d’un algorithme - 5
Complexités dans le pire des cas
Comptage de la mémoire nécessaire à l’exécution de l’algorithme
Si nous pouvons évaluer la quantité mémoire nécessaire à l’éxécution d’un algorithme, nous serons en
mesure de comparer les performances en espace de plusieurs algorithmes pour le même problème.
Tentons de comprendre la croissance de la mémoire maximale lorsque la taille du problème grandit.
=Complexité en espace dans le pire des cas :
Borne supérieure de la quantité mémoire par rapport à la taille du problème.
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 10 / 30
Qu’est-ce que l’algorithmique ? Efficacité d’un algorithme Problème du nombre manquant Conclusion
Efficacité d’un algorithme - 6
Notation en O(...)
Exemple comparatif
Supposons que l’on soit confronté à un problème P de taille n.
Un algorithme Arésout le problème Pen effectuant 11n3opérations.
Un algorithme Brésout le problème Pen effectuant 99n2+7 opérations.
Entre Aet B, quel est le plus rapide des 2 ? ? ?
Bien que Asoit plus rapide pour n<10, Bdevient plus rapide pour n10.
Puisque n3est de “croissance plus rapide” que n2,les constantes 11,99,7 n’affectent pas la compétition
entre Aet Blorsque ngrandit.
O. Delgrange (UMONS) Algorithmique et efficacité 31 mars 2011 11 / 30
1 / 14 100%