Profile Software Services

Qué es un algoritmo informático: características, tipos y ejemplos

La palabra «algoritmo» es un concepto comúnmente relacionado con el ámbito de la informática y está cada vez más presente en nuestro día a día. En este post, explicamos qué es un algoritmo informático y analizamos sus características, diseccionamos los principales tipos de algoritmos que existen y compartimos un ejemplo real de algoritmo. ¡Vamos allá!

¿Qué es un algoritmo informático?

Un algoritmo informático es un conjunto de instrucciones definidas, ordenadas y acotadas para resolver un problema, realizar un cálculo o desarrollar una tarea. Es decir, un algoritmo es un procedimiento paso a paso para conseguir un fin. A partir de un estado e información iniciales, se siguen una serie de pasos ordenados para llegar a la solución de una situación. 

En programación, un algoritmo supone el paso previo a ponerse a escribir el código. Primero debemos encontrar la forma de obtener la solución al problema (definir el algoritmo informático), para luego, a través del código, poder indicarle a la máquina qué acciones queremos que lleve a cabo. De este modo, un programa informático no sería más que un conjunto de algoritmos ordenados y codificados en un lenguaje de programación para poder ser ejecutados en un ordenador.

No obstante, los algoritmos no son algo exclusivo de los ámbitos de las matemáticas, la lógica y la computación. Utilizamos numerosos algoritmos para resolver problemas en nuestra vida cotidiana. Algunos de los ejemplos más habituales son los manuales de instrucciones o las recetas de cocina. 

Partes de un algoritmo informático

Las tres partes de un algoritmo son:

  1. Input (entrada). Información que damos al algoritmo con la que va a trabajar para ofrecer la solución esperada.
  2. Proceso. Conjunto de pasos para que, a partir de los datos de entrada, llegue a la solución de la situación. 
  3. Output (salida). Resultados, a partir de la transformación de los valores de entrada durante el proceso.

De este modo, un algoritmo informático parte de un estado inicial y de unos valores de entrada, sigue una serie de pasos sucesivos y llega a un estado final en el que ha obtenido una solución.

Características de los algoritmos

Asimismo, los algoritmos presentan una serie de características comunes. Son:

Tipos de algoritmos y ejemplos

Existen diversas clasificaciones de algoritmos, en función de diferentes criterios. Según su sistema de signos (cómo describen los pasos a seguir), se distingue entre algoritmos cuantitativos y cualitativos, si lo hacen a través de cálculos matemáticos o secuencias lógicas. Asimismo, si requieren o no el empleo de un ordenador para su resolución, se clasifican en computacionales y no computacionales.

Pero, si nos fijamos en su función (qué hace) y su estrategia para llegar a la solución (cómo lo hace), encontramos muchos más tipos de algoritmos. Destacamos los siguientes cinco tipos de algoritmos informáticos:

Infografía tipos de algoritmos

Algoritmos de búsqueda

Los algoritmos de búsqueda localizan uno o varios elementos que presenten una serie de propiedades dentro de una estructura de datos.

Ejemplos de algoritmos de búsqueda

Existen diversos tipos de búsquedas, entre las que sobresalen: 

Algoritmos de ordenamiento

Reorganizan los elementos de un listado según una relación de orden. Las más habituales son el orden numérico y el orden lexicográfico. Un orden eficiente optimiza el uso de algoritmos como los de búsqueda y facilitan la consecución de resultados legibles por personas y no solo máquinas.

Ejemplos de algoritmos de ordenamiento

Algunos algoritmos de ordenamiento son:

Algoritmos voraces

Los algoritmos voraces consisten en una estrategia de búsqueda que sigue una heurística en la que se elige la mejor opción óptima en cada paso local con el objetivo de llegar a una solución general óptima. Es decir, en cada paso del proceso escogen el mejor elemento (elemento prometedor) y comprueban que pueda formar parte de una solución global factible. Normalmente se utilizan para resolver problemas de optimización.

Ejemplos de algoritmos voraces

