Il n'y a pas une définition unifiée de ce qu'est un «algorithme plus rapide». Il n'y a pas d'organe directeur qui décide si un algorithme est plus rapide qu'un autre.
Pour expliquer pourquoi, je voudrais proposer deux scénarios différents qui illustrent ce concept trouble.
Le premier exemple est un algorithme qui recherche une liste chaînée de données non ordonnées. Si je peux faire la même opération avec un tableau, je n'ai aucun changement sur la grande mesure Oh de performance. Les deux recherches sont O (n). Si je regarde simplement les grandes valeurs Oh, je pourrais dire que je n'ai fait aucune amélioration. Cependant, il est connu que les recherches de tableaux sont plus rapides que de parcourir une liste chaînée dans la majorité des cas, donc on peut décider que cela a rendu un algorithme "plus rapide", même si le grand Oh n'a pas changé.
Si je peux utiliser l'exemple traditionnel de programmation d'un robot pour faire un sandwich PBJ, je peux montrer ce que je veux dire d'une autre manière. Considérez juste le point où l'on ouvre le pot de beurre d'arachide.
Pick up the jar
Grab the lid
Unscrew the lid
Contre
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Grab the lid
Unscrew the lid
Même dans le cadre théorique le plus académique auquel je puisse penser, vous constaterez que les gens acceptent que le premier algorithme soit plus rapide que le second, même si les résultats de la grande notation Oh sont les mêmes.
En revanche, nous pouvons considérer un algorithme pour briser le cryptage RSA. Pour l'instant, on perçoit que ce processus est probablement O (2 ^ n), où n est le nombre de bits. Considérons un nouvel algorithme qui s'exécute n ^ 100 plus rapidement. Cela signifie que mon nouveau processus s'exécute en O (2 ^ n / n ^ 100). Cependant, dans le monde de la cryptographie, une accélération polynomiale vers un algorithme exponentiel n'est traditionnellement pas considérée comme une accélération théorique. Lors de la réalisation de preuves de sécurité, il est supposé qu'un attaquant peut découvrir l'une de ces accélérations et que cela n'aura aucun effet.
Donc, dans une circonstance, nous pouvons changer un O (n) en O (n) et l'appeler plus rapidement. Dans une circonstance différente, nous pouvons changer un O (2 ^ n) en O (2 ^ n / n ^ 100), et affirmer qu'il n'y a eu aucune accélération significative du tout. C'est pourquoi je dis qu'il n'y a pas de définition unifiée pour un «algorithme plus rapide». Elle est toujours contextuellement dépendante.