Una relación puede funcionar en ambos sentidos o tener una dirección definida. Esta diferencia determina cómo representamos las aristas, calculamos los grados y recorremos un grafo.
Al modelar un sistema debemos preguntar si cada relación es simétrica. Una carretera de doble mano permite viajar en ambos sentidos, mientras que una calle de sentido único solo permite avanzar en una dirección.
Los grafos no dirigidos representan relaciones sin sentido definido. Los grafos dirigidos, también llamados dígrafos, representan relaciones que parten de un vértice y llegan a otro.
En un grafo no dirigido, una arista conecta dos vértices de manera simétrica. Si A está conectado con B, entonces B también está conectado con A.
Las aristas suelen escribirse como conjuntos sin orden y se dibujan mediante líneas. Amistades recíprocas, enlaces físicos y rutas de doble sentido son ejemplos habituales.
En un grafo dirigido, cada arista tiene un origen y un destino. Se denomina arco y se representa visualmente con una flecha.
El arco (A, B) permite avanzar desde A hacia B, pero no afirma que exista una conexión desde B hacia A. Para representar ambos sentidos necesitamos dos arcos.
| Característica | No dirigido | Dirigido |
|---|---|---|
| Representación visual | Línea | Flecha |
| Notación de una arista | {A, B} | (A, B) |
| Orden de los extremos | No importa | Importa |
| Relación inversa | Está incluida | Requiere otro arco |
| Grado | Un único valor | Entrada y salida |
| Ejemplo | Cable entre equipos | Usuario que sigue a otro |
Alterna el tipo de grafo y observa las aristas. Luego selecciona dos vértices: en modo dirigido, el orden de selección define el origen y el destino.
En el modo no dirigido, A—B representa una relación recíproca. En el modo dirigido, A→B y B→A son arcos diferentes. Selecciona un nodo para comparar su grado total con sus grados de entrada y salida.
En un arco dirigido (A, B), A es el origen y B es el destino. Esta distinción permite representar flujo, causalidad, dependencia o permiso de movimiento.
En un grafo no dirigido, el grado de un vértice es la cantidad de aristas que inciden en él. Cada arista contribuye al grado de sus dos extremos.
En la simulación, utiliza el modo sin dirección y selecciona un nodo. El panel muestra su grado y sus vecinos.
En un grafo dirigido se distinguen dos valores. El grado de entrada cuenta los arcos que llegan al vértice y el grado de salida cuenta los que parten de él.
Por ejemplo, en una red social estos números pueden indicar cuántas personas siguen a un usuario y a cuántas personas sigue ese usuario.
La estructura puede parecer idéntica, pero la interpretación de cada par cambia. En un grafo dirigido debemos conservar el orden.
const arcos = [
["Ana", "Bruno"],
["Bruno", "Carla"],
["Carla", "Ana"]
];
function salidasDe(vertice) {
return arcos
.filter(([origen]) => origen === vertice)
.map(([, destino]) => destino);
}
function entradasDe(vertice) {
return arcos
.filter(([, destino]) => destino === vertice)
.map(([origen]) => origen);
}
console.log("Ana sigue a:", salidasDe("Ana"));
console.log("Siguen a Ana:", entradasDe("Ana"));
La consulta también depende del tipo de grafo. En un dígrafo solo buscamos el par en el orden solicitado.
const conexiones = [["A", "B"], ["B", "C"]];
function existeArco(origen, destino) {
return conexiones.some(([a, b]) =>
a === origen && b === destino
);
}
console.log(existeArco("A", "B"));
console.log(existeArco("B", "A"));
El primer resultado es true y el segundo es false. Si el grafo fuera no dirigido, ambos representarían la misma conexión.
| Pregunta | Si la respuesta es sí | Ejemplo |
|---|---|---|
| ¿La relación es siempre recíproca? | No dirigido | Cable físico entre dos equipos |
| ¿Importa quién inicia la relación? | Dirigido | Usuario que sigue a otro |
| ¿Se puede recorrer en ambos sentidos? | No dirigido | Camino de doble mano |
| ¿Existe un orden o dependencia? | Dirigido | Tarea previa a otra tarea |
| ¿Los sentidos tienen datos diferentes? | Dos arcos dirigidos | Tiempo de ida distinto al de vuelta |
Elegir entre un grafo dirigido y uno no dirigido determina cómo se interpretan todas sus conexiones. Una flecha puede expresar movimiento permitido, seguimiento, dependencia o flujo, mientras que una línea representa una relación simétrica.
En el próximo tema diferenciaremos grafos simples y multigrafos según la cantidad y el tipo de aristas permitidas entre sus vértices.