Las relaciones discretas permiten representar conexiones entre datos, permisos, nodos, estados y objetos. Por eso aparecen en bases de datos, estructuras de datos, grafos, algoritmos y sistemas inteligentes.
La informática trabaja constantemente con elementos discretos: usuarios, archivos, registros, identificadores, estados, nodos, claves, valores y decisiones lógicas. Una parte central de muchos programas consiste en determinar cómo se relacionan esos elementos.
Las relaciones discretas ofrecen una forma precisa de modelar esos vínculos. En lugar de describirlos con frases ambiguas, podemos representarlos mediante conjuntos, pares ordenados, matrices, tablas o grafos.
Un sistema rara vez almacena datos aislados. Normalmente necesita conectar unos datos con otros: clientes con pedidos, estudiantes con cursos, productos con categorías o usuarios con permisos.
Esta idea es la base de muchas estructuras de información. Cuando entendemos las relaciones, podemos consultar, filtrar, validar y transformar datos con mayor claridad.
En bases de datos, una relación puede representar vínculos entre tablas. Por ejemplo, una tabla de usuarios puede relacionarse con una tabla de roles para indicar qué permisos tiene cada usuario.
| Usuario | Rol | Interpretación |
|---|---|---|
| Ana | Administrador | Ana puede realizar tareas administrativas. |
| Luis | Editor | Luis puede crear y modificar contenido. |
| Marta | Lector | Marta solo puede consultar información. |
Un grafo puede verse como una relación entre nodos. Si dos nodos están conectados por una arista, existe una relación entre ellos.
Esta representación se utiliza para modelar redes sociales, rutas, dependencias entre módulos, enlaces entre páginas web, árboles de decisión y caminos dentro de un videojuego.
Muchas estructuras de datos son relaciones organizadas. Una lista enlazada relaciona cada nodo con el siguiente. Un árbol relaciona padres con hijos. Un diccionario relaciona claves con valores.
| Estructura | Relación principal | Ejemplo |
|---|---|---|
| Lista enlazada | Nodo actual con nodo siguiente | A → B → C |
| Árbol | Nodo padre con nodos hijos | Carpeta con subcarpetas |
| Mapa | Clave con valor | DNI → Persona |
| Grafo | Nodo con nodo vecino | Ciudad conectada con otra ciudad |
Los algoritmos suelen operar sobre relaciones. Un algoritmo de búsqueda en grafos analiza qué nodos están conectados. Un algoritmo de ordenamiento compara elementos. Un sistema de permisos verifica si un usuario está relacionado con una acción permitida.
const permisos = [
["Ana", "crear"],
["Ana", "editar"],
["Luis", "leer"]
];
function tienePermiso(usuario, accion) {
return permisos.some(([u, a]) => u === usuario && a === accion);
}
console.log(tienePermiso("Ana", "editar"));
console.log(tienePermiso("Luis", "editar"));
La lista de pares representa una relación entre usuarios y acciones. El algoritmo consulta si un par pertenece a esa relación.
Las relaciones discretas también se usan para modelar estados y transiciones. Por ejemplo, una aplicación puede pasar de pendiente a aprobado o de pendiente a rechazado.
Este tipo de modelado ayuda a evitar estados inválidos y a diseñar reglas de negocio más confiables.
En inteligencia artificial, las relaciones discretas permiten representar conocimiento. Podemos indicar que un objeto pertenece a una categoría, que una entidad tiene una propiedad o que dos conceptos están conectados.
Estas representaciones aparecen en sistemas expertos, grafos de conocimiento, motores de reglas, procesamiento de lenguaje natural y razonamiento automático.
Supongamos que un proyecto tiene tareas que dependen de otras. Podemos representar cada dependencia como un par ordenado.
const dependencias = [
["Diseñar base de datos", "Crear API"],
["Crear API", "Construir interfaz"],
["Construir interfaz", "Probar sistema"]
];
for (const [antes, despues] of dependencias) {
console.log(`${antes} debe completarse antes de ${despues}`);
}
Esta relación ayuda a planificar el orden de ejecución y permite detectar problemas como ciclos o dependencias imposibles.
Las relaciones discretas son una herramienta esencial para pensar problemas informáticos. Permiten representar conexiones de forma clara y convertir esas conexiones en estructuras que un programa puede procesar.
En el próximo tema estudiaremos conjuntos y pares ordenados, que son la base para definir relaciones de manera formal.