Las relaciones pueden clasificarse por propiedades como reflexividad, simetría, antisimetría y transitividad. Estas propiedades permiten reconocer equivalencias, órdenes, conexiones y reglas estructurales.
Una relación no solo se define por los pares que contiene. También puede analizarse según las propiedades que cumple. Estas propiedades describen patrones generales dentro de la relación.
Las propiedades más importantes son reflexividad, simetría, antisimetría y transitividad. Más adelante las usaremos para estudiar relaciones de equivalencia y relaciones de orden.
Muchas propiedades se estudian en relaciones definidas sobre un mismo conjunto. En ese caso, la relación es un subconjunto de A × A.
Por ejemplo, si A = {1, 2, 3}, una relación sobre A puede contener pares como (1, 1), (1, 2) o (3, 2).
Una relación R sobre un conjunto A es reflexiva si cada elemento de A está relacionado consigo mismo.
Esto significa que todos los pares de la forma (a, a) deben estar presentes.
La relación es reflexiva porque contiene (1, 1), (2, 2) y (3, 3).
Una relación es irreflexiva si ningún elemento está relacionado consigo mismo.
Por ejemplo, la relación "menor que" sobre números es irreflexiva, porque ningún número es menor que sí mismo.
Una relación es simétrica si cada vez que a está relacionado con b, también b está relacionado con a.
La relación "ser amigo de" suele modelarse como simétrica si la amistad se considera mutua.
La relación es simétrica porque cada par tiene su par inverso.
Una relación es antisimétrica si, cuando a está relacionado con b y b está relacionado con a, entonces necesariamente a = b.
La relación "menor o igual que" es antisimétrica: si a ≤ b y b ≤ a, entonces a = b.
Una relación puede no ser simétrica y tampoco ser antisimétrica. También puede ser ambas en casos especiales.
| Relación | Simétrica | Antisimétrica |
|---|---|---|
| {(1, 2), (2, 1)} | Sí | No |
| {(1, 2)} | No | Sí |
| {(1, 1), (2, 2)} | Sí | Sí |
| {(1, 2), (2, 1), (2, 3)} | No | No |
Una relación es transitiva si, cada vez que a está relacionado con b y b está relacionado con c, entonces a está relacionado con c.
La relación "menor o igual que" es transitiva: si a ≤ b y b ≤ c, entonces a ≤ c.
La relación es transitiva para esa cadena porque contiene (1, 3) cuando aparecen (1, 2) y (2, 3).
| Propiedad | Condición | Ejemplo típico |
|---|---|---|
| Reflexiva | Todo a se relaciona consigo mismo | a = a, a ≤ a |
| Irreflexiva | Ningún a se relaciona consigo mismo | a < a es falso |
| Simétrica | Si aRb, entonces bRa | amistad mutua |
| Antisimétrica | Si aRb y bRa, entonces a = b | ≤ |
| Transitiva | Si aRb y bRc, entonces aRc | ≤, divisibilidad |
Podemos representar una relación como arreglo de pares y convertir cada par en una clave para consultar pertenencia.
function clave(a, b) {
return `${a}:${b}`;
}
function crearRelacion(pares) {
return new Set(pares.map(([a, b]) => clave(a, b)));
}
const conjunto = [1, 2, 3];
const relacion = crearRelacion([
[1, 1],
[2, 2],
[3, 3],
[1, 2]
]);
console.log(relacion.has(clave(1, 1)));
El Set permite consultar rápidamente si un par pertenece a la relación.
function clave(a, b) {
return `${a}:${b}`;
}
function crearRelacion(pares) {
return new Set(pares.map(([a, b]) => clave(a, b)));
}
const conjunto = [1, 2, 3];
const relacion = crearRelacion([
[1, 1],
[2, 2],
[3, 3],
[1, 2]
]);
function esReflexiva(conjunto, relacion) {
return conjunto.every(elemento =>
relacion.has(clave(elemento, elemento))
);
}
console.log(esReflexiva(conjunto, relacion));
La función verifica que cada elemento esté relacionado consigo mismo.
function clave(a, b) {
return `${a}:${b}`;
}
function crearRelacion(pares) {
return new Set(pares.map(([a, b]) => clave(a, b)));
}
function esSimetrica(pares, relacion) {
return pares.every(([a, b]) =>
relacion.has(clave(b, a))
);
}
const pares = [
[1, 2],
[2, 1],
[2, 3],
[3, 2]
];
const relacionSimetrica = crearRelacion(pares);
console.log(esSimetrica(pares, relacionSimetrica));
La función exige que cada par tenga su par inverso.
Para verificar transitividad, se revisan todas las cadenas posibles (a, b) y (b, c).
function clave(a, b) {
return `${a}:${b}`;
}
function crearRelacion(pares) {
return new Set(pares.map(([a, b]) => clave(a, b)));
}
function esTransitiva(pares, relacion) {
return pares.every(([a, b]) =>
pares.every(([c, d]) => {
if (b !== c) return true;
return relacion.has(clave(a, d));
})
);
}
const paresTransitivos = [
[1, 2],
[2, 3],
[1, 3]
];
const relacionTransitiva = crearRelacion(paresTransitivos);
console.log(esTransitiva(paresTransitivos, relacionTransitiva));
Si existe una cadena y falta el par final, la relación no es transitiva.
| Propiedad | Aplicación | Ejemplo |
|---|---|---|
| Reflexiva | Identidad o autocomparación | Todo usuario es igual a sí mismo |
| Simétrica | Vínculos mutuos | Amistad bidireccional |
| Antisimétrica | Jerarquías y órdenes | Dependencia o prioridad |
| Transitiva | Propagación de relaciones | Si A depende de B y B de C, A depende indirectamente de C |
Las propiedades de las relaciones permiten identificar patrones estructurales. Reflexividad, simetría, antisimetría y transitividad son herramientas esenciales para estudiar equivalencias, órdenes y conexiones.
En el próximo tema estudiaremos relaciones de equivalencia.