Qué es un algoritmo: definición, propiedades y ejemplos

Qué es un algoritmo, qué propiedades cumple, cómo se representa con pseudocódigo y diagramas de flujo y ejemplos clásicos de búsqueda y ordenación con su coste.

Escritorio de estudio con libros, un globo terráqueo y una pizarra cubierta de fórmulas matemáticas

Un algoritmo es un conjunto ordenado y finito de instrucciones precisas que se ejecutan paso a paso para resolver un problema o completar una tarea. Recibe cero o más datos de entrada, los procesa siguiendo reglas que no admiten ambigüedad y devuelve uno o más resultados de salida. Bajo esa definición caben por igual una receta de cocina, la ruta que calcula un navegador GPS y el sistema que decide qué publicación te enseña primero una red social.

El término nació en las matemáticas y hoy es la columna vertebral de casi toda la informática. En este artículo repasamos de dónde viene la palabra, qué propiedades debe cumplir cualquier algoritmo, cómo se representa con pseudocódigo y diagramas de flujo, cuáles son los ejemplos clásicos de búsqueda y ordenación —con su coste medido en notación O—, dónde aparecen en la vida diaria y qué papel juegan en la inteligencia artificial.

Qué es un algoritmo: definición y origen

La palabra «algoritmo» proviene del nombre latinizado del matemático persa del siglo IX Muhammad ibn Musa al-Khwarizmi, cuyos tratados de álgebra y aritmética difundieron en Europa el sistema de numeración indoárabe y el cálculo con cifras. Aquel «Algoritmi» —la forma latina de su nombre— acabó designando el método de cálculo y, por extensión, cualquier procedimiento de cálculo sistemático; el detalle biográfico y etimológico lo recoge el archivo matemático de la Universidad de St Andrews.

La informática usa hoy una definición más operativa. El diccionario de algoritmos y estructuras de datos del NIST lo describe como «un procedimiento computacional bien definido que toma algún valor o conjunto de valores como entrada y produce algún valor o conjunto de valores como salida» (Dictionary of Algorithms and Data Structures). En The Art of Computer Programming, Donald Knuth fija las cinco características que lo distinguen: finitud, definición, entrada, salida y eficacia.

Las propiedades de un algoritmo

Para que un procedimiento sea un algoritmo y no una simple idea, debe cumplir estas condiciones:

Propiedad Qué significa
Finitud Termina tras un número finito de pasos. Un proceso que nunca acaba es un procedimiento, pero no un algoritmo.
Definición Cada paso está especificado sin ambigüedad: en el mismo estado, el algoritmo actúa siempre igual.
Entrada Recibe cero o más datos desde el exterior antes de empezar.
Salida Produce uno o más resultados, relacionados con la entrada recibida.
Eficacia Cada operación es lo bastante básica como para ejecutarse en tiempo finito, a mano o con una máquina.
Generalidad Resuelve una clase de problemas, no un único caso concreto.

La finitud merece un comentario aparte, porque es la frontera entre lo que una máquina puede resolver y lo que no. Un algoritmo debe garantizar que se detiene; si el problema no admite una solución que termine siempre, estamos ante un problema indecidible, no ante un algoritmo mal escrito. La definición es igual de importante en la práctica: una instrucción ambigua («ordena la lista de forma razonable») no sirve, mientras que «compara cada par de elementos adyacentes e intercámbialos si están desordenados» sí es ejecutable sin interpretación.

Cómo se representa un algoritmo

Un algoritmo es una idea, y como tal admite varias formas de expresarse. Antes de escribirlo en un lenguaje de programación concreto se suele describir con herramientas independientes del código, para poder revisarlo, compararlo y corregirlo sin distraerse con la sintaxis.

Pseudocódigo

El pseudocódigo es una mezcla de lenguaje natural y estructuras de programación. No es ejecutable por ninguna máquina, pero cualquier persona con nociones básicas lo entiende. Así se describiría una búsqueda del mayor valor de una lista:

funcion maximo(lista)
    mayor <- lista[0]
    para cada valor en lista hacer
        si valor > mayor entonces
            mayor <- valor
        fin si
    fin para
    devolver mayor
fin funcion

El pseudocódigo obliga a concretar las decisiones —qué pasa si la lista está vacía, por ejemplo— y deja claro el orden de los pasos. Es el paso intermedio habitual entre el planteamiento del problema y su implementación.

Diagramas de flujo

