October 19, 2020

¿Qué es un algoritmo?

La mayor parte de nuestro conocimiento existente está definido en forma de algoritmo: una receta de cocina, el camino hacia el trabajo, las instrucciones para montar un mueble de Ikea, la rutina de ejercicios entrenamiento, o incluso sin estar escrito, el método que sigas para elegir tu película en Netflix...

Por tanto, un algoritmo es una secuencia de instrucciones para lograr una tarea, en concreto para pasar de un estado a otro.

En ciencias de la computación, un algoritmo es justo lo que necesita una máquina para procesar, ya que esta realmente no piensa y sólo sabe hacer una cosa bien, que es seguir al pie de la letra las instrucciones que tiene programadas a ejecutar, en definitiva, seguir las instrucciones que le han dado, paso a paso.

Al definir un algoritmo, podemos describir tareas complejas a realizar sin tener que explicar el porqué de las mismas, al mismo tiempo que lo hacemos de un modo preciso para que el resultado sea justo el esperado.

Además, esta guía debería estar definida de tal modo que se pueda conseguir lo que el algoritmo persigue aunque realmente NO se entiendan del todo los pasos a seguir. Esto es mucho más relevante en el caso de instrucciones para las máquinas, ya que estas ejecutan sin pensar lo que hacen, y en ese sentido son dispositivos "tontos".

Un algoritmo se puede representar como el trabajo realizado para pasar de un estado de entrada a un estado de salida:

ENTRADA o INPUT -> PROCESAMIENTO - WORK -> SALIDA o OUTPUT

Con una observación desde fuera, el algoritmo es como una caja negra que procesa los datos o información de entrada y que abstractos a lo que hace en su interior nos da un salida, un resultado según lo esperado.

Como programadores tenemos que encontrar o construir por nosotros mismos, el algoritmo, la secuencia de instrucciones, que mejor pueda hacer la tarea a lograr, pero No sólo buscando la eficacia en cuanto a resultado alcanzado, sino también la eficiencia con que se llega al mismo, de tal modo que busquemos el menor tiempo, coste y/o recursos invertidos.

Así que en el mundo de la programación, al igual que en nuestro día a día, nos apoyamos en algoritmos para conseguir resultados, y si esto lo queremos conseguir de la forma más eficaz posible, tendremos que aprender a no solo ejecutar como bien hacen las máquinas, y tratar de también analizar la eficacia de las mismas. Para ello, en términos matemáticos analizaremos el rendimiento de un algoritmo en comparación con otros usando la conocida notación "Big O".


En resumen:

  • Qué: un algoritmo es una secuencia de instrucciones
  • Cuanto: su longitud será la necesaria para describir de la forma más precisa los pasos a realizar y sin error de interpretación
  • Dónde: en nuestra vida diaria pero especialmente en el mundo de la programación
  • Cuándo: queremos dada una información de entrada obtener un resultado
  • Cómo: usaremos instrucciones escritas en un lenguaje que pueda entender el receptor, en el caso de la programación que pueda convertirse a lenguaje máquina
  • Por qué: las máquinas necesitan instrucciones claras de qué tienen que realizar en cada situación

Si te ha gustado... ¡Compártelo!