Algoritmos en nuestras vidas

Si miramos la definición de la Real Academia Española, nos dice que un algoritmo es: “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema”.

Si bien los algoritmos generalmente se asocian al ámbito matemático, no necesariamente implica que sean exclusivos de esta área. Se puede entender un algoritmo como una secuencia de pasos finitos bien definidos que resuelven un problema. Por ejemplo, la ejecución de tareas cotidianas tan simples como cepillarse los dientes, lavarse las manos o seguir el manual de instrucciones de armado de un mueble, se pueden ver como un algoritmo.

Desde el punto de vista informático un algoritmo es cualquier procedimiento computacional bien definido que parte de un estado inicial y un valor o un conjunto de valores de entrada, a los cuales se les aplica una secuencia de pasos computacionales finitos, produciendo una salida o solución. Se puede considerar al algoritmo como una herramienta para resolver un cálculo computacional bien especificado [1].

¿Qué tan recientes son los algoritmos?

Los humanos han creado, modificado y utilizado algoritmos a lo largo de la historia. Hace más de 4500 años los sumerios ilustraron en tablas de arcilla un método repetitivo utilizado para distribuir de forma equitativa la cosecha de granos entre un número variable de hombres [2].

Aproximadamente en el año 300 A.C en la Grecia Helenística, el matemático Euclides escribió “Elementos”, un trabajo que sentaría las bases para la geometría de los próximos milenios, ese texto incluye su famoso algoritmo para hallar el máximo común divisor.

A mediados del siglo XIX, Augusta Ada Byron (Ada Lovelace) crea lo que se considera el primer algoritmo diseñado para ser ejecutado por una máquina. Lovelace, sentó las bases para los lenguajes de programación futuros.

Ya en el siglo pasado con la llamada “Revolución Informática” los algoritmos comenzaron a tener un peso cada vez mayor. A medida que avanzaba la era de la computación estos adquirieron cada vez más relevancia hasta convertirse en parte de un engranaje vital en los procesos tecnológicos que afectan nuestro diario vivir.

 

Características y clasificaciones de los algoritmos

Partes del algoritmo y generalidades

Independientemente de la clasificación y el tipo de algoritmo, básicamente todos están compuestos de tres partes principales:

  • Entrada: Se trata del conjunto de datos que el algoritmo necesita como insumo para procesar.
  • Proceso: Son los pasos necesarios aplicados por el algoritmo a la entrada recibida para poder llegar a una salida o resolución del problema.
  • Salida: Es el resultado producido por el algoritmo a partir del procesamiento de la entrada una vez terminada la ejecución del proceso.

Además del tipo de algoritmo existen una serie de características comunes a todos, a continuación, se mencionan alguna de ellas.

  • Exactitud: el algoritmo tiene que indicar un orden claro de la ejecución de cada paso, estos no pueden ser ambiguos (debe existir una confiabilidad).
  • Estar definido: si se realiza la ejecución de un mismo algoritmo en distintas instancias utilizando la misma entrada, debe resultar en la misma salida.
  • Completo: en la solución se deben considerar todas las posibilidades del problema.
  • Finito: necesariamente un algoritmo debe tener un número finito de pasos.
  • Instrucciones entendibles: Las instrucciones que lo describen deben ser claras y legibles.
  • General: debe poder abarcar problemas de un mismo tema soportando las distintas variantes que se presentan en la definición del problema.

Criterios de clasificación de los algoritmos

Según el criterio utilizado se aplican diferentes clasificaciones a los algoritmos. Por ejemplo, si usamos la clasificación por el sistema de signos con el cual se describen los pasos a seguir del algoritmo, podemos diferenciar dos tipos, algoritmos cualitativos: aquellos que sus pasos son instrucciones verbales y algoritmos cuantitativos: aquellos que se siguen instrucciones de cálculos numéricos.

Si se clasifican en base a su función se pueden establecer tres grupos principales como son los algoritmos de búsqueda, algoritmos de ordenamiento y algoritmos de encaminamiento o enrutamiento.

El tercer criterio que puede usarse para su clasificación es en base a su estrategia para alcanzar un resultado. En este grupo podemos mencionar a los algoritmos probabilísticos, heurísticos, voraces, de escalada y deterministas.

 

Un análisis detallado de los principales tipos de algoritmos se estudia durante la carrera de Ingeniería en Informática de Facultad de Ingeniería de UDE, más precisamente en el curso de “Análisis de Algoritmos”.

Transparentes y en todas partes

