Algoritmos: Qué son, tipos y lenguaje


Algoritmos-informática

Este post trata sobre el concepto de algoritmo (informática):

En el aprenderás sobre:

  • Qué son los algoritmos y cuáles son sus propiedades más relevantes.
  • Cómo los podemos clasificar si tenemos en cuenta la forma en que funcionan.
  • Qué es el pseudocódigo, explicando las razones que lo hacen tan importante en el diseño de algoritmos.

¿Qué son los algoritmos?


Los algoritmos son un conjunto de indicaciones detalladas para llevar a cabo un proceso. En informática, estas indicaciones son procesadas por un dispositivo, lo que le permite saber paso a paso como completar una tarea específica.

Tienes que saber, que estas indicaciones son como el “paso intermedio” que permite a los dispositivos realizar una determinada tarea.

En concreto, toda tarea informática comienza con la recepción de datos entrantes (input) que serán modificados por el hardware siguiendo los patrones marcados por los algoritmos.

QUÉ-ES-UN-ALGORITMO
Definición de algoritmo y propiedades más relevantes

Una vez que un conjunto de datos ha recorrido todo el camino de modificación marcado por el algoritmo se les considera salientes (output). Pero, ¿qué es lo que les ocurre a los datos en este camino intermedio?

La manera más sencilla de explicarlo es ver a las interacciones de los algoritmos con los datos como diagramas de flujo.

En ellos, se analizan los datos a través de preguntas definidas (estas partes definidas caracterizan a cada algoritmo). En función de si la respuesta es si o no, los datos tomarán caminos diferentes (la cantidad de caminos es algo que también caracteriza a cada algoritmo).

De esta forma, la información de salida de cada dato será diferente en función de cuáles sean sus características intrínsecas. O lo que es lo mismo, para un mismo algoritmo se siguen diferentes caminos en función de la información de partida que le suministremos.

Más allá de que todos los algoritmos tengan características diferenciales, existen una serie de propiedades que necesariamente tienen que compartir.

  • Definición: Cada paso de un algoritmo permite realizar una acción específica con los datos.
  • Temporalidad: No solo se limitan a completar una tarea, sino que deben hacerlo en un rango de tiempo efectivo.
  • Limitación: Todos los algoritmos están limitados a una serie de pasos finitos.

En la vida real, los algoritmos permiten el uso de cálculos complejos (múltiples preguntas y caminos) lo que permite a su vez que una determinada tarea se complete de infinidad de formas (por ejemplo, piensa en todas las búsquedas posibles en Google).

Los 6 tipos de algoritmos más importantes


Como ya te he mostrado antes, los algoritmos funcionan como una lista de instrucciones para resolver una tarea.

Ahora bien, en la práctica, estas instrucciones no funcionan de forma tan simple como parece.

Existen muchas formas de resolver cada tipo de problema. Y es precisamente en esta diferencia en la que nos basamos para clasificar a los algoritmos.

Tipos-de-algoritmos
Explicación y representación gráfica del funcionamiento de varios tipos de algoritmos

Aún así, no quiero que entiendas esto como una clasificación fija, ya que cada problema se puede resolver usando múltiples formas y combinaciones; y no solo un tipo concreto, que es lo que te voy a explicar aquí.

Por lo tanto, esta clasificación solo pretende darte una idea general de como ciertos algoritmos se pueden usar para resolver algunas situaciones específicas:

1. Recurrentes

Esta limitado a dos pasos como máximo: 

  • El paso 1 resuelve el problema directamente o se transforma en un subproblema (paso 2).
  • Si durante el paso 2 no es capaz de resolver el subproblema regresa de nuevo al paso 1.

2. Retroceso

Se denomina así porque cuando encuentra una solución correcta “termina y vuelve a empezar por defecto” (retrocede).

Al repetir cada fase múltiples veces termina encontrando todas las soluciones correctas.

Cuando comprueba que no hay más soluciones lo notifica con un mensaje de error.

3. Ramificación y corte

Si el problema original no tiene una solución simple se forman ramificaciones con subproblemas.

A cada subproblema se le aplica un límite inferior y superior:

  • Si el subproblema esta dentro de los límites se aplica un “corte” a la ramificación (solución encontrada).
  • Si el subproblema no esta dentro de los límites se forman nuevas ramificaciones.

4. División/combinación

Cada dato se divide en subdatos que puedan ser resueltos de la misma forma (división por tipos). Cuando se ha hallado la solución general a cada tipo de subdato se combinan para formar la solución completa al problema.

5.Forzados

Se encargan de explorar todas las posibles soluciones a un problema hasta que encuentran la mejor solución.

Esta “mejor solución” tiene dos posibles formas de conseguirse:

  • Considerando a la primera respuesta válida como la correcta.
  • Buscar todas las respuestas válidas y elegir entre ellas la más apropiada.

6.Aleatorios

Trabajan utilizando diversos patrones definidos, sin embargo, dentro de esos patrones se intercalan valores aleatorios para tomar decisiones

Este uso discreto de lo aleatorio permite acelerar procesos cuando las posibles soluciones tienen un alto grado de complejidad.

Lenguaje para crear algoritmos (pseudocódigo)


El pseudocódigo es un lenguaje a medio camino entre el lenguaje humano y el de programación que sirve para planificar la estructura de un algoritmo.

A lo mejor te preguntas, ¿por qué lo consideramos como un lenguaje intermedio?

Pues, por razones meramente prácticas.

Qué-es-el-pseudocódigo
Concepto de pseudocódigo. Para que sirve y porque es importante.

A la hora de programar, como en cualquier otro tipo de proyecto, se requieren borradores o esquemas para organizar el trabajo a realizar posteriormente.

En este sentido, el pseudocódigo no es más que un boceto sobre el que se escribirá un código de programación con posterioridad. Es decir, es un lenguaje que carece de funcionalidad tecnológica pero que es suficiente para que un programador sepa cuál es la tarea que tiene que llevar a cabo.

De esta forma, el pseudocódigo no se puede usar para ejecutar ningún programa informático; pero si que sirve para identificar posibles errores de concepto en el algoritmo antes incluso de que empiece a funcionar.

Este hecho tiene una mayor importancia de lo que puede parecer a simple vista. No es lo mismo corregir errores de un lenguaje básico que de uno más técnico y complejo.

Por lo tanto, el uso del pseudocódigo acaba suponiendo un ahorro en tiempo, dinero y esfuerzo.

A la hora de crear cualquier tipo de algoritmo informático complejo es necesario en primer lugar diseñarlo. Este diseño, se puede resumir en dos partes fundamentales:

  • Descripción de las funcionalidades básicas de un algoritmo, es decir, lo que queremos que haga y como queremos que lo haga.
  • Escribir ordenes que sigan un flujo para cumplir las funcionalidades que nos planteamos en el punto anterior. En esta parte del diseño estaría englobado la aplicación del pseudocódigo, mejorando la eficiencia de creación de algoritmos.

La idea fundamental que tienes que entender, es que el pseudocódigo mejora la eficiencia de los programadores porque facilita su trabajo enormemente.

Por ejemplo, la generación de ideas es menos compleja porque no se pierde tiempo pensando en como escribir con el código de programación recurrente. Al usar un lenguaje más simple el foco se mantiene sobre el concepto que se quiere crear.

Además, en un proyecto de programación se pueden usar varios lenguajes de programación simultáneos o metodologías de trabajo diferenciadas. El uso de un lenguaje común, permite la comunicación de ideas entre distintas personas y equipos de forma más sencilla.

Referencias



Si te ha resultado interesante nos ayudas mucho compartiéndolo. ¡Mil gracias!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.