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:

  1. Conjunto de vértices: donde cada es una componente fuertemente conexa maximal de .
  2. 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

  1. Supongamos que no es un DAG. Entonces existe un ciclo dirigido simple entre componentes:
  2. Por la definición de arista en , para cada paso del ciclo existe una arista con y (y con y ).
  3. Dado que cada componente es fuertemente conexa, dentro de existe un camino dirigido entre cualquier par de sus nodos.
  4. Por lo tanto, podemos construir un camino dirigido desde cualquier nodo de hacia cualquier nodo de , de ahí a , y eventualmente regresar a .
  5. Esto implica que todos los nodos de la unión son mutuamente alcanzables entre sí en .
  6. Esto contradice la maximalidad de las componentes fuertemente conexas individuales , pues deberían formar una única componente mayor.
  7. Por lo tanto, no puede contener ciclos dirigidos: es un DAG.

Propiedades y Casos Límite

  1. Si ya es un DAG: Cada vértice es su propia componente ( para todo ). En este caso, es idéntica (isomorfa) a .
  2. Si es fuertemente conexo: Todo el grafo forma una única componente (). Por tanto, y .
  3. 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 :

  1. Calcular las SCCs usando el algoritmo de Tarjan (1972) o el de Kosaraju-Sharir (1978): .
  2. Asignar a cada nodo un identificador de componente .
  3. Recorrer las aristas : si , agregar la macro-arista a (usando una tabla hash o adyacencias para evitar duplicados): .

Tiempo y espacio totales: .


Relaciones


Procedencia