Componente fortemente connessa

(Reindirizzamento da Algoritmo di Kosaraju-Sharir)

Una componente fortemente connessa di un grafo diretto G è un sottografo massimale di G in cui esiste un cammino orientato tra ogni coppia di nodi ad esso appartenenti.

Le componenti fortemente connesse formano una partizione di G poiché un nodo non può trovarsi contemporaneamente in due componenti fortemente connesse, di conseguenza un grafo diretto è fortemente connesso se e solo se ha una sola componente fortemente connessa.

Due vertici di G sono fortemente connessi se e solo se fanno parte dello stesso ciclo orientato.

Algoritmi per il calcolo delle componenti fortemente connesse

modifica

Definizione del problema

modifica

Dato un grafo orientato ciclico, si richiede di identificare le componenti fortemente connesse e un loro ordine topologico

Algoritmo di Tarjan

modifica

L'algoritmo di Tarjan per le componenti fortemente connesse è uno degli algoritmi più efficienti per effettuare la ricerca delle strutture fortemente connesse in un grafo. Opera infatti a complessità lineare al numero degli archi e dei vertici O(|V|+|E|).

Algoritmo di Kosaraju

modifica

L'algoritmo di Kosaraju-Sharir consiste nell'eseguire una visita in profondità del grafo e una successiva visita in profondità del grafo trasposto, in cui gli archi sono invertiti, scegliendo i nodi nell'ordine di fine visita ottenuto durante la prima visita in profondità. In tal modo si riesce a identificare le componenti fortemente connesse del grafo in tempo Θ(V+E). Risulta quindi più semplice da implementare ma meno efficiente dell'algoritmo di Tarjan e di quello di Gabow che effettuano una sola visita in profondità del grafo.

Algoritmo di Gabow

modifica

L'algoritmo di Cheriyan–Mehlhorn/Gabow consiste nell'eseguire una sola ricerca in profondità sul grafo, utilizzando uno stack per tenere traccia dei vertici che non sono ancora stati assegnati ad una componente. Come l'algoritmo di Tarjan viene effettuata una sola ricerca in profondità.

Bibliografia

modifica
  • (EN) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Capitolo 22.5, pp.552-557.
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati, McGraw-Hill, 2004, ISBN 9788838661617. Capitolo 11.5, pp.289-293

Voci correlate

modifica