Conectividad fuerte

Definición

En un grafo dirigido , dos nodos y son mutuamente alcanzables si existe un camino dirigido de a () y también existe un camino dirigido de a ().

Un grafo dirigido es fuertemente conexo (strongly connected) si todo par de nodos es mutuamente alcanzable.

Una componente fuertemente conexa (SCC) es un subconjunto maximal de vértices que son mutuamente alcanzables entre sí.

Lema del nodo testigo

Determinar si todos los pares son mutuamente alcanzable requeriría evaluar caminos dirigidos. El siguiente lema reduce drásticamente el problema a un solo nodo:

Lema del Nodo Testigo

Sea cualquier nodo arbitrario. Un digrafo es fuertemente conexo si y solo si:

  1. Todo nodo es alcanzable desde en ().
  2. El nodo es alcanzable desde todo nodo en ().

Demostración

  • (Necesidad): Si todo par es mutuamente alcanzable, en particular lo es para el par , por lo que se cumplen (1) y (2).
  • (Suficiencia): Sean y dos nodos cualesquiera. Por la condición (2), existe un camino . Por la condición (1), existe un camino . Concatenando ambos caminos, obtenemos , demostrando que es alcanzable desde . De forma análoga se construye .

Algoritmo en tiempo lineal

El lema permite verificar conectividad fuerte mediante dos búsquedas BFS (o DFS) en tiempo :

def es_fuertemente_conexo(G):
    s = elegir_un_nodo(G)
    
    # 1. BFS en G desde s
    alcanzados_desde_s = BFS(G, s)
    if len(alcanzados_desde_s) < n:
        return False
        
    # 2. BFS en G_rev desde s (equivale a buscar quienes alcanzan a s en G)
    G_rev = invertir_aristas(G)
    alcanzan_a_s = BFS(G_rev, s)
    if len(alcanzan_a_s) < n:
        return False
        
    return True

Complejidad

  • Invertir aristas para crear : .
  • Cada recorrido BFS: .
  • Tiempo total: . Espacio: .

Teorema de Tarjan (1972)

Si no es fuertemente conexo, puede descomponerse en sus componentes fuertemente conexas disjuntas (SCCs).

Teorema de Robert Tarjan (1972)

Todas las componentes fuertemente conexas de un grafo dirigido pueden encontrarse en tiempo lineal mediante un único recorrido DFS que gestiona números de descubrimiento y ancestros bajos (low-link values).

Gráfica de componentes conexas ()

Al colapsar cada componente fuertemente conexa en un supernodo y trazar una arista entre componentes distintas siempre que exista al menos una arista dirigida entre sus nodos en , se obtiene la gráfica de componentes conexas ($G_{cc}$), la cual es garantizadamente un DAG.

Relaciones

Procedencia