En ocasiones, estos algoritmos no encuentran la solución global óptima, ya que al tomar una decisión solo tienen en cuenta la información de las decisiones que han tomado hasta el momento y no las futuras que puede adoptar. Algunos casos en los que los algoritmos voraces alcanzan soluciones óptimas son:

Programación dinámica

La programación dinámica es un método de resolución de problemas en el que dividimos un problema complejo en subproblemas y calculamos y almacenamos sus soluciones, para que no haga falta volver a calcularlas más adelante para llegar a la solución del problema. La programación dinámica reduce el tiempo de ejecución de un algoritmo al optimizar la recursión.

Eso sí, para poder aplicarse a un problema, éste debe tener subestructuras óptimas y subproblemas superpuestos. Es decir, que en él se puedan usar soluciones óptimas de subproblemas para encontrar la solución óptima del problema en su conjunto y que el problema se pueda dividir en subproblemas que se reutilizan para ofrecer el resultado global.

Usos de programación dinámica

Algunos casos en los que se utiliza son:

Algoritmos probabilísticos

Es una técnica que usa una fuente de aleatoriedad como parte de su lógica. Mediante un muestreo aleatorio de la entrada llega a una solución que puede no ser totalmente óptima, pero que es adecuada para el problema planteado.

Se utiliza en situaciones con limitaciones de tiempo o memoria y cuando se puede aceptar una buena solución de media, ya que a partir de los mismos datos se pueden obtener soluciones diferentes y algunas erróneas. Para que sea más probable ofrecer una solución correcta, se repite el algoritmo varias veces con diferentes submuestras aleatorias y se comparan los resultados. 

Tipos de algoritmos probabilísticos

Existen dos tipos principales de algoritmos probabilísticos:

 

Ejemplo real de algoritmo informático

A continuación, vamos a ver un ejemplo de algoritmo informático que utilizamos este año para resolver un enigma que os planteamos en nuestras redes sociales para celebrar el Día del Programador

El reto o situación de partida que os proponíamos era el siguiente: «Si Java es Ñfaf y Javascript es Ñfafxhwnuy, resuelve a través de la rueda de cifrado la siguiente frase con tu solución programada: KJPNE INF IJ PTX UWTLWFQFITWJX».

Situación de partida para el algoritmo.

Para conseguir descifrar el mensaje oculto, diseñamos un algoritmo informático, un conjunto de instrucciones o pasos para resolver el enigma:

function decoded(encodedTxt) {
    let alphabet = "abcdefghijklmnñopqrstuvwxyz".split("");
    let decodedTxt = "";
    encodedTxt.toLowerCase().split("").forEach(item => {
        if (item === " ") {
            decodedTxt += item;
        }
        else if (alphabet.indexOf(item) != -1) {
            if (alphabet.indexOf(item) >= 5) {
                decodedTxt += alphabet[(alphabet.indexOf(item) - 5)];
            }
            else if (alphabet.indexOf(item) <= 4) {
                decodedTxt += alphabet[alphabet.length + alphabet.indexOf(item) - 5];
            }
        }
    });
    console.log(decodedTxt.toUpperCase());
}
const txtEncrypted = 'KJPNE INF IJ PTX UWTLWFQFITWJX';
decoded(txtEncrypted);

Finalmente, nuestro algoritmo nos proporcionó la solución que buscábamos: el mensaje FELIZ DIA DE LOS PROGRAMADORES.

Conclusión

Como hemos visto, un algoritmo informático no es más que un conjunto de instrucciones para conseguir un fin. Los algoritmos están muy presentes en el ámbito de la informática, pero también en nuestra vida cotidiana. Existen numerosos tipos y ejemplos de algoritmos y, dependiendo de la situación en que nos encontremos, unos u otros nos ayudarán a llegar a la solución que necesitemos.

¿Te gustaría impulsar tu negocio con una solución digital? ¡Contáctanos y te ayudaremos a llevarla a cabo!

Salir de la versión móvil