BITÁCORA

La importancia de los algoritmos (Parte 1)

El primer paso para entender por qué es tan importante el estudio de los algoritmos es definir exactamente a qué nos referimos por algoritmo. Un algoritmo popularmente es definido como “un procedimiento computacional bien definido que toma un valor, o un conjunto de valores, como entrada y entonces produce uno, o varios valores de salida”. En otras palabras, los algoritmos son como mapas de caminos para cumplir una tarea definida. Entonces, un pedazo de código para calcular los elementos de la secuencia de Fibonacci es la implementación de un algoritmo particular.

Algunos algoritmos, como los que computan la secuencia de Fibonacci, son intuitivos e inclusive pueden ser innatos para nuestra habilidad de resolver problemas y nuestro pensamiento lógico. Sin embargo, para la mayoría de nosotros, los algoritmos complejos son mejor estudiados para que podamos usarlos como bloques ya construidos para resolver problemas lógicos más eficientemente en el futuro.


Análisis de tiempo de ejecución

Un aspecto muy importante a tomar en cuenta en los algoritmos es que tan rápido es cada uno. Puede ser fácil encontrar un algoritmo para resolver un problema, pero si el algoritmo es muy lento, tienes que regresar a diseñarlo de nuevo. La velocidad exacta de un algoritmo depende de donde se ejecuta el mismo y también de los detalles exactos de su implementación; los científicos hablan acerca del tiempo de ejecución relativo al tamaño de la entrada. Por ejemplo: si la entrada consiste en N enteros, puede que el algoritmo tenga tiempo de ejecución proporcional a , representado como . Esto significa que si ejecutamos una implementación del algoritmo en una computadora con una entrada de tamaño N, este tardará segundos, donde C es alguna contante que no varía con cambios en el tamaño de la entrada.

Tiempo de ejecución aproximado para N=100 en los algoritmos

Para ejemplificar este tema podemos mostrar lo siguiente:

Algoritmos de Ordenamiento

Los algoritmos de ordenamiento son un buen ejemplo de algoritmos que son muy usados. La manera más simple de ordenar un conjunto de elementos es quitando el elemento más pequeño del grupo y ponerlo primero. Entonces quitar el siguiente más pequeño y ponerlo después del primero. Desafortunadamente, este algoritmo es O(N2), lo que significa que la cantidad de tiempo que toma es proporcional al número de elementos al cuadrado. Si tuviéramos que ordenar mil millones de cosas, este algoritmo podría tomar 1018 de operaciones. Para poner esto en perspectiva, una PC puede realizar aproximadamente 109 operaciones por segundo y le podría tomar años ordenar mil millones de cosas (con el algoritmo que se describió anteriormente).

Afortunadamente, existen mejores algoritmos (por ejemplo quicksort, heapsort y mergesort) que han sido desarrollados a través de los años, algunos con tiempo de ejecución O(N * Log(N)). El número de operaciones requeridas para ordenar mil millones de elementos disminuye razonablemente. Pueden ser 100 millones de veces más rápidos.
Existen diferentes algoritmos que la gente estudia para resolver problemas. Existe una gran probabilidad de que un problema que estés resolviendo sea similar a otro en algunas características. Desarrollando mientras sabes una buena cantidad de algoritmos, tú tendrás mayor habilidad para elegir uno correcto para resolver un problema y aplicarlo correctamente.

Existen diferentes plataformas y competiciones que te permiten practicar para desarrollar tus habilidades. Puede que algunos problemas no sean completamente realistas, sin embargo requieren el mismo conjunto de conocimientos que podemos ver día a día en el mundo real.

Ahora, si quieres conocer las aplicaciones que tienen los algoritmos en las matemáticas, visita la segunda parte.

Por Raúl Soto del CTIN
@solorulo

Un comentario

  1. es bueno saber acerca de esto para poder mejorar tus capacidades antes de escribir código.

    algunos ejemplos no hubieran estado de mas, gracias

IMPORTANTE:
Sí: El usuario podrá preguntar, felicitar, realizar críticas constructivas y/o contribuir con opiniones relevantes en el campo de la ingeniería e infraestructura.
No: Molestar, intimidar o acosar de ninguna manera.Tampoco utilizará el espacio para la promoción de productos o servicios comerciales, así como de cualquier actividad que pueda ser calificada como SPAM.

Para saber más consulta los Términos de Uso de INGENET.