Las funciones pueden clasificarse según cómo relacionan dominio, codominio e imagen. Las funciones inyectivas no mezclan entradas, las sobreyectivas cubren todo el codominio y las biyectivas hacen ambas cosas.
Una función asigna a cada elemento del dominio exactamente un elemento del codominio. Pero no todas las funciones se comportan igual: algunas distinguen perfectamente las entradas, otras alcanzan todos los valores posibles de salida y otras hacen ambas cosas.
Para describir estas situaciones usamos tres conceptos: inyectiva, sobreyectiva y biyectiva.
Una función f: A → B asigna a cada elemento de A un único elemento de B.
La imagen es el subconjunto de B formado por los valores que realmente se obtienen.
Una función es inyectiva si elementos distintos del dominio tienen imágenes distintas.
También se dice que una función inyectiva es "uno a uno". Ningún valor de salida es usado por dos entradas diferentes.
La función es inyectiva porque cada elemento del dominio tiene una salida distinta. El valor d queda sin usar, pero eso no afecta la inyectividad.
Esta función no es inyectiva porque 1 y 2 tienen la misma imagen: a.
Una función es sobreyectiva si todo elemento del codominio aparece como imagen de al menos un elemento del dominio.
En una función sobreyectiva, la imagen coincide con el codominio.
La función es sobreyectiva porque todos los elementos del codominio, a y b, aparecen como salida.
Esta función no es sobreyectiva porque el elemento c del codominio no aparece como imagen.
Una función es biyectiva si es inyectiva y sobreyectiva al mismo tiempo.
En una biyección, cada elemento del dominio se asocia con un elemento distinto del codominio y todos los elementos del codominio son usados.
La función es biyectiva porque no repite salidas y además cubre todo el codominio.
| Tipo | Condición | Idea intuitiva |
|---|---|---|
| Inyectiva | No hay dos entradas distintas con la misma salida | No mezcla entradas |
| Sobreyectiva | La imagen cubre todo el codominio | No deja salidas sin usar |
| Biyectiva | Es inyectiva y sobreyectiva | Empareja dominio y codominio perfectamente |
Cuando los conjuntos son finitos, la cardinalidad ayuda a razonar sobre estos tipos de funciones.
| Situación | Consecuencia |
|---|---|
| Existe una inyección A → B | |A| ≤ |B| |
| Existe una sobreyección A → B | |A| ≥ |B| |
| Existe una biyección A → B | |A| = |B| |
Estas relaciones son especialmente útiles para comparar tamaños de conjuntos.
Una función representada como pares es inyectiva si no repite salidas para entradas distintas.
function esInyectiva(relacion) {
const salidas = relacion.map(([, salida]) => salida);
return new Set(salidas).size === salidas.length;
}
const inyectiva = [[1, "a"], [2, "b"], [3, "c"]];
const noInyectiva = [[1, "a"], [2, "a"], [3, "b"]];
console.log(esInyectiva(inyectiva));
console.log(esInyectiva(noInyectiva));
Si las salidas distintas son tantas como los pares, no hay repetición de imágenes.
Una función es sobreyectiva si cada elemento del codominio aparece como salida.
function esSobreyectiva(codominio, relacion) {
const imagen = new Set(relacion.map(([, salida]) => salida));
return codominio.every(valor => imagen.has(valor));
}
const codominio = ["a", "b", "c"];
const f1 = [[1, "a"], [2, "b"], [3, "c"]];
const f2 = [[1, "a"], [2, "b"]];
console.log(esSobreyectiva(codominio, f1));
console.log(esSobreyectiva(codominio, f2));
La segunda función no cubre todo el codominio porque falta c.
Una función es biyectiva si cumple inyectividad y sobreyectividad.
function esInyectiva(relacion) {
const salidas = relacion.map(([, salida]) => salida);
return new Set(salidas).size === salidas.length;
}
function esSobreyectiva(codominio, relacion) {
const imagen = new Set(relacion.map(([, salida]) => salida));
return codominio.every(valor => imagen.has(valor));
}
function esBiyectiva(codominio, relacion) {
return esInyectiva(relacion) && esSobreyectiva(codominio, relacion);
}
const codominio = ["a", "b", "c"];
const f1 = [[1, "a"], [2, "b"], [3, "c"]];
const noInyectiva = [[1, "a"], [2, "a"], [3, "b"]];
console.log(esBiyectiva(codominio, f1));
console.log(esBiyectiva(codominio, noInyectiva));
La biyección establece una correspondencia exacta entre dominio y codominio.
| Tipo | Aplicación | Ejemplo |
|---|---|---|
| Inyectiva | Identificadores únicos | Cada usuario tiene un ID distinto |
| Sobreyectiva | Cobertura completa | Cada categoría tiene al menos un producto |
| Biyectiva | Correspondencia exacta | Cada asiento se asigna a una persona y cada persona a un asiento |
| Biyectiva | Mapeo reversible | Codificación donde cada símbolo tiene una traducción única |
Las funciones inyectivas, sobreyectivas y biyectivas describen formas distintas de conectar dominio y codominio. Estas clasificaciones permiten analizar unicidad, cobertura y correspondencias exactas.
En el próximo tema estudiaremos operaciones y composición de funciones.