Los ciclos y circuitos son recorridos que regresan al vértice inicial. Se diferencian por las repeticiones permitidas y aparecen en rutas, dependencias, redes y procesos periódicos.
Un recorrido es cerrado cuando comienza y termina en el mismo vértice. Dentro de esta familia encontramos circuitos y ciclos, que imponen restricciones sobre las aristas o vértices repetidos.
Detectar estas estructuras es importante para reconocer dependencias circulares, evitar bucles infinitos, estudiar circuitos físicos y encontrar recorridos que regresan al origen.
Como ocurre con caminos y trayectorias, la terminología puede variar entre fuentes. En este curso utilizaremos:
| Concepto | Condición | Repeticiones |
|---|---|---|
| Recorrido cerrado | Inicio = final | Puede repetir aristas y vértices |
| Circuito | Trayectoria cerrada | No repite aristas |
| Ciclo simple | Camino cerrado | No repite vértices salvo inicio = final |
Un recorrido cerrado es cualquier secuencia válida de longitud positiva cuyo primer y último vértice coinciden.
Puede repetir conexiones y vértices. Su única condición adicional respecto de un recorrido general es regresar al punto de partida.
Un circuito no repite aristas, aunque puede volver a visitar vértices internos. Un ciclo simple no repite ningún vértice salvo el que aparece al principio y al final.
Todo ciclo simple es un circuito, pero un circuito puede contener varios ciclos unidos por vértices comunes.
Selecciona vértices adyacentes y trata de regresar al nodo inicial. La aplicación clasificará la secuencia según las aristas y vértices repetidos.
Secuencia
Clasificación
Los dos triángulos comparten el vértice B. Puedes recorrer ambos sin repetir aristas para construir un circuito que no es un ciclo simple.
En un grafo simple no dirigido, un ciclo tiene al menos tres aristas.
En multigrafos pueden existir ciclos de longitud 2 mediante aristas paralelas, y si se admiten bucles puede considerarse un ciclo de longitud 1 según la convención.
En un dígrafo, un ciclo debe respetar la orientación de todos los arcos y regresar al punto inicial.
Las dependencias circulares entre módulos o tareas forman ciclos dirigidos y pueden impedir un ordenamiento válido.
Un grafo que no contiene ciclos se denomina acíclico. Un grafo no dirigido conectado y acíclico es un árbol.
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Árbol | No dirigido, conectado y sin ciclos | Jerarquía de carpetas |
| DAG | Grafo dirigido acíclico | Dependencias de tareas |
| Grafo con ciclos | Contiene al menos un recorrido cerrado no trivial | Red de carreteras |
function esCicloSimple(secuencia) {
if (secuencia.length < 4) return false;
if (secuencia[0] !== secuencia[secuencia.length - 1]) return false;
const verticesInternos = secuencia.slice(0, -1);
return new Set(verticesInternos).size === verticesInternos.length;
}
console.log(esCicloSimple(["A", "B", "C", "A"]));
console.log(esCicloSimple(["A", "B", "C", "B", "A"]));En un grafo no dirigido, encontrar un vecino ya visitado que no sea el padre del vértice actual indica un ciclo.
function tieneCiclo(grafo, actual, padre, visitados = new Set()) {
visitados.add(actual);
for (const vecino of grafo[actual]) {
if (!visitados.has(vecino)) {
if (tieneCiclo(grafo, vecino, actual, visitados)) return true;
} else if (vecino !== padre) {
return true;
}
}
return false;
}
const grafo = { A: ["B", "C"], B: ["A", "C"], C: ["A", "B"] };
console.log(tieneCiclo(grafo, "A", null));Los ciclos y circuitos describen formas de recorrer un grafo y volver al origen. Las restricciones sobre repeticiones permiten distinguir estructuras simples de recorridos cerrados más complejos.
En el próximo tema estudiaremos la conectividad y analizaremos cuándo todos los vértices pueden alcanzarse entre sí.