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.
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.
El complemento de un conjunto A es el conjunto formado por todos los elementos del conjunto universal U que no pertenecen a A.
También puede escribirse como A' o como U - A.
No se puede definir un complemento sin saber cuál es el universo de trabajo. El complemento depende directamente del conjunto universal.
El complemento contiene los elementos de U que no están en A.
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} | ∅ |
El complemento puede interpretarse como una diferencia entre el conjunto universal y el conjunto dado.
Esta forma es muy práctica porque conecta el complemento con la operación de diferencia estudiada en el tema anterior.
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.
El complemento no incluye elementos externos al universo. Solo considera lo que está dentro del contexto definido.
El complemento del conjunto vacío es el conjunto universal completo.
Como el conjunto vacío no contiene elementos, todos los elementos del universo quedan fuera de él.
El complemento del conjunto universal es el conjunto vacío.
No hay elementos del universo que queden fuera del propio universo.
Si calculamos el complemento del complemento de un conjunto, volvemos al conjunto original.
Primero tomamos lo que está fuera de A. Luego tomamos lo que está fuera de esa región, dentro del mismo universo.
| 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 |
| 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 |
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.
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.
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.
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.