El significado de algoritmo en programación de búsquedas

¿Qué es un algoritmo?

¿Qué es un algoritmo en informática?

Definición de algoritmo

Un algoritmo es, según explica en El País el profesor de la Facultad de Informática de la Universidad Complutense Ricardo Peña, «un conjunto de reglas que, aplicadas sistemáticamente a unos datos de entrada apropiados, resuelven un problema en un numero finito de pasos elementales». Como una receta de cocina. En ese sentido, siempre tienen una finalidad determinada.

¿Para qué se utilizan?

La humanidad ha estado utilizando algoritmos desde hace cientos de miles de años. En concreto, cada vez que un sapiens aplicaba unas reglas a unos estímulos para solucionar una necesidad. Posteriormente llegarían las matemáticas, repletas de algoritmos. Una multiplicación de dos números es un buen ejemplo. Por último, y con la llegada de la computación, se volvieron aún más importantes. Un ordenador no tiene conciencia para actuar por sí mismo: necesita instrucciones ordenadas que les digan qué hacer en cada momento y ante cada dato de entrada.

Características

Precisos

Las instrucciones deben carecer de ambigüedad.

Ordenados

También deben seguir una secuencia lógica y clara paso a paso.

Finitos

Dicha secuencia debe contener un número limitado de pasos.

Definidos

El resultado que proporciona ante la misma entrada de datos debe ser consistente todas las veces.

Concretos

Están orientados a la solución de un problema concreto. Son instrucciones aplicadas a un campo.

Partes de un algoritmo

Entrada (input)

Se denomina input a la información proporcionada al algoritmo. La materia prima a la que aplicará las instrucciones que contiene.

Proceso

Es la propia aplicación de las instrucciones: los pasos que sigue el algoritmo para dar con una solución a los datos recibidos.

Salida (output)

Los resultados de la operación. El algoritmo los obtiene tras procesar la información de entrada según sus instrucciones.

algoritmos mas populares

Tipos de algoritmo

Existen cuatro variedades en función del sistema de signos: cualitativos o verbales, cuantitativos o numéricos, computacionales o no computacionales. Pero esta no es la clasificación más importante. Es la que distingue entre algoritmos en función de su finalidad:

Algoritmo de búsqueda

Los de búsqueda son muy comunes en el internet actual. Su objetivo es encontrar las entradas que mejor cumplen una serie de condiciones en una base de datos masiva. El ejemplo más popular es el de Google, en base al cual una página de resultados de su buscador contiene unas entradas concretas y no otras. Bing, Baiuda, Yandex o DuckDuckGo tienen su propio algoritmo también.

Se dividen en:

  • De búsqueda secuencial, que comparan el elemento a localizar con cada elemento de la base de datos hasta dar con él o haberlos comparados todos.
  • Binarios, que comparan el elemento a localizar con el elemento ubicado en el medio y, si no lo encuentran, siguen analizando la siguiente mitad en la que podrían estar.

Algoritmo de ordenamiento

Se dedican a reorganizar los elementos de una base de datos según una relación determinada, habitualmemte de orden numérico o de orden lexicográfico. Su trabajo suele facilitar el posterior trabajo de los de búsqueda. Se dividen en  tres variedades.

  • De ordenamiento de burbuja, que compara cada elemento de la base de datos con el siguiente e intercambia la posición si no están en el orden correcto.
  • Por selección, que colocan el elemento más pequeño disponible en las posiciones de la lista de manera consecutiva.
  • De ordenamiento rápido, que funcionan mediante la elección de un elemento pivote y la reubicación ordenada a sus lados.

Los voraces

Son empleados para la optimización de procesos. Su finalidad es escoger en cada paso el elemento más prometedor y comprobar en el momento si puede ser una pieza de una solución global. Así una y otra. Una de sus manifestaciones más exitosas es el algoritmo problema de la mochila fraccional. Se trata de uno que analiza los diferentes elementos, cada uno con un valor y con un peso asociados, para definir cuáles cargar en una mochila con el objetivo de transportar el máximo valor sin superar el peso máximo.

