29. Funciones como relaciones especiales

Una función es una relación especial donde cada elemento del dominio se asocia con un único elemento del codominio. Esta idea conecta teoría de conjuntos, matemática y programación.

29.1 Introducción

En teoría de conjuntos, una función no se define primero como una fórmula, sino como una relación con una propiedad especial: cada entrada tiene exactamente una salida.

Esta definición permite estudiar funciones de forma general, ya sea que aparezcan como reglas matemáticas, tablas, asignaciones, transformaciones de datos o funciones de programación.

29.2 Recordatorio: relación

Una relación entre dos conjuntos A y B es un subconjunto del producto cartesiano A × B.

R ⊆ A × B

Una relación puede asociar un elemento de A con ninguno, uno o varios elementos de B.

29.3 Qué es una función

Una función de A en B es una relación que asigna a cada elemento de A exactamente un elemento de B.

f: A → B

El conjunto A es el dominio y B es el codominio.

29.4 Condición de existencia

Para que una relación sea función, cada elemento del dominio debe tener una salida.

Para todo a ∈ A, existe b ∈ B tal que (a, b) ∈ f

Si algún elemento del dominio no aparece como entrada, la relación no representa una función total de A en B.

29.5 Condición de unicidad

Además, cada elemento del dominio debe tener una única salida.

Si (a, b) ∈ f y (a, c) ∈ f, entonces b = c

Un mismo elemento de entrada no puede tener dos resultados distintos.

29.6 Ejemplo que sí es función

A = {1, 2, 3} B = {a, b, c} f = {(1, a), (2, b), (3, b)}

Esta relación es función porque cada elemento de A aparece una vez como primer componente y tiene una única salida.

29.7 Ejemplo que no es función

A = {1, 2, 3} B = {a, b, c} R = {(1, a), (1, b), (2, c), (3, a)}

Esta relación no es función porque el elemento 1 tiene dos salidas distintas: a y b.

29.8 Relación parcial

También puede ocurrir que una relación asigne una salida única a cada entrada que aparece, pero que falten elementos del dominio.

A = {1, 2, 3} R = {(1, a), (2, b)}

Si el dominio declarado es A, esta relación no es una función total de A en B porque falta una salida para 3. En programación, a veces se habla de funciones parciales cuando no están definidas para todas las entradas posibles.

29.9 Dominio, codominio e imagen

En una función f: A → B, el dominio es A, el codominio es B y la imagen es el conjunto de valores de B que realmente se obtienen.

f = {(1, a), (2, b), (3, b)} Dominio = {1, 2, 3} Codominio = {a, b, c} Imagen = {a, b}

El elemento c está en el codominio, pero no está en la imagen.

29.10 Diferencia entre relación y función

Aspecto Relación Función
Entradas Pueden no aparecer Cada elemento del dominio debe aparecer
Salidas por entrada Puede haber varias Debe haber exactamente una
Estructura Subconjunto cualquiera de A × B Subconjunto de A × B con existencia y unicidad
Ejemplo Usuario tiene varios permisos Usuario tiene una fecha de nacimiento

29.11 Funciones como tablas

Una tabla puede representar una función si cada entrada aparece una sola vez y tiene un único resultado.

Entrada Salida
1 2
2 4
3 6

Esta tabla representa la función que duplica cada entrada.

29.12 Funciones en programación

Una función de programación recibe entradas y devuelve una salida. Aunque puede tener efectos secundarios en algunos lenguajes, la idea matemática se refleja cuando una misma entrada produce un resultado definido.

function doble(numero) {
  return numero * 2;
}

console.log(doble(1));
console.log(doble(2));
console.log(doble(3));

Esta función asigna a cada número una salida única.

29.13 Verificar si una relación es función en JavaScript

Podemos revisar una relación representada como arreglo de pares.

function esFuncion(dominio, relacion) {
  const salidasPorEntrada = new Map();

  for (const [entrada, salida] of relacion) {
    if (salidasPorEntrada.has(entrada) && salidasPorEntrada.get(entrada) !== salida) {
      return false;
    }
    salidasPorEntrada.set(entrada, salida);
  }

  return dominio.every(entrada => salidasPorEntrada.has(entrada));
}

const dominio = [1, 2, 3];
const relacion = [[1, "a"], [2, "b"], [3, "b"]];
const noFuncion = [[1, "a"], [1, "b"], [2, "c"], [3, "a"]];

console.log(esFuncion(dominio, relacion));
console.log(esFuncion(dominio, noFuncion));

La primera relación cumple existencia y unicidad. La segunda falla unicidad.

29.14 Calcular imagen de una función

La imagen se obtiene tomando las salidas distintas.

const relacion = [[1, "a"], [2, "b"], [3, "b"]];

function imagen(relacion) {
  return new Set(relacion.map(([, salida]) => salida));
}

console.log([...imagen(relacion)]);

El resultado contiene los valores del codominio que realmente aparecen como salida.

29.15 Aplicaciones prácticas

Contexto Función Interpretación
Usuarios usuario → correo Cada usuario tiene un correo principal
Productos producto → precio Cada producto tiene un precio actual
Geometría x → x² Cada entrada numérica produce un cuadrado
Programación entrada → resultado Una función transforma datos
Bases de datos id → registro Cada clave identifica un registro

29.16 Errores frecuentes

  • Creer que toda relación es una función.
  • Permitir dos salidas distintas para la misma entrada.
  • Olvidar que todos los elementos del dominio deben estar definidos.
  • Confundir codominio con imagen.
  • Confundir una fórmula con la definición general de función.

29.17 Qué debes recordar de este tema

  • Una función es una relación especial.
  • Cada elemento del dominio debe tener exactamente una salida.
  • Una función puede representarse como conjunto de pares ordenados.
  • El codominio contiene salidas posibles; la imagen contiene salidas usadas.
  • No toda relación es función.
  • En JavaScript, una función puede verificarse revisando existencia y unicidad de salidas.

29.18 Conclusión

Las funciones son relaciones con una restricción fuerte: cada entrada tiene una única salida. Esta definición permite entender funciones matemáticas, tablas, transformaciones de datos y funciones de programación bajo una misma idea.

En el próximo tema estudiaremos funciones inyectivas, sobreyectivas y biyectivas.