En esta llamada revolución digital, convivimos diariamente con la mayoría de los algoritmos sin darnos cuenta. Desde las aplicaciones que nos indican la mejor ruta a seguir hasta las sugerencias a la hora de recibir noticias destacadas en nuestros teléfonos móviles, todas utilizan algoritmos.

Un número que nos identifica

Los algoritmos también están presentes en el número de nuestra cédula de identidad, el dígito verificador que aparece a la derecha del guion es calculado a través de una serie de pasos bien definidos.

A continuación, se mostrará el proceso que sigue el algoritmo para calcular ese dígito, utilizando como ejemplo el número de cédula: 1.234.567 – X:

  • Se enumeran los dígitos del lado izquierdo del guion comenzando por el final.
1 2 3 4 5 6 7
Pos7 Pos6 Pos5 Pos4 Pos3 Pos2 Pos1
  • Cada dígito del documento se multiplica por la siguiente serie de números: 2 9 8 7 6 3 4 uno a uno respetando la posición y comenzando por la derecha. Si la cédula que se desea verificar tiene solamente 6 cifras a la izquierda del guion, no se considerará el número 2 de la serie para multiplicar quedando 9 8 7 6 3 4 (ya que no existiría un número en la Pos7 de la cédula a verificar)
1 2 3 4 5 6 7
Pos7 Pos6 Pos5 Pos4 Pos3 Pos2 Pos1
x2 x9 x8 x7 x6 x3 x4
2 18 24 28 30 18 28
  • Se suman solamente las unidades de los números obtenidos de las multiplicaciones.
2 18 24 28 30 18 28

2 + 8 + 4 + 8 + 0 + 8+8 = 38

  • Al número obtenido se lo divide entre 10 y se obtiene el resto (mod 10).

38 mod 10 = 8

  • Si el número obtenido en el paso anterior es 0, ese será el dígito verificador, si es distinto de 0 se le resta a 10 el número obtenido en el paso anterior y se obtiene la salida del algoritmo.

10- 8 = 2

Es fácil que el lector caiga en la tentación de comprobar el algoritmo con su propio número de cédula y verificar que el dígito obtenido es el correcto.

 

Algoritmos en las redes sociales

Según el reporte publicado por Datareportal en abril 2021, referente al uso de plataformas de redes sociales a nivel mundial, Facebook encabeza la lista con casi 2800 millones de usuarios, seguida por YouTube con 2300 millones. Gran parte del contenido que los usuarios consumen en estas plataformas, son sugeridos mediante procesos que utilizan distintos algoritmos.

Una muestra de ello es el algoritmo de Facebook utilizado para la sección de noticias (Feed News), el cual controla el orden y presentación de las publicaciones que se muestran al usuario (muy relevante para un community manager).  Sin embargo, muchos usuarios desconocen que realmente existen algoritmos involucrados en la selección de publicaciones que aparecen en sus pantallas. Un estudio publicado en 2015 [3], realizado sobre un grupo de usuarios de Facebook, cuyo objetivo era el de examinar la percepción que tenían estos acerca del algoritmo de selección de noticias, halló que un 62,5% del total muestreado desconocía totalmente su existencia.

 

Los algoritmos seguirán avanzando con nosotros

Tal como se mencionó a lo largo del artículo, los algoritmos han acompañado a la humanidad desde las primeras civilizaciones. Dada su importancia, sus aplicaciones prácticas y su omnipresencia en un mundo dominado por las tecnologías. Es de esperar que continuemos fuertemente ligados a los algoritmos que hemos creado y su importancia continúe en aumento en las próximas décadas acoplados a los avances tecnológicos.

 

Referencias algoritmos

[1] T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithm. Cambridge: Mit Press, 2009, p. 26.

[2] C. Steiner, Automate This: How Algorithms Came to Rule Our World. New York: Portfolio/Penguin, 2012, p.65

[3] M. Eslami, A. Rickman, K. Vaccaro, A. Aleyasen, A. Vuong, Karrie Karahalios, et al, “’I always assumed that I wasn’t really that close to [her]’”: Reasoning about invisible algorithms in news feeds,” April, 2015.

Ing. Gastón Garate

Ingeniero en Informática por la Facultad de Ingeniería de la Universidad de la Empresa (UDE). Coordinador del Área de Actualización Profesional de la Facultad de Ingeniería de la UDE.

Analista Data Warehouse y BI en Obras Sanitarias del Estado (OSE), su perfil está orientado a proyectos de Data Warehouse, mantenimiento y desarrollo de ETLs, Datamarts, KPIs, Dashboards, análisis y creación de reportes, desarrollo de aplicaciones Oracle APEX. Además, cuenta con experiencia en mantenimiento y desarrollo de Sistemas de Información Geográfica (GIS).