Los conjuntos agrupan elementos y los pares ordenados permiten expresar vínculos precisos entre ellos. Ambos conceptos son la base para construir relaciones y funciones discretas.
Antes de estudiar relaciones discretas, necesitamos comprender dos ideas básicas: conjunto y par ordenado. Un conjunto reúne elementos. Un par ordenado conecta dos elementos respetando el orden en que aparecen.
En programación, estas ideas se ven en listas, arreglos, mapas, registros, tablas, claves, valores y estructuras que relacionan datos entre sí.
Un conjunto es una colección de elementos bien definidos. Los elementos pueden ser números, textos, objetos, identificadores, estados o cualquier dato que podamos distinguir.
El orden de escritura no cambia el conjunto. Por ejemplo, {1, 2, 3} y {3, 2, 1} representan el mismo conjunto.
Cuando un valor forma parte de un conjunto, decimos que pertenece a ese conjunto. Si no forma parte, decimos que no pertenece.
En código, esta idea suele aparecer cuando verificamos si un dato está incluido en una colección.
const estadosValidos = new Set(["pendiente", "aprobado", "rechazado"]);
console.log(estadosValidos.has("aprobado"));
console.log(estadosValidos.has("cancelado"));
JavaScript ofrece la estructura Set para representar conjuntos. Un Set no almacena elementos repetidos.
const numeros = new Set([1, 2, 2, 3, 3, 3]);
console.log(numeros);
console.log(numeros.size);
Aunque el arreglo inicial contiene valores repetidos, el conjunto conserva solo una aparición de cada elemento.
Al trabajar con conjuntos, algunas operaciones frecuentes son pertenencia, unión, intersección y diferencia.
| Operación | Significado | Ejemplo |
|---|---|---|
| Pertenencia | Verificar si un elemento está en un conjunto. | 2 pertenece a {1, 2, 3} |
| Unión | Combinar elementos de dos conjuntos. | {1, 2} unido con {2, 3} da {1, 2, 3} |
| Intersección | Tomar los elementos comunes. | {1, 2} y {2, 3} comparten {2} |
| Diferencia | Tomar elementos que están en un conjunto y no en otro. | {1, 2, 3} menos {2} da {1, 3} |
Un par ordenado agrupa dos elementos en una posición específica. Se escribe como (a, b), donde a es el primer componente y b es el segundo componente.
El orden importa. El par (Ana, Programación) no significa lo mismo que (Programación, Ana).
Una relación discreta puede representarse como un conjunto de pares ordenados. Cada par indica que el primer elemento está relacionado con el segundo.
Esta relación puede interpretarse como permisos: Ana puede leer y editar; Luis puede leer.
En JavaScript, un par ordenado puede representarse como un arreglo de dos elementos. Una relación puede representarse como un arreglo de pares.
const permisos = [
["Ana", "leer"],
["Ana", "editar"],
["Luis", "leer"]
];
for (const [usuario, permiso] of permisos) {
console.log(`${usuario} tiene permiso para ${permiso}`);
}
| Concepto | Características | Ejemplo |
|---|---|---|
| Conjunto | Agrupa elementos sin repetirlos y sin depender del orden. | {rojo, verde, azul} |
| Par ordenado | Agrupa dos componentes donde el orden sí importa. | (origen, destino) |
| Relación | Es un conjunto de pares ordenados. | {(A, B), (B, C)} |
Supongamos que una tienda necesita relacionar productos con categorías. Podemos usar pares ordenados para representar esa relación.
const productoCategoria = [
["teclado", "periféricos"],
["monitor", "pantallas"],
["mouse", "periféricos"]
];
const perifericos = productoCategoria
.filter(([, categoria]) => categoria === "periféricos")
.map(([producto]) => producto);
console.log(perifericos);
La relación permite consultar todos los productos asociados con una misma categoría.
Los conjuntos y pares ordenados son herramientas básicas para construir relaciones discretas. Los conjuntos indican de dónde salen los elementos y los pares ordenados indican cómo se vinculan.
En el próximo tema estudiaremos el producto cartesiano y veremos cómo se generan todas las combinaciones posibles entre dos conjuntos.