27. Funciones inyectivas

Una función es inyectiva, o uno a uno, si asigna elementos únicos del codominio a elementos únicos del dominio. Es decir, bajo una función inyectiva, es imposible que dos entradas distintas produzcan la misma salida.

27.1 Introducción

En el estudio de las funciones discretas, no todas se comportan igual al transformar los datos del dominio. Algunas agrupan diferentes entradas en un mismo valor de salida, mientras que otras conservan la distinción individual de cada elemento de principio a fin.

Una función f : A → B es **inyectiva** (o *uno a uno*) si elementos distintos del dominio tienen imágenes distintas en el codominio. En términos sencillos: si envías dos entradas diferentes al programa, tienes la garantía absoluta de recibir dos salidas diferentes.

27.2 Definición Formal

Formalmente, una función f : A → B es inyectiva si y solo si cumple la siguiente implicación lógica:

∀ x₁, x₂ ∈ A, si x₁ ≠ x₂ ⇒ f(x₁) ≠ f(x₂)

O equivalentemente, aplicando la contrapositiva (que resulta más útil para demostraciones algebraicas):

Si f(x₁) = f(x₂) ⇒ x₁ = x₂

Si encontramos al menos un par de elementos distintos en el dominio (a ≠ b) tales que tengan la misma imagen (f(a) = f(b)), entonces la función **no es inyectiva**.

27.3 Verificación Visual

Dependiendo de cómo representemos la función, la inyectividad se detecta de la siguiente manera:

  • Diagramas de flechas: La función es inyectiva si ningún elemento del codominio (el conjunto de llegada) recibe más de una flecha. Puede haber elementos en el codominio que no reciban ninguna flecha, pero ninguno debe tener dos o más apuntando hacia él.
  • Plano Cartesiano (Prueba de la Recta Horizontal): Si trazamos cualquier línea recta horizontal en el plano, esta debe intersecar a lo sumo un punto de la gráfica de la función. Si alguna línea horizontal corta dos o más puntos, la función no es inyectiva.

27.4 Simulador: Prueba de la Recta Horizontal

El simulador te permite explorar la inyectividad. Mueve el cursor horizontalmente por la cuadrícula para escanear los puntos y ver si la recta corta a más de un punto a la vez. Observa especialmente cómo cambiar el dominio de una función (como f(x) = x²) puede transformarla de no inyectiva a inyectiva.

Escáner de Recta Horizontal (Test de Inyectividad) Es Inyectiva
¡La función es inyectiva! Ningún valor de salida se repite.

27.5 Demostración Algebraica de Inyectividad

Para probar analíticamente si una función es inyectiva, partimos de la igualdad f(a) = f(b) e intentamos deducir lógicamente que a = b.

Ejemplo 1: Demostrar que f(x) = 3x - 1 sobre es inyectiva.

Partimos de: f(a) = f(b) 3a - 1 = 3b - 1 Sumando 1 a ambos lados: 3a = 3b Dividiendo por 3: a = b Por lo tanto, f es inyectiva.

Ejemplo 2: Analizar si f(x) = x² sobre es inyectiva.

Partimos de: f(a) = f(b) a² = b² Sacando raíz cuadrada: a = ±b Esto significa que a puede ser diferente de b (por ejemplo, a = 2 y b = -2). Como f(2) = 4 y f(-2) = 4, pero 2 ≠ -2, la función no es inyectiva.

27.6 Verificar Inyectividad en Programación

En programación, podemos verificar si una función es inyectiva sobre un dominio finito evaluando las salidas para cada entrada del dominio y asegurándonos de que no haya duplicados. En JavaScript, el objeto Set es ideal para esto, ya que almacena únicamente valores únicos.

const dominio = [-2, -1, 0, 1, 2];

// Función f(x) = x²
const f = (x) => x * x;

// Función g(x) = 2x
const g = (x) => 2 * x;

function esInyectiva(dom, func) {
  const salidas = dom.map(func);
  
  // Set almacena solo elementos únicos
  const salidasUnicas = new Set(salidas);
  
  // Si el tamaño coincide, no hubo duplicados de salida
  return salidasUnicas.size === dom.length;
}

console.log("¿f(x) = x² es inyectiva?", esInyectiva(dominio, f));
console.log("¿g(x) = 2x es inyectiva?", esInyectiva(dominio, g));
// ¿f(x) = x² es inyectiva? false
// ¿g(x) = 2x es inyectiva? true

27.7 Errores Comunes

  • Creer que la inyectividad depende solo de la fórmula: La inyectividad depende críticamente del **dominio**. Como se vio en el simulador, f(x) = x² no es inyectiva si el dominio incluye números negativos, pero sí lo es si el dominio se limita a los números positivos.
  • Confundir inyectividad con la definición de función: La definición de función prohíbe que una entrada tenga dos salidas distintas. La inyectividad va en sentido opuesto: prohíbe que dos entradas distintas compartan la misma salida.
  • Pensar que todas las funciones crecientes son inyectivas: Si bien una función estrictamente creciente (o decreciente) siempre es inyectiva, una función puede no ser monótona y aun así ser inyectiva (por ejemplo, una función con dominio discreto que salta alternadamente arriba y abajo).

27.8 Qué debes recordar de este tema

  • Una función es inyectiva si entradas diferentes producen resultados diferentes.
  • Simbólicamente: f(a) = f(b) ⇒ a = b.
  • En el plano cartesiano, pasa la **prueba de la recta horizontal** (toca a lo sumo un punto).
  • En un diagrama de flechas, ningún elemento del codominio recibe más de una flecha.
  • Se puede verificar fácilmente en programación mapeando el dominio y comparando la longitud de los resultados únicos.

27.9 Conclusión

La inyectividad es una propiedad sumamente útil en computación. Una función inyectiva garantiza que no se pierda información durante el procesamiento de datos, lo cual es fundamental en áreas como la criptografía (donde cada mensaje encriptado debe descifrarse en un único mensaje original) y la generación de claves hash o identificadores únicos.

En el próximo tema estudiaremos las funciones sobreyectivas, analizando qué ocurre cuando todos los elementos del codominio son alcanzados por la función, completando la segunda propiedad fundamental antes de abordar las funciones biyectivas e inversas.