Qué es un algoritmo: definición, características y ejemplos
Un algoritmo es una lista finita de pasos precisos que convierte unos datos de entrada en un resultado. La lista de Knuth le pide cinco rasgos: que termine, que cada paso sea preciso, que reciba cero o más entradas, que dé al menos una salida y que cada operación sea tan básica que, en principio, pueda hacerse con lápiz y papel.
Última actualización: 2026-11-06
Contenido de esta página
- ¿Qué es un algoritmo? Definición sencilla
- ¿Cuáles son las características de un algoritmo?
- Ejemplos de algoritmos en la vida diaria
- ¿Cómo se representa un algoritmo?
- Algoritmo, programa y función: ¿en qué se diferencian?
- ¿De dónde viene la palabra algoritmo?
- Temas vecinos: aprendizaje, sesgos y mercados
- Por qué la precisión pesa más de lo que parece
En septiembre de 1979, el informático Donald Knuth, de la Universidad de Stanford, viajó a Urgench, en la región de Jorezm, entonces parte de la República Socialista Soviética de Uzbekistán [1]. Iba a dar la charla inaugural de un simposio sobre los algoritmos en la matemática y la informática modernas [1]. Para él era una peregrinación. Llevaba años queriendo conocer la región que le dio nombre a al-Juarismi, el sabio de cuyo nombre sale la palabra que estudiaba [1].
Knuth hizo un chiste de matemático en su discurso. Las fichas de la Biblioteca del Congreso de Estados Unidos decían que al-Juarismi había florecido entre los años 813 y 846. El promedio da 829,5, así que el simposio caía casi exactamente 1.150 años después [1]. Lo celebró como un aniversario.
La anécdota deja una pista. La palabra viene de un matemático que trabajó unos once siglos antes de que existieran los computadores. Un algoritmo, entonces, no es una cosa de máquinas. Es una receta exacta: una lista de pasos que, seguidos al pie de la letra, convierten unos datos en un resultado.

