1. Definición¶
Algoritmo, algoritmo, algoritmo... Últimamente escuchamos la parabra «algoritmo» en todos lados, especialmente en estos tiempos de auge de la era digital y la IA. Pero, ¿podríamos definir exactamente qué es un algoritmo? Quizás algunos puedan dar una definición, mientras que otros solo lo asocian con tecnología o redes sociales. Si eres de los que siente curiosidad por entender este concepto de forma clara y precisa, esta entrada es para ti. Antes de profundizar, echemos un vistazo a lo que nos dice el diccionario de la RAE :
Algoritmo
Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.
Por supuesto, no le vamos a quitar la razón a la Real Academia: cualquier sucesión de pasos ordenados que permita llegar desde un problema a una solución es un algoritmo. Sin embargo, creo que podemos darle un giro y extender la definición un poco más:
Algorimo
Conjunto definido, ordenado y finito de instrucciones o reglas lógicas y no ambiguas que permiten, en general, resolver un problema o realizar una actividad de manera sistemática y eficiente.
Aquí ya no nos sirve cualquier sucesión de pasos, aunque nos lleve al resultado. La clave de un buen algoritmo es llegar a la solución de la forma más eficiente y clara posible. Imaginemos que queremos diseñar un algoritmo para preparar una taza de té:
Este conjunto de pasos funciona, pero tiene algunos pasos que podrían ser confusos: ¿cuánta agua calentamos? ¿A qué temperatura? ¿La taza debe contener algo previamente? ¿Cuánto tiempo dejamos reposar el té? El resultado final puede variar mucho sin esta información. Propongamos, de nuevo, el algoritmo:
El segundo algoritmo no deja nada a la suerte, es preciso, claro y sin margen para el desastre. Con el primero, en cambio, corremos el riesgo de obtener un té excesivamente fuerte o excesivamente aguado. Y ya sabemos, nadie quiere hacer té «como salga». Al final, un buen algoritmo se asegura de que cada paso sea claro y sin ambigüedades, porque hasta el té más sencillo puede transformarse en un experimento de laboratorio si no seguimos las instrucciones correctas. Tu paladar seguro que te lo agradecerá 🍵.
2. Características de un buen algoritmo¶
No todos los algoritmos son iguales, ya lo hemos visto; algunos nos llevan a la solución de forma rápida y eficiente, mientras que otros… bueno, mejor no mencionarlos. Aunque podemos ir deduciendo cuáles son, vamos a listar las claves de un buen algorimo:
-
Claridad: Cada paso debe ser fácil de entender, sin necesidad de interpretaciones.
-
Finitud: Un buen algoritmo tiene un final. Nada de bucles infinitos.
-
Eficiencia: Menos es más. Un buen algoritmo usa los recursos necesarios sin derroches.
-
Precisión: Debe ser detallado, sin lugar a dudas.
-
Adaptabilidad: Un buen algoritmo debe ser capaz de ajustarse sin romperse.
Cada vez está más claro que los algoritmos no son exclusivos de la tecnología; están presentes en muchos otros ámbitos. En medicina, por ejemplo, se emplean algoritmos para estandarizar procedimientos y asegurar que el diagnóstico y el tratamiento sean efectivos. Aquí tienes un ejemplo de un algoritmo para el diagnóstico de las anemias hemolíticas, extraído de (Roche Diagnostics S.L., 2011), que sigue las buenas prácticas que vimos anteriormente:
3. Componentes básicos de un algoritmo¶
Todo algoritmo consta de tres partes bien diferenciadas: entrada, proceso y salida.
Partes de un algoritmo
-
La entrada es el conjunto de datos iniciales con los que el algoritmo comienza a trabajar.
-
El proceso incluye los cálculos, instrucciones o pasos necesarios para transformar esos datos y resolver el problema.
-
La salida es el resultado final (o resultados finales) que se obtiene tras completar el proceso.
Dentro de la etapa de proceso, encontramos algunos componentes esenciales:
-
Condiciones: Decisiones o bifurcaciones en el algoritmo. Estas se basan en evaluaciones, como “si X sucede, entonces hacer Y”, que ayudan a guiar el flujo de pasos según las necesidades de la entrada.
-
Iteraciones: Repeticiones de ciertos pasos hasta que se cumple una condición específica. Estas permiten al algoritmo repetir un bloque de instrucciones ahorrando así su reescritura.
-
Operaciones: Cálculos, comparaciones o transformaciones que el algoritmo realiza en los datos para generar el resultado final. Estas operaciones pueden ser desde una simple suma hasta fórmulas mucho más complejas.
4. Representaciones de algoritmos¶
En las secciones anteriores, hemos creado un pequeño algoritmo para hacer té. Cuando los pasos son simples y lineales, una lista enumerada suele ser suficiente. Sin embargo, cuando un algoritmo se vuelve más complejo o incluye decisiones y condiciones, es útil representarlo de una manera más estructurada.
Veamos dos formas prácticas y claras de representar algoritmos:
4.1 Diagramas de flujo¶
Un diagrama de flujo es una herramienta visual que representa los pasos y decisiones de un proceso o flujo de trabajo, por lo que también se conoce como flujograma. Utilizando símbolos y convenciones estandarizadas, los diagramas de flujo permiten visualizar cada paso y decisión de manera lógica y organizada, facilitando así el seguimiento y comprensión del proceso.
Con solo estos símbolos básicos, ya podemos representar los algoritmos más sencillos. Por ejemplo, veamos un diagrama que muestra un algoritmo para buscar un objeto perdido:
Si quieres más ampliar la información sobre la simbología de los flujogramas, puedes echar un vistazo en el siguiente enlace de smartdraw.
4.2 Pseudocódigo¶
Ahora nos adentramos en un recurso un poco más técnico: el pseudocódigo. Esta herramienta se usa con frecuencia en el diseño y planificación de algoritmos informáticos, pero su utilidad no se limita solo al ámbito de la programación. Al fin y al cabo, un algoritmo es un algoritmo.
El pseudocódigo es una forma de descripción informal que representa la lógica de un algoritmo, escrita en un lenguaje natural estructurado. Aunque sigue la lógica del código, no requiere respetar las reglas estrictas de la sintaxis de un lenguaje de programación. Su principal objetivo es mostrar el flujo lógico de un sistema o proceso de manera que cualquiera —sin importar su experiencia en programación— pueda entender los pasos que sigue el algoritmo.
¿Cómo sería la búsqueda del objeto perdido en pseudocódigo? Vamos a averiguarlo:
5. Fin de programa¶
Hemos comenzado a explorar el concepto de algoritmo, sus características fundamentales y algunas maneras útiles de representarlo. Con esta base, estamos preparados para adentrarnos en temas más avanzados que permitirán entender a profundidad el papel de los algoritmos en la tecnología y en la solución de problemas de manera eficiente.
Este artículo es solo el primero de una serie en la que analizaremos aspectos clave como:
-
Clasificación de algoritmos: ordenación, búsqueda
-
Analisis de eficiencia: Notación Big O, temporal, espacial
-
Algoritmos en grafos
-
Algoritmos voraces
-
Algorimos de Machine Learning e IA
Te invito a recorrer conmigo este viaje por el terreno, no sólo de la algorítmica, sino de la Ciencia de Datos en general. Iremos poco a poco desgranando conceptos fundamentales, herramientas útiles y casos prácticos que nos permitirán entender mejor cómo los datos transforman nuestro entorno.
No dudes en dejar tus comentarios y sugerencias; estamos aquí para aprender juntos.
¡A desentrañar el mundo de los datos!
Referencias
Roche Diagnostics S.L. (2011). Algoritmos (2.a ed.).
Sedgewick, R., & Wayne, K. (2011). Algorithms. Addison-Wesley Professional.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms, fourth edition. MIT Press.