Bienvenidos a Nuestro Mundo - A Proyectos Beta!

En nuestra vida, desde que nacemos todo lo probamos, ensayamos y testeamos; así también erramos, caemos pero por sobre todo aprendemos. Es decir, todo lo que hacemos forma parte de una nueva experiencia, de un PROYECTO. El que siempre exista la posibilidad de mejorarlo es lo que lo convierte en BETA. En este blog queremos compartir contenidos de tipo informático con artículos de programación, software libre y propietario, redes, base de datos, noticias, experiencias, etc... y también de humor. Es un sitio de todos y para todos. Participá! Sos importante ...

La importancia de elegir el algoritmo adecuado


Muchas veces programamos, y nuestro único objetivo es que ande y ande bien. Pero no nos preocupamos del algoritmo. Solo que cumpla su función (o sea que ande y ande bien).
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.

Análisis de Algoritmos


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:

maximiliano dijo...

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

Manuel dijo...

francamente estos temas nunca fueron mi fuerte, podrias darme algunos links para mas información?, gracias.

fires dijo...

@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

Recibir Artículos Por Correo

Categorías

acertijos (1) adsense (1) adwords (1) AJAX (1) algoritmos (8) android (32) apple (5) autocad (1) base de datos (16) bash (1) becas (1) benchmark (1) blogger (2) blogs (27) bsd (1) buscadores (22) c# (1) CAD (1) camaras digitales (1) casting (1) CentOS (9) certificados (1) ciencia (1) CLEI (5) cloud computing (3) codigo fuente (9) Compiladores (4) Concursos (14) conferencias (24) congresos (6) consolas (7) criptografia (1) css (6) curso online (10) cursos (14) debian (50) Diseño (11) edicion video (7) emuladores (3) encuestas (2) entrevistas (9) ERTIC (1) etico (1) eventos (87) extjs (2) facebook (18) flash (2) flicker (1) FLISOL (13) geek (6) geoserver (2) GIMP (8) gis (29) Google (48) hacking (1) Hardware (30) haskell (3) HTML 5 (20) humor (261) imagenes (238) Ingenieria (14) internet (1) iphone (3) Java (42) Javascript (14) JQuery (3) juegos (36) libros (5) Linux (248) MAC (1) manga (2) Manuales (10) mapquest (1) MapServer (5) matematica (2) Microsoft (26) Microsoft Windows (27) Moviles (16) musicas (7) mysql (3) navegadores (41) newsletters (1) nokia (2) Noticias cientificas (7) Noticias Informaticas (39) Noticias varias (14) nube (1) openlayers (13) openstreetmap (10) opiniones (1) oracle (9) Paraguay (102) photoshop (1) Php (12) podcast (1) postgres (7) Programacion (135) prolog (1) proyectos (10) python (3) radio (6) Recursos (112) redes (10) Redes Sociales (62) resumenes (1) Revistas (57) ruby (2) seguridad (23) seminarios (6) sencha (2) SEO (3) Series (1) Silverlight (1) Sistema Operativo (27) smartphone (1) Software Libre (198) sun (2) tablet (19) tecnologia (24) tecnoPyensis (6) Testing (5) Trabajo (6) trucos (22) Twitter (29) Ubuntu (152) varios (113) videos (173) virtualizacion (14) visual basic net (2) web (86) wikipedia (1) Windows 7 (23) windows 8 (1) Windows XP (2) wordpress (5) xml (1)

Entradas Aleatorias

Seguidores

Últimos Comentarios

Archivos del Blog