Un diagrama de flujo representa el algoritmo con símbolos gráficos: óvalos para el inicio y el fin, rectángulos para las operaciones, rombos para las decisiones y flechas para el orden de ejecución. Su ventaja es visual: las bifurcaciones se ven de un vistazo y los bucles quedan explícitos. Cuando el algoritmo crece, el diagrama se convierte en un árbol de caminos según las condiciones que se cumplan, lo que ayuda a detectar rutas olvidadas o condiciones que nunca se alcanzan.

Del pseudocódigo al lenguaje de programación

El último paso es traducir la descripción a un lenguaje de programación: el puente entre las instrucciones que entiende una persona y las que puede ejecutar la máquina. Un programa no es más que un conjunto de algoritmos expresados en ese lenguaje y coordinados entre sí. Es habitual que el mismo algoritmo se escriba de formas muy distintas según el lenguaje, aunque el razonamiento de fondo —los pasos, las condiciones y el objetivo— sea idéntico.

Ejemplos clásicos: búsqueda y ordenación

Dos familias de algoritmos concentran casi todos los ejemplos de los manuales: los de búsqueda, que localizan un dato dentro de una colección, y los de ordenación, que colocan esos datos en un orden determinado. Son la puerta de entrada a un concepto clave: la complejidad.

Algoritmos de búsqueda

La búsqueda lineal recorre la lista elemento a elemento hasta encontrar lo que busca. Es sencilla y funciona con datos desordenados, pero en el peor caso examina los n elementos. La búsqueda binaria, en cambio, exige que la lista esté ordenada: comprueba el elemento central y descarta la mitad sobrante en cada paso, de modo que en una lista de un millón de datos resuelve en unas veinte comparaciones. La documentación de Python y de cualquier biblioteca estándar refleja este mismo principio: ordenar una vez permite buscar después de forma muy eficiente.

Algoritmos de ordenación

La ordenación por burbuja compara pares adyacentes y los intercambia hasta que la lista queda ordenada; es fácil de explicar y muy ineficiente en listas grandes. Quicksort elige un elemento de referencia (pivote), separa los menores y los mayores a cada lado y repite el proceso en cada mitad; es rápido en la práctica. Mergesort divide la lista por la mitad, ordena cada parte y las combina; es más predecible y, además, estable. Cada uno refleja una estrategia distinta —intercambio, división y conquista— para llegar al mismo resultado.

La complejidad y la notación O

La complejidad describe cómo crece el trabajo de un algoritmo cuando crece el tamaño de la entrada. La notación O grande expresa ese crecimiento en su peor caso y permite comparar algoritmos sin depender del ordenador donde se ejecuten. Es la razón por la que la elección del algoritmo pesa más que la potencia de la máquina cuando los datos son muchos.

Notación Nombre Ejemplo típico
O(1) Constante Acceder a un elemento de un array por su índice
O(log n) Logarítmica Búsqueda binaria sobre datos ordenados
O(n) Lineal Recorrer una lista una vez, como la búsqueda lineal
O(n log n) Cuasilineal Ordenaciones eficientes como mergesort o quicksort
O(n²) Cuadrática Ordenación por burbuja; comparar cada par de elementos

La diferencia entre O(n) y O(n²) no es teórica: el mismo cálculo que tarda un segundo con mil datos puede tardar horas con un millón. Por eso, cuando un programa se vuelve lento al manejar más información, la causa suele estar en el algoritmo y no solo en el hardware; es una de las razones habituales por las que un ordenador va lento con ciertas tareas.

Algoritmos en la vida diaria

Los algoritmos dejaron de ser un tema de laboratorio hace décadas. Sin que los percibamos, deciden qué vemos, qué compramos y por dónde vamos.

Búsqueda y recomendación

Cuando buscas algo en Google, el orden de los resultados lo determina un conjunto de algoritmos de clasificación. El más conocido es PageRank, descrito por Sergey Brin y Larry Page en su artículo fundacional de 1998 (The Anatomy of a Large-Scale Hypertextual Web Search Engine), que valora una página según los enlaces que recibe de otras páginas relevantes. En paralelo, el feed de una red social o el catálogo de una plataforma de vídeo usan algoritmos de recomendación que ordenan el contenido según tus interacciones anteriores.

Rutas, logística y mercados

