Sunteți pe pagina 1din 4

COMPONENTE TARE CONEXE

1. Definiții. Proprietăți. Exemple.

În Teoria Grafurilor, o componentă este tare conexă dacă poți ajunge dintr-un nod în oricare
alt nod. Însă aceste componente tare conexe pot forma mai multe sub-partiții care sunt
conectate între ele.

În acest graf orientat avem 3


componente tare conexe:
 Componenta 1: 1, 2, 3
 Componenta 2: 4, 5
 Componenta 3: 6, 7, 8
Figura 1: Exemplu de graf cu 3 componente tare conexe

Definiție: Un graf orientat G=(V,E) este tare conex dacă pentru orice pereche de noduri
distincte (x, y) există cel puțin un drum de la x la y și există cel puțin un drum de la y la x.
Pentru un graf orientat, se numește componentă tare conexă un subgraf tare conex
maximal.

Proprietățile unei componente conexe:


 Două componente conexe C1 și C2 sunt două mulțimi disjuncte sau două mulțimi
egale între ele.
 Fiecare nod aparține exact unei singure componente conexe.

2. Determinarea componentelor tare conexe

Definiție: Fie G=(V,E) un graf orientat. Se numește graf transpus al lui G graful orientat
GT=(V,ET), cu aceleași mulțimea a nodurilor și pentru orice pereche de noduri are loc: (x, y)
este arc în G dacă și numai dacă (y, x) este arc în GT.

Exemplu:

Figura 2: Graful orientat inițial G Figura 3: Graful orientat transpus GT


În alte cuvinte, graful transpus unui graf orientat este graful în care schimbăm sensul
muchiilor. Din exemplu putem observa:

 existența unui drum de la x la y poate fi determinată cu o parcurgere (de exemplu în


adâncime) în graful G, pornind din nodul x;
 existența unui drum de la y la x poate fi determinată cu o parcurgere în graful GT,
pornind tot din nodul x.

3. Algoritmul Plus-Minus

Folosind observații de mai sus, pentru a determina componentele tare conexe folosim
următorul algoritm, numit Plus-Minus:

pentru fiecare nod x al grafului care încă nu a fost plasat într-o componentă tare conexă:

 determinăm toate nodurile în care se poate ajunge din x, folosind graful G și le


marcăm într-un tablou cu plus;
 determinăm toate nodurile din care se poate ajunge în x, folosind graful GT și le
marcăm într-un tablou cu minus;
 nodurile marcate atât cu plus, cât și cu minus, împreună cu x formează o componentă
tare conexă;

Exemplu: + _ _ _

_ _
+ _ _
+
4. Algoritmul lui Kosaraju

Important! la parcurgerea în adâncime se pot asocia nodurilor două momente de timp:

 d[x] – momentul când nodul x este descoperit și adăugat pe stivă: timpul de


descoperire a nodului
 f[x] – momentul când se termină de vizitat succesorii lui x, iar nodul x se elimină de pe
stivă: timpul de finalizare a nodului

Aceste momente de timp vor fi numere naturale între 1 și 2*n, unde n este numărul de noduri
din graf.

Pașii pe care trebuie să îi urmăm în redactarea codului:

1 determinăm graful transpus GT


2 parcurgem graful G în adâncime și aflăm timpul de finalizare pentru fiecare nod
3 parcurgem în adâncime graful transpus GT dar considerăm nodurile în ordinea
descrescătoare timpilor de finalizare
4 nodurile din arborii de parcurgere obținuți reprezintă câte o componentă tare conexă
5 parcurgem graful transpus GT analizând nodurile în ordinea inversă a timpilor de finalizare
O problemă care se rezolvă cu componente tarei conexe este problema #0583 de pe pbinfo,
iar rezolvarea acesteia este algoritmul lui Kosaraju fără vreo modificare.

S-ar putea să vă placă și