🧮 Computational Mathematics

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

086 — Funciones discretas

intermedio clase 6 de 20 4 horas demostración discrete_functions

Inyectiva, sobreyectiva y biyectiva describen qué información conserva una función.

Fórmulas

funciones totales de A a B: |B|^|A|
biyecciones de A en A: |A|!

Desarrollo

Sobre conjuntos finitos, las tres propiedades se cuentan. Una función es inyectiva si no repite salidas, sobreyectiva si alcanza todo el codominio y biyectiva si ambas. Entre conjuntos del mismo tamaño finito, inyectiva y sobreyectiva son equivalentes —hecho que falla en conjuntos infinitos y da lugar a las paradojas de Hilbert—.

El conteo de funciones ilustra la regla del producto: cada uno de los |A| elementos puede ir a cualquiera de los |B| destinos, luego hay |B|^|A| funciones. Las biyecciones de un conjunto en sí mismo son |A|!, que es el conteo de permutaciones de la clase 088.

La inyectividad es la condición que hace invertible una función (clase 058) y la que define una función hash perfecta. Como una función hash mapea un dominio enorme en un rango pequeño, no puede ser inyectiva, y de ahí las colisiones que el palomar garantiza en la clase 090.

En machine learning, la pérdida de inyectividad es lo que hace que una capa no sea invertible: si la dimensión de salida es menor que la de entrada, información se pierde irremediablemente. Los normalizing flows se construyen precisamente con capas biyectivas para poder invertirlas y calcular densidades exactas.

Ejemplo trabajado

Dos funciones sobre un dominio de tres elementos.

dominio = {1,2,3},  codominio = {a,b,c}

f = {1→a, 2→b, 3→c}
  inyectiva:   3 salidas distintas         ✓
  sobreyectiva: alcanza a, b y c           ✓
  biyectiva                                ✓

g = {1→a, 2→a, 3→b}
  inyectiva:   1 y 2 comparten salida      ✗
  sobreyectiva: no alcanza c               ✗

Conteo:
  funciones totales posibles: 3³ = 27
  biyecciones posibles:       3! = 6

Qué calcula el laboratorio

Inyectiva, sobreyectiva y biyectiva sobre conjuntos finitos.

python classes/part-04-matematica-discreta-para-computacion/086-funciones-discretas/lab.py
compmath run 086

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "f": {
    "1": "a",
    "2": "b",
    "3": "c"
  },
  "f_inyectiva": true,
  "f_sobreyectiva": true,
  "f_biyectiva": true,
  "g": {
    "1": "a",
    "2": "a",
    "3": "b"
  },
  "g_inyectiva": false
}

Errores comunes

Dónde se usa

Funciones hash y colisiones, invertibilidad de capas, codificación sin pérdida y normalizing flows.

Idea rectora de la parte

Una demostración por inducción es un bucle `for` con garantía.

Error a evitar

Asumir que un grafo dirigido es acíclico sin verificarlo.

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