El navegador GPS resuelve un problema de caminos mínimos sobre un grafo de carreteras. El algoritmo clásico para ello lo publicó Edsger W. Dijkstra en 1959 (A note on two problems in connexion with graphs) y sigue siendo la base del encaminamiento en redes y de la planificación de reparto. En los mercados financieros, los algoritmos de negociación de alta frecuencia lanzan órdenes automáticamente en función de las condiciones del mercado, en escalas de tiempo que un operador humano no puede seguir.

Sistemas operativos y redes

Dentro del ordenador, la planificación de procesos reparte el tiempo de la CPU entre los programas abiertos: el algoritmo Round Robin, por ejemplo, asigna a cada proceso una porción de tiempo y va rotando. La memoria caché usa algoritmos de reemplazo para decidir qué datos conserva y cuáles descarta, y las redes recurren a algoritmos de encaminamiento para encontrar el mejor camino entre dos puntos. Todo ello hunde sus raíces en la historia de la informática, donde el diseño de procedimientos precede incluso a los primeros ordenadores electrónicos.

El papel de los algoritmos en la inteligencia artificial

La inteligencia artificial no es una excepción: es, en gran medida, algoritmia aplicada. Los modelos de machine learning se construyen entrenando un algoritmo con grandes volúmenes de datos para que ajuste sus parámetros y minimice el error. El descenso de gradiente y sus variantes son el método de optimización que hace posible ese ajuste, y la retropropagación permite calcular cómo debe corregirse cada capa de una red neuronal.

En los últimos años, la arquitectura transformer —descrita en el artículo Attention Is All You Need (Vaswani et al., 2017)— y sus mecanismos de atención han impulsado los modelos de lenguaje y de generación de imágenes. Detrás de todos ellos hay, además, algoritmos más clásicos: búsqueda, ordenación y optimización que se ejecutan millones de veces durante el entrenamiento y la inferencia. Por eso el marco de gestión de riesgos de IA del NIST insiste en documentar cómo se diseñan y validan estos sistemas: entender el algoritmo es la primera condición para poder auditarlo. La discusión sobre cómo programar la ética en una máquina viene de lejos: las tres leyes de la robótica que Isaac Asimov imaginó en 1942 son el experimento mental más famoso al respecto.

Conclusión

Un algoritmo es una receta formal: instrucciones ordenadas, finitas y sin ambigüedad que transforman una entrada en una salida. Sus propiedades —finitud, definición, entrada, salida, eficacia y generalidad— marcaron la frontera de lo computable mucho antes de que existieran los ordenadores. Se representa con pseudocódigo y diagramas de flujo, se juzga por su complejidad y sostiene desde la búsqueda en Internet hasta la planificación de procesos, el encaminamiento de red y el aprendizaje automático.

Entender qué son y cómo se miden ayuda a tomar mejores decisiones: elegir el algoritmo adecuado puede ser más determinante que cambiar de máquina, y saber qué hay detrás de un sistema de IA es el primer paso para usarlo y auditarlo con criterio.

Preguntas frecuentes

¿Un algoritmo y un programa son lo mismo?

No. El algoritmo es la descripción abstracta del procedimiento —los pasos y su orden—; el programa es ese algoritmo escrito en un lenguaje de programación concreto y listo para ejecutarse. El mismo algoritmo puede dar lugar a muchos programas distintos según el lenguaje y el estilo del programador.

¿Todo algoritmo tiene que terminar siempre?

Sí. La finitud es una de sus propiedades: un procedimiento que no garantiza su finalización no es un algoritmo, sino un proceso indefinido. Hay problemas que no admiten una solución que termine siempre —son indecidibles— y entonces lo que no existe es el algoritmo, no la implementación.

¿Qué significa la notación O grande?

Describe cómo crece el tiempo o el espacio que consume un algoritmo cuando aumenta el tamaño de la entrada, centrándose en el peor caso y en el término dominante. Permite comparar algoritmos con independencia del ordenador: una solución O(n log n) superará a una O(n²) en cuanto los datos sean suficientemente grandes.

¿Los algoritmos de inteligencia artificial son distintos de los clásicos?

Comparten los mismos fundamentos, pero añaden optimización y aprendizaje. Un modelo de IA sigue siendo una secuencia de operaciones finitas y definidas; lo que cambia es que sus parámetros se ajustan automáticamente a partir de datos, en lugar de fijarse a mano. Por debajo siguen funcionando búsquedas, ordenaciones y operaciones matemáticas de toda la vida.

Fuentes