Programación dinámica

Dividen los problemas complejos en muchos subproblemas, calculan soluciones para estos y los almacenan para utilizarlos posteriormente en la resolución global de los primeros. Requieren de que los problemas tengan subestructuras y subproblemas superpuestos. La sucesión de Fibonacci, sucesión de números que comienza con «0» y «1» y a partir de los cuales cada número se obtiene de la suma de los dos anteriores, es un ejemplo claro de programación dinámica.

Algoritmos probabilísticos

Son utilizados en situaciones en los que hay una limitación de tiempo y puede prescindirse de una solución óptima. Basan su funcionamiento en un muestreo aleatorio del input, a través del cual alcanzan una solución simplemente adecuada. Se dividen en dos variedades principales. Por un lado, el algoritmo de Montecarlo, en el que se da una pequeña probabilidad de desacierto. Por otro lado, el algoritmo de Las Vegas, que interpreta como correcta cualquier solución que alcance en un periodo de tiempo concreto.

que es un algoritmo

Medios de expresión de un algoritmo

Diagrama de flujo

Se trata de una descripción gráfica del algoritmo a base de símbolos conectados con flechas, las cuales indican la secuencia de las instrucciones que contiene. Se rige por ISO y proporciona una visualización del algoritmo de nivel alto.

Pseudocódigo

El pseudocódigo combina el lenguaje natural con elementos sintácticos de los lenguajes de programación como las asignaciones, ciclos o condicionales. Suele utilizarse como antesala del código del algoritmo para trabajar en él.

Sistemas formales

Se trata de modelos matemáticos que formalizan el algoritmo. Como el modelo de la máquina de Turing. Entre sus ventajas se encuentran el alto grado de precisión o la independencia respecto a los ordenadores.

Implementación

La expresión de los algoritmos también puede llegar mediante su implementación en un programa informático, en una red neuronal, en un circuito eléctrico, en un aparato eléctrico o en un aparato mecánico.

Variables

Las variables son elementos que toman los valores de una clase concreta de datos. Pueden hacerlo mediante un procedimiento de entrada de datos o mediante una sentencia de asignación.

Estructuras secuenciales

Las estructuras secuenciales son medios de expresión de los algoritmos en forma de movimientos. Concretamente, movimientos sucesivos en los que una acción sigue a la otra debido a una secuencia programada.

Algoritmos más famosos

Google

Los algoritmos de Google son los conjuntos de instrucciones ordenadas que conforman las SERPs tras la búsqueda de un usuario. Desde  Panda al Neural Matching y pasando por Venice, Penguin, Hummingbird, Pigeon, Pirate, Mobilegeddon, RankBrain, Possum, Mobile First Index, Fred o YML. Todos ellos operan en colaboración.

Facebook o Edgerank

El algoritmo de Facebook es el conjunto de instrucciones a través de las cuales la plataforma decide mostrar ciertos contenidos al usuario y en determinado orden. Su finalidad es precedir qué le interesará a este último. Se le conoce popularmente como Edgerank.

Trading de alta frecuencia

Uno de los algoritmos de trading más famosos que existen. Es capaz de realizar operaciones en nanosegundos, por lo que es usado para entrar y salir inmediatamente del mercado de valores y obtener liquidez en el menor tiempo posible.

Round Robin

También conocido como algoritmo de planificación por turno rotatorio, es uno sencillo utilizado históricamente para el reparto equitativo de la CPU entre los procesos activos a través de la asignación de intervalos de tiempo de ejecución.

Netflix

El algoritmo de Netflix se alimenta del Big Data. Su función es similar a la función de Edgerank en Facebook: predecir qué contenidos les interesará a cada usuario para ofrecérselo en la interfaz de la plataforma. Es clave en la experiencia de usuario.

Spotify

Spotify procesa alrededor de 600GB de datos diarios. Unos datos que son utilizados para recomendar contenidos a los usuarios mediante modelos algorítmicos como el modelo de filtrado colaborativo, el modelo de procesamiento de lenguaje natural o el modelo de audio sin procesar.