No existe una definición unificada de lo que es un "algoritmo más rápido". No existe un órgano rector que decida si un algoritmo es más rápido que otro.
Para señalar por qué esto es así, me gustaría ofrecer dos escenarios diferentes que demuestren este concepto turbio.
El primer ejemplo es un algoritmo que busca en una lista vinculada de datos no ordenados. Si puedo hacer la misma operación con una matriz, no tengo ningún cambio en la gran medida de rendimiento de Oh. Ambas búsquedas son O (n). Si solo miro los grandes valores de Oh, podría decir que no hice ninguna mejora en absoluto. Sin embargo, se sabe que las búsquedas de matrices son más rápidas que recorrer una lista vinculada en la mayoría de los casos, por lo que uno puede decidir que eso hizo que un algoritmo sea "más rápido", a pesar de que el gran Oh no cambió.
Si puedo usar el ejemplo tradicional de programar un robot para hacer un sándwich PBJ, puedo mostrar lo que quiero decir de otra manera. Considere solo el punto donde uno está abriendo el frasco de mantequilla de maní.
Pick up the jar
Grab the lid
Unscrew the lid
Versus
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
Incluso en el entorno teórico más académico que se me ocurre, encontrará que las personas aceptan que el primer algoritmo es más rápido que el segundo, a pesar de que los grandes resultados de la notación Oh son los mismos.
Por el contrario, podemos considerar un algoritmo para romper el cifrado RSA. Por el momento, se percibe que este proceso es probablemente O (2 ^ n), donde n es el número de bits. Considere un nuevo algoritmo que se ejecuta n ^ 100 más rápido. Esto significa que mi nuevo proceso se ejecuta en O (2 ^ n / n ^ 100). Sin embargo, en el mundo de la criptografía, una aceleración polinómica a un algoritmo exponencial no se considera tradicionalmente como una aceleración teórica. Al hacer pruebas de seguridad, se supone que un atacante puede descubrir una de estas aceleraciones y que no tendrá ningún efecto.
Entonces, en una circunstancia, podemos cambiar un O (n) a O (n) y llamarlo más rápido. En una circunstancia diferente, podemos cambiar un O (2 ^ n) a O (2 ^ n / n ^ 100), y afirmar que no hubo una aceleración significativa en absoluto. Por eso digo que no hay una definición unificada para un "algoritmo más rápido". Siempre depende del contexto.