Inicio · Parte 04 — Matemática discreta para computación
P(n) = n!
P(n,k) = n!/(n−k)!
con repetición: nᵏ
Permutar es ordenar. El número de ordenaciones completas de n objetos distintos es n!, y el argumento es la regla del producto: hay n opciones para la primera posición, n−1 para la segunda —ya se usó una— y así sucesivamente.
Las permutaciones parciales P(n,k) cuentan las formas de elegir k objetos en orden entre n disponibles: n!/(n−k)!. Si además se permite repetir, el conteo es nᵏ, porque cada posición vuelve a tener n opciones. Distinguir los tres casos —total, parcial sin repetición, parcial con repetición— es la mitad de la combinatoria elemental.
El factorial crece brutalmente: 10! ≈ 3.6·10⁶, 20! ≈ 2.4·10¹⁸, 70! ya supera el mayor float64 representable. Ese crecimiento es la razón por la que el problema del viajante no se resuelve por fuerza bruta y por la que cualquier algoritmo con coste factorial es inviable más allá de una veintena de elementos.
En deep learning las permutaciones aparecen de forma indirecta pero relevante: la atención es permutación-equivariante, es decir, permutar los tokens de entrada permuta la salida de la misma forma. Esa propiedad es la que hace necesario el positional encoding (clase 323), porque sin él el modelo no distinguiría el orden.
Permutaciones de cuatro elementos.
elementos: A, B, C, D
permutaciones totales: 4! = 24
P(4,2) = 4!/2! = 12 (elegir 2 en orden)
AB AC AD BA BC BD CA CB CD DA DB DC
con repetición: 4² = 16 (AA, AB, ..., DD)
Crecimiento del factorial:
10! = 3 628 800
20! = 2.43·10¹⁸
70! > 1.8·10³⁰⁸ → desborda float64
Permutaciones: el orden importa.
python classes/part-04-matematica-discreta-para-computacion/088-permutaciones/lab.py
compmath run 088
elementospermutaciones_totales_4!P(4,2)formula_n!/(n-k)!primeras_5con_repeticion_4^2{
"elementos": [
"A",
"B",
"C",
"D"
],
"permutaciones_totales_4!": 24,
"P(4,2)": 12,
"formula_n!/(n-k)!": 12,
"primeras_5": [
[
"A",
"B"
],
[
"A",
"C"
],
[
"A",
"D"
],
[
"B",
"A"
],
[
"B",
"C"
]
],
"con_repeticion_4^2": 16
}
Barajado y muestreo sin reemplazo, problemas de ordenación y planificación, y equivarianza a permutaciones en arquitecturas de atención y GNN.
Los grafos de cómputo, la búsqueda en árbol y las GNN son estructuras discretas; el conteo sostiene la probabilidad que después usa todo modelo generativo.
math.perm e itertools.permutations — documentación de la herramienta que ejecuta el laboratorio · URL de la fuente primaria comprobada en Python Software Foundation (2026-08-19).9788131708415 verificado en International ISBN Agency (2026-08-19).