¿Qué son los algoritmos?
En informática, se llaman algoritmos el conjunto de instrucciones sistemáticas y previamente definidas que se utilizan para realizar una determinada tarea. Estas instrucciones están ordenadas y acotadas a manera de pasos a seguir para alcanzar un objetivo.
Todo algoritmo tiene una entrada, conocida como input y una salida, conocida como output, y entre medias, están las instrucciones o secuencia de pasos a seguir. Estos pasos deben estar ordenados y, sobre todo, deben ser una serie finita de operaciones que permitan conseguir una determinada solución.
En el mundo de la programación, todo programa o sistema operativo funciona a través de algoritmos, escritos en un lenguaje de programación que el ordenador pueda entender para ejecutar los pasos o instrucciones de una forma automatizada. A nivel de big data e inteligencia artificial, los algoritmos analizan la información y datos de consumidores y usuarios finales.
¿Cuáles son las características de los algoritmos?
Independientemente del uso que se le dé a los algoritmos, todos guardan en común las siguientes características:
- Inicio y fin: parten de un estado inicial desde el cual ejecutan una serie de instrucciones para llegar a un estado final de salida o finalización.
- Exactitud: deben indicar un orden claro, específico y lógico de instrucciones para la ejecución de cada paso, sin que exista espacio para la ambigüedad.
- Secuencia: deben seguir una serie de pasos ordenados, entendibles y previamente establecidos.
- Completos: deben tener en cuenta todas las posibilidades y presentaciones del problema para ejecutar la solución exacta.
- Finitos: el número de pasos para ejecutar la tarea debe ser finito para darla por concluida.
- Abstractos: representan una guía o modelo para ordenar procesos.
¿Qué tipos de algoritmos existen?
Según su sistema de signos, es decir, cómo se describen los pasos a seguir, los algoritmos pueden ser:
- Cuantitativos y cualitativos: si funcionan a través de cálculos matemáticos o secuencias lógicas.
- Computacionales o no computacionales: si requieren o no del uso de un ordenador para la solución o ejecución de una determinada tarea.
Según su función y estrategia, es decir, qué hacen y cómo lo hacen, existen cinco tipos de algoritmos:
- Algoritmos de búsqueda: aquellos que encuentran uno o varios elementos que presenten un conjunto de propiedades dentro de una determinada estructura de datos. Las búsquedas pueden ser:
- Secuenciales: comparan el elemento a buscar con cada elemento del conjunto, hasta encontrarlo.
- Binarias: comparan el elemento de búsqueda con un elemento ubicado en el medio de una serie ordenada para determinar si son iguales.
- Algoritmo de ordenamiento: son los que se utilizan para reorganizar elementos de un listado, siguiendo unas pautas de orden numérico o alfanumérico. Pueden ser:
- De burbuja: comparan cada elemento de la lista a ordenar, intercambiando posiciones si no están ordenados correctamente.
- Por selección: ordenan a partir del elemento más pequeño de forma consecutiva.
- Rápido: eligen un elemento del conjunto y reubican el resto en torno a este en función de si son menores o mayores respecto a él.
- Algoritmos voraces: se trata de un tipo de algoritmo aplicado a problemas de optimización y se utiliza para la toma de decisiones lógicas para llegar a una solución final global. Estos algoritmos no son reversibles una vez que se toma la decisión de ejecutarlos.
- Programación dinámica: este tipo de algoritmo está asociado al método con el que se procesa el resultado. La solución de un elemento depende de la solución de una serie de problemas más pequeños, por lo que conforme se van solucionando subproblemas, se van almacenando las soluciones para que no sea necesario calcularlas nuevamente. Con la programación dinámica se reduce el tiempo de ejecución del algoritmo.
- Algoritmos probabilísticos: este tipo de algoritmos basa sus resultados en el azar, de manera que, en líneas generales, se pueda obtener una buena solución para cualquier distribución aleatoria de inputs de entrada. El azar representa una optimización de tiempo respecto a si se determinara la mejor alternativa para cada caso individual. Se obtiene, en consecuencia, una buena solución a un problema para cualquier distribución de datos de entrada.