Inicio · Parte 00 — Pensamiento matemático desde cero
1 + 2 + ... + n = n(n+1)/2
|{1, 2, ..., n}| = n
Contar parece trivial hasta que se intenta programar. Cuando decimos que un conjunto tiene 7 elementos, estamos afirmando que existe una correspondencia uno a uno entre ese conjunto y {1,2,3,4,5,6,7}. Esa definición —debida a la construcción de los naturales que formalizaron Peano y Dedekind a finales del siglo XIX— es la que permite contar cosas que no se pueden señalar con el dedo: las combinaciones posibles de una contraseña, los caminos en un grafo, los estados de un programa.
La suma de los primeros n naturales ilustra la diferencia entre contar y calcular. Sumar uno a uno cuesta n operaciones; la fórmula cerrada cuesta tres, independientemente de n. El argumento clásico —atribuido a Gauss siendo niño, aunque la anécdota es probablemente apócrifa— consiste en emparejar el primer término con el último, el segundo con el penúltimo, y observar que cada pareja suma n+1 y que hay n/2 parejas.
Esta distinción reaparece durante todo el programa. En la parte 04 se llamará «complejidad algorítmica»; en la parte 11, «coste de un método numérico». Aquí es simplemente la observación de que dos procedimientos correctos pueden diferir en cuántas operaciones necesitan, y que esa diferencia importa cuando n es grande.
Un detalle que el laboratorio comprueba: la fórmula cerrada y la suma iterativa dan exactamente el mismo entero. Con enteros de Python esto es cierto siempre. En la parte 01 veremos que con números en punto flotante la coincidencia deja de estar garantizada, y por qué.
Sumar los enteros de 1 a 100.
Iterativo: 1 + 2 + 3 + ... + 100 → 100 sumas
Emparejado: (1+100) + (2+99) + ... → 50 parejas de 101
50 · 101 = 5050
Cerrado: n(n+1)/2 = 100·101/2 = 5050 → 3 operaciones
Verificación cruzada: ambos caminos deben dar 5050. Si no coinciden, uno de los dos está mal implementado. Esa comprobación —dos caminos independientes al mismo resultado— es el patrón de verificación que se usará en todo el programa.
Conteo, suma de Gauss y verificación cerrada frente a iterativa.
python classes/part-00-pensamiento-matematico-desde-cero/001-numeros-naturales-y-conteo/lab.py
compmath run 001
nsuma_iterativasuma_formula_cerradacoincidenoperaciones_iterativasoperaciones_formula{
"n": 100,
"suma_iterativa": 5050,
"suma_formula_cerrada": 5050,
"coinciden": true,
"operaciones_iterativas": 100,
"operaciones_formula": 3
}
Toda estimación de coste computacional empieza por un conteo. El número de comparaciones de un algoritmo de ordenación, el número de parejas en un producto cartesiano y el número de operaciones de una multiplicación de matrices son sumas de este tipo. En la parte 04 el conteo se vuelve combinatoria; en la 09, probabilidad.
Toda métrica de un modelo (accuracy, loss, learning rate) es una razón, un porcentaje o una escala. Interpretarlas mal es el primer error de un practicante de IA.
9780387967875 verificado en International ISBN Agency (2026-08-20).9788131708415 verificado en International ISBN Agency (2026-08-19).