10. Relaciones reflexivas, simétricas y transitivas

Las propiedades reflexiva, simétrica y transitiva permiten clasificar relaciones discretas y razonar sobre igualdad, semejanza, conexión, equivalencia y alcance dentro de un sistema.

10.1 Introducción

Una relación no solo se describe por los pares que contiene. También puede analizarse según ciertas propiedades. Tres de las más importantes son: reflexividad, simetría y transitividad.

Estas propiedades aparecen en relaciones de igualdad, compatibilidad, amistad, conexión, dependencia, equivalencia y alcance entre elementos.

10.2 Relación reflexiva

Una relación R sobre un conjunto A es reflexiva si cada elemento está relacionado consigo mismo.

Para todo a en A, debe cumplirse: (a, a) ∈ R

Si A = {1, 2, 3}, una relación reflexiva debe contener obligatoriamente los pares (1, 1), (2, 2) y (3, 3).

10.3 Ejemplo de relación reflexiva

A = {1, 2, 3} R = {(1, 1), (2, 2), (3, 3), (1, 2)}

Esta relación es reflexiva porque todos los elementos de A aparecen relacionados consigo mismos. Puede tener otros pares adicionales y seguir siendo reflexiva.

10.4 Relación simétrica

Una relación R es simétrica si cada vez que aparece un par (a, b), también aparece el par inverso (b, a).

Si (a, b) ∈ R, entonces debe cumplirse: (b, a) ∈ R

La simetría expresa reciprocidad. Si Ana está relacionada con Luis, entonces Luis también debe estar relacionado con Ana.

10.5 Ejemplo de relación simétrica

A = {Ana, Luis, Marta} R = { (Ana, Luis), (Luis, Ana), (Luis, Marta), (Marta, Luis) }

Esta relación es simétrica porque cada vínculo tiene su vínculo de regreso. Puede interpretarse como una relación de comunicación bidireccional.

10.6 Relación transitiva

Una relación R es transitiva si, cuando un elemento se relaciona con un segundo y ese segundo se relaciona con un tercero, entonces el primero debe relacionarse con el tercero.

Si (a, b) ∈ R y (b, c) ∈ R, entonces debe cumplirse: (a, c) ∈ R

La transitividad aparece en relaciones como “menor o igual que”, “ser antecesor de” o “depender directa o indirectamente de”.

10.7 Ejemplo de relación transitiva

A = {1, 2, 3} R = {(1, 2), (2, 3), (1, 3)}

Como (1, 2) y (2, 3) pertenecen a R, también debe pertenecer (1, 3). Por eso esta parte de la relación cumple transitividad.

10.8 Comparación de propiedades

Propiedad Condición Idea intuitiva
Reflexiva Todo elemento se relaciona consigo mismo. Cada nodo tiene un bucle propio.
Simétrica Si existe ida, existe vuelta. El vínculo es recíproco.
Transitiva Si hay camino de dos pasos, debe existir el salto directo. La relación se propaga.

10.9 Verificar reflexividad en JavaScript

Para verificar si una relación es reflexiva, revisamos que cada elemento del conjunto tenga el par (a, a).

const A = [1, 2, 3];
const R = [
  [1, 1],
  [2, 2],
  [3, 3],
  [1, 2]
];

function contienePar(relacion, a, b) {
  return relacion.some(([x, y]) => x === a && y === b);
}

function esReflexiva(conjunto, relacion) {
  return conjunto.every(a => contienePar(relacion, a, a));
}

console.log(esReflexiva(A, R));

10.10 Verificar simetría en JavaScript

Para verificar simetría, cada par debe tener su par inverso.

const R = [
  ["Ana", "Luis"],
  ["Luis", "Ana"],
  ["Luis", "Marta"],
  ["Marta", "Luis"]
];

function contienePar(relacion, a, b) {
  return relacion.some(([x, y]) => x === a && y === b);
}

function esSimetrica(relacion) {
  return relacion.every(([a, b]) => contienePar(relacion, b, a));
}

console.log(esSimetrica(R));

10.11 Verificar transitividad en JavaScript

Para verificar transitividad, revisamos todos los pares que pueden encadenarse. Si existe (a, b) y existe (b, c), entonces debe existir (a, c).

const R = [
  [1, 2],
  [2, 3],
  [1, 3]
];

function contienePar(relacion, a, b) {
  return relacion.some(([x, y]) => x === a && y === b);
}

function esTransitiva(relacion) {
  for (const [a, b] of relacion) {
    for (const [c, d] of relacion) {
      if (b === c && !contienePar(relacion, a, d)) {
        return false;
      }
    }
  }

  return true;
}

console.log(esTransitiva(R));

10.12 Ejemplos en informática

Situación Propiedad relacionada Interpretación
Un usuario es igual a sí mismo Reflexiva Todo identificador coincide consigo mismo.
Dos servidores tienen conexión mutua Simétrica Si uno puede comunicarse con el otro, el otro también puede responder.
Dependencias indirectas entre módulos Transitiva Si A depende de B y B depende de C, A depende indirectamente de C.
Archivos en la misma carpeta Equivalencia posible Puede combinar reflexividad, simetría y transitividad.

10.13 Errores comunes

  • Creer que una relación simétrica debe ser reflexiva. Son propiedades distintas.
  • Creer que una relación transitiva debe contener todos los pares posibles.
  • Olvidar que la reflexividad se verifica respecto de todo el conjunto base, no solo respecto de los elementos que aparecen en la relación.
  • Confundir una flecha de ida y vuelta con transitividad.
  • Verificar solo un caso de transitividad y no todos los encadenamientos posibles.

10.14 Qué debes recordar de este tema

  • Una relación es reflexiva si todo elemento está relacionado consigo mismo.
  • Una relación es simétrica si cada par tiene su par inverso.
  • Una relación es transitiva si todo encadenamiento obliga al par directo correspondiente.
  • Estas propiedades se verifican sobre una relación y, en el caso reflexivo, también sobre el conjunto base.
  • En programación, estas propiedades ayudan a analizar conexiones, permisos, equivalencias, dependencias y rutas.

10.15 Conclusión

Las propiedades reflexiva, simétrica y transitiva permiten entender mejor el comportamiento de una relación. No solo indican qué pares existen, sino qué reglas estructurales cumple esa relación.

En el próximo tema estudiaremos relaciones antisimétricas y asimétricas, dos propiedades importantes para modelar órdenes, jerarquías y dependencias no recíprocas.