21. Introducción al concepto de función

Una función es una relación especial donde cada elemento del dominio tiene exactamente una imagen. Esta restricción simple es la base de toda la matemática aplicada y de cualquier programa de computadora.

21.1 Introducción

Hasta aquí hemos estudiado relaciones binarias en toda su generalidad: un elemento puede estar relacionado con ninguno, uno o varios elementos del codominio. Las funciones son un caso particular muy importante: cada elemento del dominio tiene exactamente una imagen.

Esta condición de unicidad es lo que diferencia a una función de una relación general, y es precisamente lo que le da su poder expresivo: una función transforma cada entrada en una salida bien definida y predecible.

21.2 Definición formal

Una función f de un conjunto A en un conjunto B, escrita f : A → B, es una relación de A en B que cumple:

  • Existencia: todo elemento a ∈ A tiene al menos una imagen en B.
  • Unicidad: todo elemento a ∈ A tiene a lo sumo una imagen en B.
f es función ⟺ para todo a ∈ A existe un único b ∈ B tal que (a, b) ∈ f

La imagen de a bajo f se escribe f(a) y se llama el valor de la función en a.

21.3 Función vs. relación general

No toda relación es una función. La diferencia clave está en cuántas imágenes puede tener cada elemento del dominio:

Situación ¿Es función? Motivo
Cada elemento tiene exactamente una imagen Cumple existencia y unicidad
Un elemento tiene dos imágenes distintas No Viola la unicidad
Un elemento no tiene ninguna imagen No Viola la existencia
Dos elementos distintos tienen la misma imagen No viola ninguna condición
Hay elementos del codominio sin preimagen No es obligatorio que todo b ∈ B sea imagen

21.4 Ejemplo: relación que es función

Sea A = {1, 2, 3} y B = {a, b, c}. La relación:

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

Es una función porque cada elemento de A aparece exactamente una vez como primer componente. El hecho de que tanto 1 como 2 tengan imagen a no es un problema: la condición solo exige unicidad hacia la derecha.

21.5 Ejemplo: relación que NO es función

La relación:

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

No es una función porque el elemento 1 tiene dos imágenes distintas: a y b. Viola la condición de unicidad.

Tampoco sería función si faltara algún elemento de A como primer componente, por ejemplo:

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

El elemento 3 no tiene imagen, lo que viola la condición de existencia.

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

Para verificar si una relación es función, comprobamos que todo elemento del dominio aparece como primer componente exactamente una vez.

function esFuncion(dominio, relacion) {
  for (const a of dominio) {
    const imagenes = relacion.filter(([x]) => x === a);

    // Debe tener exactamente una imagen
    if (imagenes.length !== 1) return false;
  }
  return true;
}

const A = [1, 2, 3];

const f = [[1, 'a'], [2, 'a'], [3, 'c']];
const R = [[1, 'a'], [1, 'b'], [2, 'c']];
const S = [[1, 'a'], [2, 'b']];   // falta el 3

console.log(esFuncion(A, f)); // true
console.log(esFuncion(A, R)); // false  (1 tiene dos imágenes)
console.log(esFuncion(A, S)); // false  (3 no tiene imagen)

21.7 Notación y terminología

Las funciones tienen una terminología propia que conviene conocer:

Término Símbolo Significado
Función f : A → B f asigna a cada a ∈ A un único b ∈ B
Dominio Dom(f) = A Conjunto de todas las entradas posibles
Codominio Cod(f) = B Conjunto donde viven todas las posibles salidas
Imagen de a f(a) El único b tal que (a, b) ∈ f
Imagen de f Im(f) Conjunto de todos los valores realmente alcanzados
Preimagen de b f⁻¹(b) Conjunto de a ∈ A con f(a) = b

21.8 Funciones en programación

En programación, las funciones (o métodos) son exactamente la misma idea: reciben una entrada y producen una salida bien definida. Una función pura en programación es aquella que, para la misma entrada, siempre devuelve la misma salida sin efectos secundarios.

// Una función matemática: f(x) = x² + 1
function f(x) {
  return x * x + 1;
}

// Verificar que es una asignación única:
// para cada entrada existe exactamente una salida
console.log(f(2));  // 5
console.log(f(3));  // 10
console.log(f(2));  // siempre 5, nunca cambia

La condición de unicidad equivale a que la función sea determinista: la misma entrada produce siempre la misma salida.

21.9 Imagen vs. codominio

Es importante distinguir entre la imagen de una función y su codominio. El codominio es el conjunto donde pueden vivir los resultados; la imagen es el conjunto de resultados que realmente se alcanzan.

f : {1, 2, 3} → {a, b, c, d} f = {(1, a), (2, a), (3, b)} Codominio = {a, b, c, d} Imagen = {a, b} ← solo los valores realmente alcanzados
const f = [[1, 'a'], [2, 'a'], [3, 'b']];
const codominio = ['a', 'b', 'c', 'd'];

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

console.log(imagen(f));       // ['a', 'b']
console.log(codominio);       // ['a', 'b', 'c', 'd']

21.10 Tipos de funciones: una primera vista

Según la relación entre dominio, codominio e imagen, las funciones se clasifican en tres tipos principales que estudiaremos en detalle en los próximos temas:

Tipo Condición Ejemplo
Inyectiva Elementos distintos tienen imágenes distintas f(a) = f(b) implica a = b
Sobreyectiva Todo elemento del codominio tiene preimagen Im(f) = codominio
Biyectiva Inyectiva y sobreyectiva a la vez Correspondencia uno a uno

21.11 Funciones en distintos contextos

Contexto Ejemplo de función Dominio → Codominio
Matemáticas f(x) = x² ℝ → ℝ
Programación parseInt(cadena) String → Number
Bases de datos Clave primaria → Fila ID → Registro
Criptografía Función hash Mensaje → Resumen fijo
Teoría de grafos Grado de un nodo Nodo → ℕ

21.12 Errores comunes

  • Confundir codominio con imagen: el codominio puede ser más grande que la imagen.
  • Creer que dos elementos del dominio no pueden tener la misma imagen: sí pueden, eso no viola ninguna condición.
  • Olvidar verificar que todos los elementos del dominio tienen imagen, no solo algunos.
  • Suponer que toda relación es automáticamente una función.
  • Confundir la preimagen f⁻¹(b) con la función inversa: la preimagen es un conjunto, no siempre una función.

21.13 Qué debes recordar de este tema

  • Una función es una relación donde cada elemento del dominio tiene exactamente una imagen.
  • Las dos condiciones son existencia (todo a tiene imagen) y unicidad (solo una imagen por a).
  • El codominio es donde pueden estar las imágenes; la imagen es donde realmente están.
  • Dos elementos distintos del dominio pueden compartir la misma imagen.
  • En programación, una función pura es determinista: misma entrada, misma salida.
  • Los tipos principales son inyectiva, sobreyectiva y biyectiva.

21.14 Conclusión

El concepto de función es uno de los más fundamentales de las matemáticas y la informática. Su característica esencial, la unicidad de la imagen, garantiza que cada entrada produce una salida predecible y bien definida. Sobre esta base se construyen todos los tipos de funciones que estudiaremos a continuación.

En el próximo tema veremos cómo las funciones son un caso especial de relaciones binarias, y qué condiciones exactas sobre los pares ordenados determinan si una relación es o no una función.