Gráfica de componentes conexas ()
Definición
Dada una gráfica dirigida , su gráfica de componentes conexas (conocida también como grafo de condensación, Kernel DAG o Component DAG) es la gráfica cuyos vértices representan las componentes fuertemente conexas (SCC) de , y cuyas aristas representan la conectividad dirigida entre componentes distintas:
- Conjunto de vértices: donde cada es una componente fuertemente conexa maximal de .
- Conjunto de aristas: Para dos componentes distintas ():
No se permiten auto-aristas o bucles en (las dependencias internas dentro de una misma componente quedan absorbidas dentro del supernodo). Si existen múltiples aristas de a en , se colapsan a una única macro-arista dirigida en .
Teorema Fundamental: Aciclicidad de
Teorema
Para cualquier grafo dirigido , su gráfica de componentes conexas es siempre un grafo dirigido acíclico (DAG).
Demostración por contradicción
- Supongamos que no es un DAG. Entonces existe un ciclo dirigido simple entre componentes:
- Por la definición de arista en , para cada paso del ciclo existe una arista con y (y con y ).
- Dado que cada componente es fuertemente conexa, dentro de existe un camino dirigido entre cualquier par de sus nodos.
- Por lo tanto, podemos construir un camino dirigido desde cualquier nodo de hacia cualquier nodo de , de ahí a , y eventualmente regresar a .
- Esto implica que todos los nodos de la unión son mutuamente alcanzables entre sí en .
- Esto contradice la maximalidad de las componentes fuertemente conexas individuales , pues deberían formar una única componente mayor.
- Por lo tanto, no puede contener ciclos dirigidos: es un DAG.
Propiedades y Casos Límite
- Si ya es un DAG: Cada vértice es su propia componente ( para todo ). En este caso, es idéntica (isomorfa) a .
- Si es fuertemente conexo: Todo el grafo forma una única componente (). Por tanto, y .
- Ordenamiento topológico: Como es un DAG, siempre admite al menos un ordenamiento topológico sobre sus supernodos. Esto permite procesar digrafos generales por etapas libres de dependencias circulares.
Complejidad Computacional
Construir a partir de :
- Calcular las SCCs usando el algoritmo de Tarjan (1972) o el de Kosaraju-Sharir (1978): .
- Asignar a cada nodo un identificador de componente .
- Recorrer las aristas : si , agregar la macro-arista a (usando una tabla hash o adyacencias para evitar duplicados): .
Tiempo y espacio totales: .
Relaciones
- Vértices compuestos por: Componentes fuertemente conexas (SCC).
- Pertenece a la clase de grafos: Grafo dirigido acíclico (DAG).
- Admite: Ordenamiento topológico sobre sus componentes.
- Se construye mediante: Búsqueda en profundidad (DFS) (Tarjan / Kosaraju).
Procedencia
- Clase: Clase del 17 de septiembre de 2026.
- Fuentes: Kleinberg & Tardos, Algorithm Design, Cap. 3; Cormen et al. (CLRS), Introduction to Algorithms, Sección 22.5.