La diferencia permite obtener los elementos que están en un conjunto pero no en otro. La diferencia simétrica reúne los elementos que pertenecen a uno de los conjuntos, pero no a ambos.
Después de estudiar unión e intersección, podemos analizar operaciones que sirven para separar elementos. La diferencia y la diferencia simétrica permiten comparar conjuntos y detectar qué elementos no coinciden.
En programación, estas operaciones aparecen al calcular permisos faltantes, elementos eliminados, cambios entre versiones, resultados exclusivos o diferencias entre listas.
La diferencia de A y B es el conjunto formado por los elementos que pertenecen a A pero no pertenecen a B.
También puede escribirse como A \ B. En este curso usaremos principalmente A - B.
Los elementos 1 y 2 pertenecen a A y no pertenecen a B. Los elementos 3 y 4 se excluyen porque también están en B.
En general, A - B no es igual a B - A. El orden importa.
La primera diferencia toma elementos exclusivos de A. La segunda toma elementos exclusivos de B.
En un diagrama de Venn, A - B es la parte de A que no se superpone con B.
Esta interpretación es muy útil para detectar faltantes o exclusiones.
| A | B | A - B | B - A |
|---|---|---|---|
| {1, 2, 3} | {3, 4, 5} | {1, 2} | {4, 5} |
| {HTML, CSS, JavaScript} | {CSS, SQL} | {HTML, JavaScript} | {SQL} |
| {leer, editar} | {leer, editar, publicar} | ∅ | {publicar} |
| {a, b} | {c, d} | {a, b} | {c, d} |
Si restamos el conjunto vacío a un conjunto, no eliminamos ningún elemento.
En cambio, si restamos cualquier conjunto al conjunto vacío, el resultado sigue siendo vacío.
Si restamos un conjunto de sí mismo, no queda ningún elemento.
Todos los elementos de A se eliminan porque también pertenecen al conjunto que se resta.
La diferencia simétrica de A y B es el conjunto formado por los elementos que pertenecen a A o a B, pero no a ambos al mismo tiempo.
También se puede pensar como la unión sin la intersección.
Los elementos 3 y 4 quedan fuera porque pertenecen a ambos conjuntos.
En un diagrama de Venn, la diferencia simétrica corresponde a las dos regiones exclusivas: solo A y solo B. La región central de intersección queda excluida.
Esta operación sirve para detectar cambios o discrepancias entre dos colecciones.
| Operación | Propiedad | Comentario |
|---|---|---|
| Diferencia | A - B no siempre es igual a B - A | El orden importa |
| Diferencia | A - A = ∅ | Quitar todo A deja vacío |
| Diferencia | A - ∅ = A | El vacío no quita elementos |
| Diferencia simétrica | A △ B = B △ A | El orden no cambia el resultado |
| Diferencia simétrica | A △ A = ∅ | No hay elementos exclusivos si ambos conjuntos son iguales |
Podemos calcular A - B filtrando los elementos de A que no están en B.
function diferencia(a, b) {
return new Set([...a].filter(elemento => !b.has(elemento)));
}
const a = new Set([1, 2, 3, 4]);
const b = new Set([3, 4, 5, 6]);
console.log([...diferencia(a, b)]);
console.log([...diferencia(b, a)]);
La salida muestra que el orden de los conjuntos cambia el resultado.
Para calcular la diferencia simétrica, podemos unir las dos diferencias.
function union(a, b) {
return new Set([...a, ...b]);
}
function diferencia(a, b) {
return new Set([...a].filter(elemento => !b.has(elemento)));
}
function diferenciaSimetrica(a, b) {
return union(diferencia(a, b), diferencia(b, a));
}
const permisosAntes = new Set(["leer", "editar", "publicar"]);
const permisosDespues = new Set(["leer", "publicar", "eliminar"]);
console.log([...diferenciaSimetrica(permisosAntes, permisosDespues)]);
El resultado contiene permisos que cambiaron: los que estaban solo antes o solo después.
| Situación | Operación | Resultado |
|---|---|---|
| Permisos faltantes | requeridos - asignados | Accesos que deben agregarse |
| Elementos eliminados | anteriores - actuales | Datos que ya no están |
| Cambios entre versiones | versiónA △ versiónB | Elementos diferentes entre ambas versiones |
| Filtros excluyentes | seleccionados - bloqueados | Elementos permitidos luego de quitar restricciones |
La diferencia permite quitar de un conjunto los elementos que aparecen en otro. La diferencia simétrica permite detectar elementos exclusivos de cada conjunto. Ambas operaciones son muy útiles para comparar colecciones y analizar cambios.
En el próximo tema estudiaremos el complemento de un conjunto.