Componenti connesse
Componente connessa è un sottografo connesso ed è massimale, ovvero non esiste un sottografo connesso di di che includa tale che
Componente fortemente connessa è un sottografo fortemente connesso ed è massimale, ovvero non esiste un sottografo connesso di di che includa tale che
Valutazione
Un grafo G è (fortemente) connesso?
Valutare, dato in input un grafo G (in)diretto, se G è (fortemente) connesso.
Non è fortemente connesso perché non c’è un cammino diretto tra 6 e 1.
Quali sono le componenti fortemente connesse di un grafo G?
- Eseguire una Visita in profondità, che ci restituisce un array di
post. - Invertire tutti gli archi nel grafo ()
- Determinare la foresta di copertura su con una DFS considerando i nodi in ordine decrescente di
post - Determinare le componenti fortemente connesse dalla foresta di copertura (albero === componente)
- Restituire le componenti
Il costo di questo algoritmo è
Spiegazione: Per ogni componente si crea un nodo. I nodi sono connessi se esisteva un arco nel grafo originale tra un nodo di una componente e un nodo dell’altra. Questo grafo che si è andato a creare è un DAG, perché non può avere cicli. Se avesse cicli, i nodi che fano parte del ciclo sarebbero un’unica componente.

Dal momento che è un DAG, si può linearizzare.

Proposizione Una componente fortemente connessa in G è una componente fortemente connessa in .

Se esiste una componente fortemente connessa in non esistente in , deve esistere anche in .