¿Qué es un algoritmo? Definición sencilla
Un algoritmo es un procedimiento que toma unos datos de entrada y, paso a paso, entrega un resultado. El curso de introducción a los algoritmos del Instituto Tecnológico de Massachusetts lo define como un procedimiento que lleva cada entrada a una sola salida [2]. Para la misma entrada, siempre la misma salida. Y agrega una condición exigente: el algoritmo resuelve un problema solo si da la respuesta correcta para todas las entradas posibles, no para algunas [2].
Esa condición es la que separa un algoritmo de un truco. Sumar dos números largos «a ojo» funciona a veces. El método de la suma con llevadas que se aprende en la escuela funciona siempre, con números de cualquier tamaño.
Este concepto es la puerta de entrada a la disciplina de las estructuras de datos y algoritmos, que estudia cómo se organizan los datos y cuánto cuesta procesarlos. Aquí nos quedamos con la idea en sí.
¿Cuáles son las características de un algoritmo?
La lista de rasgos de referencia es la de Knuth, en el primer tomo de su obra The Art of Computer Programming [3]. El filósofo William Rapaport, de la Universidad de Buffalo, la transcribe a sus estudiantes con las palabras del libro [4]. Son cinco, y la segunda dice: «Cada paso de un algoritmo debe estar definido con precisión» (traducción propia, como las demás citas de esta página) [4].
| Característica | Qué exige, según Knuth | Cómo se ve al preparar una receta |
|---|---|---|
| Finitud | Terminar siempre después de un número finito de pasos [4] | La receta acaba cuando el plato está servido |
| Precisión (definición) | Cada paso definido con rigor y sin ambigüedad para cada caso [4] | «Hierva diez minutos» sirve; «cocine hasta que esté bien» no |
| Entrada | Cero o más entradas [4] | Los ingredientes y las cantidades |
| Salida | Una o más salidas [4] | El plato terminado |
| Efectividad | Operaciones tan básicas que, en principio, una persona pueda hacerlas exactamente y en un tiempo finito con lápiz y papel [4] | Medir, mezclar y esperar: nada que exija adivinar |
Fíjese en un detalle de la tabla. La entrada puede ser cero: un algoritmo que imprime los cien primeros números pares no necesita que nadie le dé un dato. La salida, en cambio, nunca es cero. Un procedimiento que no produce nada no le sirve a nadie.
Las partes de un algoritmo: entrada, proceso y salida
De esas cinco características sale una forma sencilla de describir cualquier algoritmo en tres partes. La entrada son los datos con que arranca. El proceso son los pasos, en orden. La salida es el resultado que entrega. Esas tres son lo que se suele llamar las partes de un algoritmo.
Ejemplos de algoritmos en la vida diaria
Antes de tocar un computador, piense en una receta. Esta es ilustrativa, para preparar arroz blanco en casa:
- Mida el arroz y el agua con la misma taza.
- Ponga el agua a hervir con sal.
- Cuando hierva, agregue el arroz y baje el fuego.
- Tape la olla y espere a que el agua se consuma.
- Apague el fuego y sirva.
Tiene entrada (arroz, agua, sal), proceso (cinco pasos en orden) y salida (el arroz listo). Termina. Pero falla en precisión: el primer paso no dice cuánta agua por cada taza de arroz.
Rapaport usa justo ese punto débil para hacer pensar a sus estudiantes. Les propone discutir que la efectividad de las recetas depende del entorno [4]. Otra marca de un ingrediente puede dañar el plato, y la «pizca» de sal de un cocinero puede ser otra medida para el siguiente [4]. Por eso una receta se parece a un algoritmo, pero casi nunca llega a serlo del todo.
Otros ejemplos cotidianos sí se acercan más: la suma con llevadas que se aprende en la escuela, la división larga o las instrucciones numeradas para armar un mueble.
¿Cómo se representa un algoritmo?
Un mismo algoritmo se puede escribir de tres formas sin tocar un computador, y de una cuarta para que lo ejecute la máquina. Para verlas sirve un clásico: el algoritmo de Euclides, que encuentra el máximo común divisor, es decir, el número más grande que divide exactamente a otros dos. Aparece en el libro VII de los Elementos [5].
El curso del Instituto Tecnológico de Massachusetts hace lo mismo con otro problema: primero describe los pasos con palabras y después los escribe en el lenguaje de programación Python [2].
En lenguaje natural
Divida el número mayor entre el menor. Si el residuo, lo que sobra de la división, es cero, el menor es el máximo común divisor. Si no es cero, repita la división con el número menor y el residuo, hasta que la división salga exacta.
En pseudocódigo
El pseudocódigo es una forma de escribir los pasos con la estructura de un programa, pero en palabras humanas, sin las reglas de ningún lenguaje en particular:
Algoritmo MáximoComúnDivisor
Entrada: dos enteros positivos a y b
Mientras b sea distinto de 0:
r ← residuo de dividir a entre b
a ← b
b ← r
Salida: a
En diagrama de flujo
El diagrama de flujo dibuja los pasos como cajas unidas por flechas, con un rombo en cada decisión. La Organización Internacional de Normalización (ISO), que publica estándares técnicos de uso internacional, tiene una norma para esos símbolos: la ISO 5807, de 1985, que reemplazó a dos normas de 1973 [6]. Cubre, entre otros, los diagramas de flujo de programas [6].

