3.6 KiB
Propriétés et caractéristiques d'un algorithme
Il est essentiel, pour un bon algorithme, de posséder certaines propriétés :
-
La terminaison : Votre algo doit donner un résultat en un nombre fini d'étapes et donc ne surtout pas rester coincé dans une boucle.
-
La validation : Votre algorithme doit amener au résultat attendu, peu importe la situation.
En plus de ces deux propriétés, on peut également citer le coût ou complexité :
- en temps : le nombre d'opérations nécessaires à son exécution
- en espace : la quantité d'espace mémoire nécessaire à son exécution
Ici, nous ne nous intéresserons uniquement qu'au coût en temps, la complexité temporelle.
Complexité d'un algorithme
On ne va pas vous demander de chronométrer l'exécution, mais plutôt de trouver l'ordre de grandeur.
Il s'agit de différencier les algorithmes selon un type de complexité : on va les grouper par familles.
Soit n la taille des données d'entrée, on notera la complexité d'un algorithme en fonction de n :
O(f(n))
On note O pour Ordre de grandeur
| Complexité | Notation | Temps pour n = 10 | Temps pour n = 1000 | Temps pour n = 106 |
|---|---|---|---|---|
| Constante | O(1) | 10 ns | 10 ns | 10 ns |
| Logarithmique | O(log(n)) | 10 ns | 30 ns | 60 ns |
| Linéaire | O(n) | 100 ns | 10 μs | 10 ms |
| Quadratique | O(n2) | 1 μs | 10 ms | 2,8 heures |
Pour comprendre la notion de complexité, utilisons l'exemple de tri de tableau : il s'agit d'un des cas les plus récurrents d'utilisation d'un algorithme. On a un tableau, contenant des élèments que l'on devra trier dans un ordre précis.
Si un algorithme met un temps donné pour trier un tableau de taille n, combien de temps lui faudra t-il pour trier un tableau 10 ou 100 fois plus grand ?
- La complexité d'un algorithme est une mesure du temps requis par l'algorithme pour accomplir sa tâche, en fonction de la taille des données à traiter.
- On dira d'un problème qu'il est aussi complexe que le meilleur algorithme connu pour le résoudre.
- Si la complexité est constante, alors le temps d'execution sera sensiblement toujours le même, peu importe la taille du tableau traité.
- Si elle est logarithmique, alors le temps d'execution augmente très faiblement quand le paramètre croit.
- Complexité linéaire : le nombre d'étapes à effectuer va varier en proportion directe de la taille de l'échantillon à traiter : si l'échantillon croît par un facteur de 10000, la complexité sera accrue elle aussi par un facteur de 10000.
- Complexité Quadratique : Dans le cadre du tri par insertion, par exemple, quand on double la taille du tableau, le nombre de comparaisons sera lui multiplié par...4.
Auteur : Florian Mathieu
Licence CC BY NC
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.