Ahora que estoy dando análisis de algoritmos, me estoy dando cuenta de su gran importancia. Sabía que siempre es mejor realizar buenos algoritmos, o elegir el más adecuado, pero no le daba mucha importancia.
Por ejemplo tenes dos métodos muy populares de ordenamiento que son:
El InsertSort y el MergeSort.
Ahora le mostraré un ejemplo más practico en la vida real.
Supongamos que tenemos dos máquinas A y B
● A puede ejecutar 1.000.000.000 instrucciones por segundo
● B puede ejecutar 10.000.000 instrucciones por segundo
● c1 es 2(InsertSort ) y c2 es 50 (MergeSort) son constantes multiplicativas que varían dependiendo del compilador, lenguaje usado, etc
A simple vista diremos que la maquina A como ejecuta más instrucciones que la maquina B, irá más rápido. Pero la historia es diferente. Sigamos.
– El algoritmo de inserción toma alrededor de un tiempo de c1 (n2) en ordenar n items.
– El algoritmo de mezcla toma alrededor de un tiempo de c2 (n lg n) (asumir que lg es logaritmo base 2)
– c1 y c2 son factores constantes.
Se ordenaron 1.000.000 de números, y vemos claramente que en la maquina A que es mucho más rápida que en la máquina B, tarda mucho más que la máquina más ,lenta. Eso significa que el algoritmo es de suma importancia.
Si probamos con números más grandes, veremos que sigue tardando mucho más. Osea que la entrada es de suma importancia.
Aclaro que no siempre en todos los algoritmos de ordenación por ejemplo, el método InsertSort es peor que el MergeSort, pero cuando son entradas pequeñas. Al tener entradas grandes ya cambia la historia, y es como se había planteado.
Saludos y espero que aprecien más la eficiencia de los algoritmos.
3 comentarios:
ok un comentario, manteniendo una vision global, tambien es importante dejar para ultimo la optimizacion... ( premature optimization is the root of all evil) saludos desde Argentina
francamente estos temas nunca fueron mi fuerte, podrias darme algunos links para mas información?, gracias.
@Manuel Te recomiendo el libro de Cormen:
La segunda version podes encontrarla en: http://bit.ly/d0z8r2
La tercera podes encontrarla en: http://mitpress.mit.edu/algorithms/
Si necesitas mas link avisame que te paso. Pero creo que con esto te vas a divertir mucho. ;)
saludos, y a tus ordenes
Publicar un comentario
Expresate y se crítico en tu vida. XD