14. Complemento de un conjunto

El complemento de un conjunto contiene los elementos del universo que no pertenecen a ese conjunto. Para definirlo correctamente, siempre necesitamos conocer el conjunto universal.

14.1 Introducción

El complemento es una operación que permite estudiar lo que queda fuera de un conjunto, pero dentro de un universo definido.

Esta idea es muy útil cuando queremos describir elementos no seleccionados, usuarios sin una condición, productos no disponibles, permisos ausentes o registros que no cumplen un filtro.

14.2 Definición de complemento

El complemento de un conjunto A es el conjunto formado por todos los elementos del conjunto universal U que no pertenecen a A.

Aᶜ = {x | x ∈ U y x ∉ A}

También puede escribirse como A' o como U - A.

14.3 El universo es obligatorio

No se puede definir un complemento sin saber cuál es el universo de trabajo. El complemento depende directamente del conjunto universal.

U = {1, 2, 3, 4, 5, 6} A = {2, 4, 6} Aᶜ = {1, 3, 5}

El complemento contiene los elementos de U que no están en A.

14.4 Mismo conjunto, distinto universo

Si cambia el universo, puede cambiar el complemento aunque el conjunto A sea el mismo.

Universo A Aᶜ
U = {1, 2, 3, 4, 5, 6} {2, 4, 6} {1, 3, 5}
U = {1, 2, 3, 4, 5, 6, 7, 8} {2, 4, 6} {1, 3, 5, 7, 8}
U = {2, 4, 6} {2, 4, 6}

14.5 Complemento como diferencia

El complemento puede interpretarse como una diferencia entre el conjunto universal y el conjunto dado.

Aᶜ = U - A

Esta forma es muy práctica porque conecta el complemento con la operación de diferencia estudiada en el tema anterior.

14.6 Complemento en diagramas de Venn

En un diagrama de Venn, el complemento de A es toda la región del rectángulo universal que queda fuera del círculo de A.

U: todos los usuarios A: usuarios activos Aᶜ: usuarios no activos

El complemento no incluye elementos externos al universo. Solo considera lo que está dentro del contexto definido.

14.7 Complemento del conjunto vacío

El complemento del conjunto vacío es el conjunto universal completo.

∅ᶜ = U

Como el conjunto vacío no contiene elementos, todos los elementos del universo quedan fuera de él.

14.8 Complemento del conjunto universal

El complemento del conjunto universal es el conjunto vacío.

Uᶜ = ∅

No hay elementos del universo que queden fuera del propio universo.

14.9 Doble complemento

Si calculamos el complemento del complemento de un conjunto, volvemos al conjunto original.

(Aᶜ)ᶜ = A

Primero tomamos lo que está fuera de A. Luego tomamos lo que está fuera de esa región, dentro del mismo universo.

14.10 Propiedades básicas

Propiedad Notación Interpretación
Complemento del vacío ∅ᶜ = U Todo el universo queda fuera del vacío
Complemento del universo Uᶜ = ∅ Nada queda fuera del universo
Doble complemento (Aᶜ)ᶜ = A Complementar dos veces devuelve el conjunto original
Unión con complemento A ∪ Aᶜ = U Un conjunto y su complemento cubren todo el universo
Intersección con complemento A ∩ Aᶜ = ∅ No hay elementos que estén en A y fuera de A a la vez

14.11 Ejemplos prácticos

Universo Conjunto A Complemento de A
Todos los productos Productos seleccionados Productos no seleccionados
Todos los usuarios Usuarios activos Usuarios no activos
Todos los permisos posibles Permisos asignados Permisos no asignados
Todos los registros Registros que cumplen un filtro Registros que no cumplen el filtro

14.12 Complemento en JavaScript

En JavaScript, podemos calcular el complemento filtrando los elementos del universo que no están en el conjunto dado.

function complemento(universo, conjunto) {
  return new Set([...universo].filter(elemento => !conjunto.has(elemento)));
}

const universo = new Set([1, 2, 3, 4, 5, 6]);
const pares = new Set([2, 4, 6]);

console.log([...complemento(universo, pares)]);

El resultado contiene los elementos del universo que no pertenecen al conjunto de pares.

14.13 Complemento aplicado a permisos

El complemento puede indicar qué permisos todavía no tiene un usuario dentro del universo de permisos posibles.

function complemento(universo, conjunto) {
  return new Set([...universo].filter(elemento => !conjunto.has(elemento)));
}

const todosLosPermisos = new Set(["leer", "editar", "publicar", "eliminar"]);
const permisosAsignados = new Set(["leer", "editar"]);

const permisosNoAsignados = complemento(todosLosPermisos, permisosAsignados);

console.log([...permisosNoAsignados]);

El universo es el conjunto de todos los permisos posibles. El complemento muestra los permisos que faltan.

14.14 Complemento y filtros

En una aplicación, un filtro separa una colección en dos partes: los elementos que cumplen la condición y los elementos que no la cumplen. Esas dos partes son complementarias dentro del universo de datos.

const usuarios = [
  { nombre: "Ana", activo: true },
  { nombre: "Luis", activo: false },
  { nombre: "Carla", activo: true }
];

const activos = usuarios.filter(usuario => usuario.activo);
const noActivos = usuarios.filter(usuario => !usuario.activo);

console.log(activos.map(usuario => usuario.nombre));
console.log(noActivos.map(usuario => usuario.nombre));

Dentro del universo de usuarios, los activos y los no activos forman regiones complementarias.

14.15 Errores frecuentes

  • Calcular el complemento sin definir el conjunto universal.
  • Incluir elementos que no pertenecen al universo.
  • Confundir complemento con diferencia entre dos conjuntos cualquiera.
  • Olvidar que Aᶜ = U - A.
  • Creer que el complemento de A es siempre infinito, aunque el universo sea finito.

14.16 Qué debes recordar de este tema

  • El complemento de A contiene los elementos del universo que no pertenecen a A.
  • El conjunto universal debe estar definido.
  • El complemento puede escribirse como Aᶜ, A' o U - A.
  • El complemento del conjunto vacío es el universo.
  • El complemento del universo es el conjunto vacío.
  • En JavaScript, el complemento se obtiene filtrando el universo con has.

14.17 Conclusión

El complemento permite razonar sobre lo que queda fuera de un conjunto dentro de un contexto definido. Por eso, el conjunto universal es una parte indispensable de la operación.

En el próximo tema estudiaremos las propiedades fundamentales de las operaciones entre conjuntos.