🧮 Computational Mathematics

Inicio · Parte 04 — Matemática discreta para computación

088 — Permutaciones

intermedio clase 8 de 20 4 horas demostración permutations_demo

Una permutación cuenta selecciones donde el orden importa.

Fórmulas

P(n) = n!
P(n,k) = n!/(n−k)!
con repetición: nᵏ

Desarrollo

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.

Ejemplo trabajado

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

Qué calcula el laboratorio

Permutaciones: el orden importa.

python classes/part-04-matematica-discreta-para-computacion/088-permutaciones/lab.py
compmath run 088

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "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
}

Errores comunes

Dónde se usa

Barajado y muestreo sin reemplazo, problemas de ordenación y planificación, y equivarianza a permutaciones en arquitecturas de atención y GNN.

Idea rectora de la parte

Un DAG sin orden topológico contiene un ciclo: es un diagnóstico, no un error.

Error a evitar

Confundir implicación con equivalencia lógica.

Conexión con IA

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.

Bibliografía de la clase

Archivos de la clase