Y en Python, como programa
Este es el mismo algoritmo escrito en Python. Lo ejecuté con Python 3.11 y muestra cada división, para que se vea el proceso:
def mcd(a, b):
"""Máximo común divisor de dos enteros positivos (algoritmo de Euclides)."""
while b != 0: # se detiene cuando el residuo llega a cero
r = a % b # residuo de dividir a entre b
print(f"{a} = {a // b} × {b} + {r}")
a, b = b, r # el divisor pasa a dividendo; el residuo, a divisor
return a # el último divisor distinto de cero es el MCD
print("MCD:", mcd(3009, 884))
La salida es esta:
3009 = 3 × 884 + 357
884 = 2 × 357 + 170
357 = 2 × 170 + 17
170 = 10 × 17 + 0
MCD: 17
Los residuos 357, 170 y 17 son los mismos que obtiene el matemático David Joyce, de la Universidad Clark, al explicar este pasaje de Euclides con esos dos números [5]. Euclides restaba una y otra vez en lugar de dividir; Joyce aclara que dividir da el mismo residuo [5]. Si usted quiere practicar el lenguaje desde cero, la guía de Python para datos es el siguiente paso.
Algoritmo, programa y función: ¿en qué se diferencian?
Las tres palabras se usan como sinónimos, y no lo son. El algoritmo es la idea; el programa, esa idea escrita para que una máquina la ejecute; la función, un pedazo de programa con nombre propio.
| Algoritmo | Programa | Función | |
|---|---|---|---|
| Qué es | La secuencia de pasos, independiente de cualquier lenguaje | Uno o varios algoritmos escritos en un lenguaje de programación | Una serie de instrucciones que devuelve un valor a quien la llama [7] |
| Dónde vive | En papel, en pseudocódigo o en la cabeza | En archivos que ejecuta un computador | Dentro de un programa |
| ¿Tiene que terminar? | Sí, según la lista de Knuth [4] | No siempre: Rapaport cita cajeros automáticos y sistemas operativos, que no terminan [4] | Normalmente sí: termina cuando devuelve su valor |
| En el ejemplo | El método de Euclides | El archivo completo de Python | mcd(a, b) |
La tercera fila es la más interesante. Rapaport pone a sus estudiantes a discutir el caso de los cajeros, los sistemas de reservas aéreas y los sistemas operativos, que nunca terminan [4]. Según la lista de Knuth, un proceso sin final no sería un algoritmo. Y, sin embargo, cada operación que hacen, como verificar un saldo, sí tiene principio y fin.
¿De dónde viene la palabra algoritmo?
Knuth lo dice sin rodeos en su discurso de Urgench: la palabra deriva del nombre de al-Juarismi, «el gran científico del siglo IX cuyo nombre significa “de Jorezm”» [1]. Añade que la palabra española guarismo, que significa dígito, viene del mismo nombre [1].
Al-Juarismi trabajó en Bagdad, en la academia de sabios conocida como la Casa de la Sabiduría, bajo el califa al-Mamún [1]. Knuth advierte que se sabe poco con certeza de su vida y que su nombre no prueba que naciera en Jorezm [1].
Su pequeño libro sobre lo que él llamó el arte indio del cálculo enseñaba a calcular con las cifras indias, es decir, con el sistema decimal [1]. El original en árabe parece haberse perdido. Lo que queda es, en esencia, una copia incompleta de los años 1200 de una traducción al latín, probablemente hecha en los años 1100 [1]. Knuth, con humor, duda incluso de llamar algoritmos a esos métodos de suma, resta, multiplicación y división, porque omiten muchos detalles [1]. Es decir: les faltaba precisión, la segunda característica de la tabla.
Temas vecinos: aprendizaje, sesgos y mercados
Tres temas vecinos tienen su propio espacio. Los algoritmos que aprenden de los datos en vez de seguir reglas fijas se explican en la guía de machine learning. Los sesgos que un algoritmo puede reproducir y quién responde por ellos se tratan en gobierno de datos. Y si lo que busca son los mecanismos de mercado que asignan recursos, eso es tema de economía, no de computación.
Por qué la precisión pesa más de lo que parece
A mi modo de ver, la característica que más se subestima es la precisión. En un análisis de datos, el paso peligroso rara vez es la fórmula difícil. Es el que alguien dejó «a criterio»: qué hacer con una celda vacía, con un valor repetido, con una fecha mal digitada. Ahí la receta deja de ser un algoritmo.
Al-Juarismi enseñó a calcular con cifras hace más de once siglos, y Knuth todavía le señalaba, con humor, los detalles que omitió. La vara está bien puesta. Antes de escribir una sola línea de código, escriba los pasos en español y pregúntese si un desconocido, con lápiz y papel, llegaría al mismo resultado que usted.
Preguntas frecuentes
¿Un algoritmo tiene que estar escrito en un lenguaje de programación? No. Puede estar en un cuaderno, en una lista de pasos o en un dibujo con flechas. El lenguaje de programación es solo una de las formas de expresarlo, la que permite que lo ejecute una máquina.
¿Para qué sirve el algoritmo de Euclides? Sirve para hallar el número más grande que divide a otros dos sin dejar residuo. También sirve para simplificar fracciones: al dividir el numerador y el denominador entre su máximo común divisor, la fracción queda en su forma más simple.
¿Qué tipos de algoritmos hay? Se pueden agrupar de muchas maneras. Una es por el problema que resuelven: buscar, ordenar, calcular. Otras, por la técnica con que se diseñan o por si siguen reglas fijas o aprenden de los datos. La clasificación por técnica de diseño es un tema aparte, y la de los que aprenden de ejemplos corresponde al aprendizaje automático.
¿Qué diferencia hay entre pseudocódigo y diagrama de flujo? Los dos describen el mismo algoritmo sin atarse a un lenguaje. El pseudocódigo lo hace con texto ordenado en renglones; el diagrama de flujo, con figuras y flechas que muestran por dónde sigue el proceso en cada decisión.
¿Una calculadora usa algoritmos? Sí. Cada operación que hace, desde sumar hasta sacar una raíz, sigue un procedimiento de pasos fijos que termina y entrega un resultado. Es el mismo tipo de idea que al-Juarismi enseñaba a hacer a mano.
Referencias
- Donald E. Knuth, Stanford University. Algorithms in Modern Mathematics and Computer Science, informe STAN-CS-80-786 (enero de 1980) — texto de la charla inaugural del simposio de Urgench (Jorezm, RSS de Uzbekistán, 16-22 de septiembre de 1979); deseo de peregrinar al lugar desde que supo que «algorithm» deriva del nombre de al-Juarismi, «the great ninth-century scientist whose name means “from Khwarizm.”»; guarismo viene del mismo nombre; las fichas de la Biblioteca del Congreso lo dan como activo entre 813 y 846 (promedio 829,5, «almost exactly 1150 years ago»); trabajo en Bagdad en la Casa de la Sabiduría bajo al-Mamún; el nombre no prueba que naciera en Jorezm; la aritmética sobrevive en una copia incompleta del siglo XIII de una traducción latina probablemente del siglo XII, sobre el cálculo con cifras indias; «if we may call them algorithms, since they omit many details». Archive.org: informe STAN-CS-80-786 de Knuth — Consultada: 2026-11-06.
- MIT OpenCourseWare. Erik Demaine, Jason Ku y Justin Solomon, 6.006 Introduction to Algorithms, Lecture 1: Introduction (primavera de 2020) — algoritmo: «Procedure mapping each input to a single output (deterministic)»; resuelve un problema si devuelve una salida correcta para toda entrada; el ejemplo de los cumpleaños se da primero en pasos con palabras y luego en código Python. MIT OCW: 6.006, apuntes de la clase 1 (PDF) — Consultada: 2026-11-06.
- Donald E. Knuth, Stanford University. The Art of Computer Programming, página oficial de la obra — volumen 1, Fundamental Algorithms (primera edición de 1968; tercera edición, Addison-Wesley, 1997). Stanford: página de Knuth sobre TAOCP — Consultada: 2026-11-06.
- William J. Rapaport, University at Buffalo. Philosophy of Computer Science, Position Paper #2: What Is Computation? (2010) — transcribe la caracterización de Knuth (1973, págs. 4-6): «Finiteness. An algorithm must always terminate after a finite number of steps»; «Definiteness. Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case»; «Input. An algorithm has zero or more inputs»; «Output. An algorithm has one or more outputs»; «Effectiveness», operaciones hechas exactamente y en tiempo finito con lápiz y papel; y, como premisas para discutir, que sistemas de reservas aéreas, cajeros automáticos y sistemas operativos nunca terminan, y que la efectividad de las recetas depende del entorno (marca del ingrediente, la «pizca» de sal). University at Buffalo: Rapaport, Position Paper #2 — Consultada: 2026-11-06.
- David E. Joyce, Clark University. Euclid’s Elements, Book VII, Proposition 2 — hallar la mayor medida común de dos números; la guía lo llama algoritmo de Euclides (antenaresis), calcula MCD(884, 3009) = 17 con residuos 357, 170 y 17, y aclara que dividir da el mismo residuo que restar repetidamente. Clark University: Elementos de Euclides, VII.2 — Consultada: 2026-11-06.
- ISO. ISO 5807:1985 Information processing — Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts — define los símbolos para la documentación de procesamiento de información y las convenciones de diagramas de flujo de datos, de programas y de sistemas; publicada en febrero de 1985; reemplazó a las normas retiradas ISO 1028:1973 e ISO 2636:1973. ISO: norma ISO 5807:1985 — Consultada: 2026-11-06.
- Python Software Foundation. Glossary, documentación de Python 3.15.2 — función: «A series of statements which returns some value to a caller», que puede recibir cero o más argumentos. Python docs: glosario — Consultada: 2026-11-06.
Cómo investigamos esta página
- Pregunta que responde: Qué es un algoritmo, qué cinco características lo definen, cómo se escribe y en qué se diferencia de un programa y de una función.
- Fuentes: identificadas 24 → incluidas 7
- Criterios de inclusión: solo textos de primera mano, documentación oficial y páginas universitarias (Knuth, MIT, Buffalo, Clark, ISO, Python), verificados en su texto original; nada de enciclopedias ni sitios de tutoriales.
- Fecha de corte de los datos: 2026-11-06