Home Blog/ Transformación digital/
Transformación digital

Para los entusiastas de la informática es vital buscar la eficiencia de los algoritmos, pues estos configuran uno de los pilares de los proyectos y productos tecnológicos que realizan. ¿Es tu caso? ¡Entonces esto te interesa!

Somos conscientes de lo importante que es mejorar permanentemente las habilidades y más en procesos como estos que están en constante innovación. Por eso, en esta oportunidad, vamos a darte las herramientas para que te familiarices con lo que significa la eficiencia de los algoritmos y qué puedes hacer para medirla.

Por supuesto, si estás recién entrando al mundo de la programación y necesitas una guía para entender algunos de los términos o ideas principales que te llevarán a despegar en esta actividad, te recomendamos que consultes qué es un algoritmo como los elementos para construir uno, en un lenguaje sencillo y claro, pensado también para no programadores.

¿Qué es la eficiencia de los algoritmos?

Ahora que ya tienes presente qué son y cuáles son las características de los algoritmos, es necesario entender los factores que determinan el concepto de eficiencia de los algoritmos, pues está directamente relacionado con lo productivos que estos sean en el tiempo en que demore su ejecución.

Es por esta razón que, cuando escuches hablar de un algoritmo eficiente, debes pensar que este desarrolla a cabalidad la función para la cual fue creado y que tanto el tiempo de ejecución de un algoritmo como el uso de memoria, son los menores posibles.

Para Charles Babbage, matemático y científico de la computación, "en casi todo cómputo son posibles una gran variedad de configuraciones para la sucesión de un proceso, y varias consideraciones pueden influir en la selección de estas según el propósito de un motor de cálculos. Un objetivo esencial es escoger la configuración que tienda a minimizar el tiempo necesario para completar el cálculo".

ingeniero ajustando el algoritmo Imagen: Pixabay

¿Cómo se puede analizar la eficiencia de los algoritmos?

Así como lo mencionamos en el apartado anterior, el análisis de algoritmos te permitirá constatar si las elecciones fueron óptimas para dar solución al problema computacional en cuestión. En este escenario existen varias formas que te indicarán cómo medir la eficiencia de un algoritmo. Te las presentaremos a continuación.

No es suficiente con evaluar los tiempos destinados a la ejecución de las funciones para las cuales fue creado el algoritmo, pues aquí hay otros factores que entran directamente en la ecuación y podrían hacer variar el resultado. Dependiendo de si estamos utilizando un equipo más rápido o más lento, incluso si hay más aplicaciones que estén corriendo en simultáneo, obtendremos un diagnóstico diferente de la eficiencia de los algoritmos.

Te sugerimos que la incógnita a resolver sea cómo o qué tanto aumenta el tiempo en el que se ejecuta la función si es mayor la entrada. Es decir, cómo responde el algoritmo si se incrementa la cantidad de información que debe procesar, toda vez que es posible que tome poco tiempo con entradas menores, pero que, al mismo tiempo, su performance se vea afectada al hacer el trabajo con un volumen de información mucho más grande.

 

Pasos para analizar la eficiencia de los algoritmos

Son varios los criterios que se tienen en cuenta para determinarla, entre ellos la legibilidad, la facilidad de la codificación, el uso de memoria, la portabilidad, etc., lo que se considera un uso eficiente de los recursos y a lo que se le conoce también con el nombre de complejidad o incluso costo de un algoritmo.

A fin de evaluar qué tanto aumenta el tiempo de ejecución, realizaremos las siguientes acciones:

  • Encontrar un valor estimado respecto de la frecuencia de ejecución.
  • Determinar el número de datos de entrada, su estructura y distribución, además de la calidad del código de fuente y de la máquina.

Después de esto, podrás echar mano de los casos que te llevarán calcular la eficiencia de los algoritmos. Para obtenerlos tendrás que contar el número de operaciones que ejecutó el algoritmo para finalmente llegar al valor que le fue solicitado al inicio. 

  • Peor caso: ayuda a plantear un escenario en el que las acciones estarán encaminadas sí o sí a reducir el tiempo que toma en la ejecución de la función.
  • Caso promedio: carece de los elementos suficientes para plantear un solo escenario de este tipo, pues son muchas las variables involucradas en la práctica.
  • Mejor caso: es el menos utilizado, justamente por presentar un panorama que escapa de la realidad. 
  • Amortizado: contempla el promedio de tiempo que lleva al algoritmo completar la función tras varias ejecuciones que ocurren sucesivamente. 
  • Probabilístico: como su nombre lo indica, toma las probabilidades que arrojan las entradas sobre las cuales se hace el análisis. 

eficiencia del algoritmo Imagen: Pixabay

Para saber si la eficiencia de los algoritmos es la esperada o no, tendrás que llevar el registro de los segundos que le tomó al algoritmo y los resultados arrojados a partir de la función desempeñada por el mismo. 

Más adelante pasarás a analizar los datos obtenidos, pues en tus registros tendrás que percibir que el tiempo aumenta de manera proporcional (o lineal) respecto a la cantidad de tareas desarrolladas; de esta manera, corroborarás un correcto funcionamiento. 

En este orden de ideas, sabrás que tu algoritmo es eficiente en la medida en que requiera el menor número de operaciones para completar la función (complejidad espacial) y la mejor cantidad de tiempo posible (complejidad temporal) para finalizarla.

"En disciplinas de ingeniería establecidas, un 12% de mejoría obtenido con facilidad, nunca es considerado un resultado marginal, y creo que el mismo punto de vista prevalece para la ingeniería de software”, así lo considera Donald Knuth, experto en ciencias de la computación, quien además, enfatiza que la eficiencia de los algoritmos sigue siendo un tema importante a considerar. 

 

Ahora consulta algunos ejemplos detallados y ejercicios que te ilustrarán mejor acerca de cómo se llevan a cabo las mediciones para calcular la eficiencia de los algoritmos. En ellos, tendrás incluso la posibilidad de verificar tus respuestas.

Asimismo, recuerda que, en Crehana, podrás aprender acerca de la estructura de datos de la mano del profesor Armando Cerda, quien asegura “aprenderás a medir la eficiencia de los algoritmos que desarrolles, a optimizarlos y a garantizar que tus productos ocupen la menor cantidad de recursos posibles, más allá del lenguaje de programación que hayas empleado”.

Si te animas a conocer más del tema y a crear productos digitales con algoritmos, te presentamos la plantilla de Wireframe UX para iOS y Android con la que puedes diseñar una aplicación web que se adapte a todas las interfaces digitales. 

No pierdas la oportunidad de seguirte preparando y explorar nuevas herramientas para afianzar tus conocimientos en programación. En Crehana contamos con cursos de desarrollo web y tecnología especialmente diseñados para apoyarte en todas tus etapas de aprendizaje.

¡Que tu camino al éxito no se detenga!