36

Introducción al Análisis de Algoritmos

25088Puntos

hace 2 años

Curso de Algoritmos con C 2017
Curso de Algoritmos con C 2017

Curso de Algoritmos con C 2017

Los algoritmos son fundamentales para crear soluciones efectivas a los problemas a través de la programación. En este curso podrás aprenderlos e integrarlos a tus proyectos utilizando el lenguaje C como herramienta.
analisiDeQue.png

El análisis de algoritmos puede ser un tema difícil de entender. En la mayoría de ocasiones nos mandan de frente a una serie de símbolos y notaciones que no necesariamente son de lo más amigables y sin una buena explicación previa, inclusive pueden generar repulsión al tema. En este BlogPost comenzamos un paso antes, definiendo los conceptos básicos de tiempo de ejecución y hablamos sobre cómo comparar algoritmos. Una vez que tengas esto claro, en otro seguiremos con la notación utilizada, también, estamos a punto de lanzar el Curso de Algoritmos con C al que puedes acceder haciendo click aquí.

¿Sabes qué es el análisis en tiempo de ejecución y de qué depende?

Es el proceso de determinar o calcular cómo se incrementa el tiempo de procesamiento conforme incrementa el tamaño de los datos de entrada, es decir conforme el problema se hace más complejo, aquí vale la pena destacar que el problema podría tener diversos tipos de entradas de datos y te comparto los más comunes para que logremos entender más este punto:

bullets.png

Tenemos la herramienta que es el análisis del tiempo de ejecución, ahora veamos los parámetros con los que mediremos nuestros algoritmos hablemos de 3 ideas:

¿Tiempo que tarda en ejecutarse?

R: No es la métrica ideal, pues los tiempos de ejecución son específicos para una computadora y van a variar según el hardware que tengamos a disposición por poner sólo un ejemplo, un programa se ejecutaría mucho más rápido en un i7 7700hq que en un i7 7600u y eso que son dos CPUs de los más recientes y de modelos “parecidos” imagínate lo complejo que sería tener una medición para tu algoritmos en todos los hardwares, difícil, ¿cierto?

¿Número de instrucciones a ejecutar?

R: Tampoco es una buena medida, pues el número de instrucciones varía según el lenguaje de programación que se esté utilizando y el estilo del programador mismo, por eso no podemos guiarnos únicamente por esta métrica.

¿Entonces cuál es la solución ideal?

R: Las matemáticas tienen una forma de describir diversos fenómenos del día a día como la transferencia de calor entre dos cuerpos (física AKA, matemáticas aplicadas) por poner un ejemplo, y en el estudio de algoritmos también nos ayudan, en este caso al medir el tiempo de ejecución como una función del tamaño de la entrada.

Si quieres aprender más, no dudes en entrar al Curso de Algoritmos con C dónde aprenderás a hacer el análisis y la implementación de los algoritmos más utilizados, en vivo, junto a la increíble comunidad de estudiantes de Platzi.

Curso de Algoritmos con C 2017
Curso de Algoritmos con C 2017

Curso de Algoritmos con C 2017

Los algoritmos son fundamentales para crear soluciones efectivas a los problemas a través de la programación. En este curso podrás aprenderlos e integrarlos a tus proyectos utilizando el lenguaje C como herramienta.
Ricardo
Ricardo
@ricardocelis

25088Puntos

hace 2 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
2
35602Puntos

Ricardo, ¿qué te parece estas métricas para comparar el rendimiento de un lenguaje?

https://benchmarksgame.alioth.debian.org/u64q/go.html

4
25088Puntos
2 años

me parecen interesantes, cade destacar que si un mismo programador hace el còdigo y este tiene màs experiencia con un lenguaje que el otro, lo cual es bastante probable ahì ya hay una ligera injusticia jeje

2
35602Puntos
2 años

Una gran observación Ricardo,

Estoy de acuerdo, es un factor a considerar.

Entonces, ¿cómo medir el rendimiento de nuestro algoritmo?

1
35602Puntos
2 años

… y saber que escogimos el lenguaje correcto para el algoritmo?

1
7525Puntos

Beakman Rulz! (que después reencarnó como Megamente XD)

1
15961Puntos

Esto suena bastante interesante, esperemos a ver que nos depara este nuevo curso de Celis.

0
9382Puntos
2 años

Esta excelente, te lo recomiendo mucho 😃

1
2841Puntos

Ricardo me gusto el articulo muy buena redacción e introducción al tema. En la U, me enseñaron acerca de la complejidad computacional y hacerle análisis a un algoritmo basado en la big O notation. Supongo que en el curso de algoritmos en c trataras esos temas verdad?

0
9382Puntos
2 años

En el curso de habla del tema.

1

El mundo de beakman!! mi programa favorito cuando era niño T.T

1
35602Puntos

Muy interesante Ricardo 😄

1
25088Puntos
2 años

Gracias Osmandi, saludos! y una pregunta vas a tomar el curso?

1
35602Puntos
2 años

¡Por supuesto! Jamás me lo perdería 😄

1
35602Puntos
2 años

Claro que sí Ricardo 😄

Mira que preguntaré bastante jejeje

1
25088Puntos
2 años

eso! yo estaré súper pendiente a todas sus dudas =)

1
35602Puntos
2 años

Excelente! Muchas gracias Ricardo 😄

1
3579Puntos

😶 Woo se escucha muy interesante y creo que para un programador es importante.

0
1873Puntos

Espero mucho de este curso Ricardo! mañana muy atento a la clase en vivo 😃

0
25088Puntos
2 años

excelente! ahí nos vemos =)!

0
23789Puntos

¿habrá algún tema relacionado sobre cómo determinar una fórmula matemática que establezca qué tan eficiente será un algoritmo u otro? Del tipo ax^2+cx=0 para un algoritmo de girar una imagen 90º… Lo siento, no tengo ese libro a la mano que toca ese tema.

0
3238Puntos

Voy a poner a prueba las tres físicas y los 4 cálculos ( sin contar las veces que los repetí 😛) que ví en la Universidad.

0
25088Puntos
2 años

hey el curso de redes neuronales que tewnemos te hace decir: “entonces sí sirven de mucho las matemáticas”

0
893Puntos

Big O notation? estará excelente

0
554Puntos

Justo estaba buscando informacion de esto!!.

1
25088Puntos
2 años

Excelente y ya se viene el curso =)

0
554Puntos
2 años

Si! lo tomare!!