Sunteți pe pagina 1din 13

Capitolul 4

PARCURGERI DE GRAFURI

Problema parcurgerii unui digraf G = (N,A), N = {1, ... , n},


A = {1, ... , m} are urm toarea formulare: s se genereze mul imea W N
a nodurilor y pentru care exist drum de la un nod surs dat s la nodul y în
digraful G. Dac exist drum, în digraful G, de la nodul surs s la nodul y
atunci se spune c nodul y este accesibil din nodul s.
Algoritmii pe care îi vom prezenta pentru rezolvarea problemei
parcurgerii unui digraf G sunt metode sistematice de vizitare a nodurilor y
accesibile din s. Fiecare itera ie a execu iei oric rui algoritm de parcurgere
stabile te pentru fiecare nod apartenen a la una din urm toarele trei st ri:
nevizitat;
vizitat i neanalizat, adic un nod vizitat ai c rui succesori au
fost par ial vizita i;
vizitat si analizat, adic un nod vizitat ai c rui succesori au
fost în totalitate vizita i.
Dac nodul x este vizitat si neanalizat, exist arcul (x,y) i nodul y
este nevizitat, atunci se poate vizita nodul y. În acest caz se spune c arcul
(x,y) este arc admisibil i dac nodul y este vizitat explorând arcul (x,y) se
spune c nodul x este predecesorul parcurgere al nodului y.
Se vor prezenta urm torii algoritmi pentru parcurgerea unui digraf:
algoritmul BF i algoritmul DF. Ace ti algoritmi utilizeaz urm toarele
nota ii comune:
U mul imea nodurilor nevizitate;
V mul imea nodurilor vizitate i neanalizate;
W mul imea nodurilor vizitate i analizate;
p tabloul predecesor, care este unidimensional cu n elemente.

4.1. Parcurgerea BF a grafurilor


Parcurgerea se face "mai întâi în l ime". În englez "breadth first"
(BF).
Fie digraful G = (N,A) cu nodul surs s i Dx mul imea drumurilor de
la nodul sursa s la nodul x N. Num rul de arce ce compun un drum Dx Dx
define te lungimea acestui drum pe care îl not m l(Dx). Distan a de la nodul
s la nodul x se define te în modul urm tor:
min{l(D x ) D x Dx }, Dx 0
d(x)
, Dx 0
Un drum D̂ x Dx cu l( D̂ x ) = d(x) se nume te cel mai scurt drum
de la nodul surs s la nodul x.
Observa ia 1. Pentru orice arc (x,y) A avem
d(y) d(x) + 1.
Într-adev r, dac Dx = 0 atunci d(x) = i inegalitatea se p streaz .
Dac Dx 0 atunci evident Dy 0 . Fie D̂ x un cel mai scurt drum de la s
la x, deci l( D̂ x ) = d(x). Mul imea Dy poate con ine un drum Dy, astfel încât
l(Dy) < d(x) + 1. Conform defini iei distan ei avem d(y) l(Dy) i rezult c
d(y) < d(x) + 1. Avem egalitate când un drum cel mai scurt D̂ y de la s la y
are lungimea
d(y) = l( D̂ y ) = d(x) + 1,
de exemplu
D̂ y = D̂ x {(x,y)}.
În algoritmul parcurgerii BF (algoritmul PBF) se utilizeaz tabloul
lungime l care este unidimensional i are n elemente. Mul imea nodurilor
vizitate i neanalizate V este organizat , ca structur de date, ca o coad .
Algoritmul PBF este urm torul:

(1) PROGRAM PBF;


(2) BEGIN;
(3) U := N - {s} ; V := {s} ; W := 0 ;
(4) FOR to i y N DO p(y) := 0;
(5) l(s) := 0;
(6) FOR to i y U DO l(y) := ;
(7) WHILE V 0 DO
(8) BEGIN
(9) se selecteaz cel mai vechi nod x introdus In V;
(10) FOR (x, y) A DO
(11) IF y U
(12) THEN U:=U–{y}; V:=V {y}; p(y):=x:
l(y) := l(x) + 1;
(13) V:=V-{x}; W:=W {x};
(14) END;
(15) END.

Teorema 1 .
(1) Algoritmul PBF calculeaz elementele tabloului l astfel încât
d(y) l(y), y N ;
(2) Dac la itera ia k oarecare a algoritmului PBF avem V = (x1, ..., xr) în
aceast ordine, atunci l(x r ) l(x1 ) 1 i l(x i ) l(x i 1 ), i 1, r 1 .
Demonstra ie.
(1) Utiliz m induc ia dup k, num rul de itera ii ale ciclului WHILE.
Ini ial l(s) := 0, l(y) := pentru y U i evident d(y) l(y), y N .
Presupunem c , la itera ia k avem d(y) l(y) pentru y N . La itera ia
k + 1 pot exista cazurile:
(Cl ) Exist arc (x,y) admisibil ((x,y) A i y U). În acest caz
l(y) = l(x) + 1
i
d(y) d(x) 1 l(x) 1 l(y)
(l(x) pentru x V nu se modific ). Deci pentru toate arcele (x,y) A i
y U avem d(y) l(y) . Pentru celelalte noduri y, conform ipotezei
induc iei, avem d(y) l(y) , deoarece la itera ia k + 1, l(y) nu se mai
modific .
(C2) Nu exist arc (x,y) admisibil ((x,y) A sau y U). În acest caz la
itera ia k + 1 nu se modific nici un element l(y) i conform ipotezei
induc iei d(y) l(y) pentru y N .
(2) Utiliz m induc ia dup k num rul de itera ii ale ciclului WHILE.
Ini ial V := {s}. Deci x1 = a, xr = a i l(s) < l(s) + 1, l(s) = l(s). Presupunem
c la itera ia k avem l(xr) l(x1) + 1 i l(xi) < l(xi+1), pentru i = 1, r 1 . La
itera ia k + 1 pot exista cazurile:
(Cl ) Exist arc (x,y) admisibil ((x,y) A i y U). În acest caz
V={x1, ..., xr, xr+1}, x1 = x, xr+1 = y. Astfel, l(xr+1) = l(y) = l(x) + 1 = l(x1)+1.
De asemenea, avem l(xr) l(xr) + 1 = l(x) + 1 = l(y) = l(xr+1) i inegalit ile
l(xi) l(xi+1), i = 1, r 1 au r mas nemodificate.
(C2) Nu exist arc (x,y) admisibil ((x,y) A sau y U). În acest caz
V = {x2, ..., xr}. Avem l(xr) l(x1) + 1 l(x2) + 1 i inegalit ile
l(xi) l(xi+1), i = 1, r 1 au r mas nemodificate.
Teorema 2. Algoritmul PBF este convergent i la terminarea
execu iei determin m mul imea tuturor nodurilor care sunt accesibile
din nodul surs s în digraful G = (N,A).
Demonstra ie. Din liniile (10), (11) i (12) ale algoritmului
rezult c toate nodurile introduse în V sunt eliminate dup ce sunt
analizate. Deci dup un num r finit de itera ii se ob ine V = 0 i
execu ia algoritmului se opre te. Pentru a ar ta c la terminarea
execu iei, algoritmul determin mul imea tuturor nodurilor care sunt
accesibile din nodul surs s în digraful G = (N,A), trebuie s ar t m c
la terminarea execu iei algoritmului mul imea W este:
W {y y N i exist drum de la s la y}.
Din liniile (10), (11) i (12) ale algoritmului rezult c în V sunt
introduse numai noduri y care sunt accesibile din s i c dup ce un nod
x V a fost analizat el este eliminat din V i introdus în W. Deoarece
algoritmul se opre te când V = 0 rezult c W con ine toate nodurile
y N care sunt accesibile din s i introduse în V. S ar t m c W
con ine toate nodurile y N care sunt accesibile din s. Prin reducere la
absurd s presupunem c exist un drum D = (yl,y2, ... ,yk-l,yk) cu yi = s,
yk = y în G i y W. Rezult c yk V. Deoarece yk V i (yk-h,yk) A
deducem c yk-1 V, astfel yk ar fi fost introdus în V. Continuând
procedeul vom deduce în final c s = y1 V. Aceasta contrazice faptul
c în linia (3) a algoritmului ini ializ m V:={s}. Rezulta c y V, deci y W
i teorema este demonstrat .
Teorema 3.
Algoritmul PBF este convergent i determin :
(1) mul imea tuturor nodurilor care sunt accesibile din nodul surs s;
(2) elementele tabloului l astfel încât l(y) = d(y) pentru y N.
Demonstra ie. Convergen a i punctul (1) se demonstreaz la fel
ca Teorema 2. Punctul (2) se demonstreaz prin induc ie dup k num rul
itera iilor ciclului WHILE. Fie mul imea Nk = {y N |d(y) = k}. Pentru k
= 0 avem N0 = {s} i deci d(s) = l(s) = 0. Presupunem afirma ia adev rat
pentru k. Afirma ia pentru k + 1 rezult cu u urin , deoarece, în
conformitate cu Teorema 1 punctul (2), un nod y Nk+l este vizitat plecând
de la un nod x Nk numai dup ce toate nodurile din Nk sunt vizitate. Deci,
dac y Nk+l i este vizitat explorând arcul (x,y), x Nk, atunci,
l(y) = l(x) + 1 = d(x) + 1 = k + 1 = d(y).
Teorema 4.
Algoritmul PBF are complexitatea O(m).
Demonstra ie. Din liniile (10) , (11) i (12) ale algoritmului rezult
c fiecare nod al digrafului G este introdus i eliminat din V cel mult o dat .
Deoarece execu ia algoritmului se termin când V = 0 deducem c
algoritmul execut cel mult 2n itera ii. Fiecare arc (x,y) A este explorat cel
mult o dat pentru identificarea arcelor admisibile. Deci complexitatea
algoritmului PBF este O(m + n) = O(m).
În parcurgerea BF, dac Np = W i subgraful predecesor
Gp = (Np,Ap) este o arborescen atunci Gp se nume te arborescen
parcurgere BPF.
Teorema 5.
Algoritmul PBF determin elementele tabloului p astfel încât
subgraful predecesor Gp = (Np,Ap) este o arborescen parcurgere BPF.
Demonstra ie. Din liniile (10), (11) i (12) ale algoritmului rezult
c p(y) := x numai dac y este accesibil din s. Evident c la terminarea
execu iei algoritmului avem Np = W. Din modul cum sunt definite Np i Ap
rezult c Gp este o arborescen . Deci subgraful predecesor Gp este o
arborescen parcurgere a digrafului G = (N,A).
Observa ia 2. Drumul unic de la nodul surs s la un nod y din
arborescen a parcurgere BF este un cel mai scurt drum de la nodul surs s la
acela i nod y din digraful G, conform punctului (2) al Teoremei 3.
Observa ia 3. Algoritmul PBF sau PTBF se poate aplica i
grafurilor neorientate. În acest caz, subgraful predecesor Gp = (Np,Ap)
este o arborescen . sau mai multe arborescen e.
Observa ia 4. Un drum unic de la nodul surs s la un nod y din
arborescenta parcurgere BF se poate determina cu urm toarea procedur .
(1) PROCEDURA DRUM (G,s,y);
(2) BEGIN;
(3) se tip re te u;
(4) WHILE p (y) i-0 DO
(5) BEGIN
(6) x := p(y); se tip re te x;
(7) IF x s
(8) THEN y := x
(9) ELSE EXIT;
(10) END;
(11) END.

Observa ia 5. Mul imea W este în general submul imea mul imii


nodurilor N. Pentru parcurgerea întregului digraf G = (N,A) se utilizeaz
algoritmul parcurgerii totale generice (algoritmul PTG). Algoritmul PTG
este urm torul:
(1) PROGRAM PTG;
(2) BEGIN;
(3) U := N - {s}; V :== {s}; W := 0 ;
(4) FOR to i y N DO p(y) := 0;
(5) k:= 1; o(s):= 1;
(6) FOR to i y U DO o(y) := ;
(7) WHILE W N DO
(8) BEGIN
(9) WHILE V 0 DO
(10) BEGIN
(11) se selecteaz un nod x din V;
(12) IF exist arc (x, y) A i y U
(13) THEN U:=U-{y}; V:=V {y};p(y):=x;
k := k + 1; o(y) :=k
(14) ELSE V:=V-{x}; W:=W {x};
(15) END;
(16) se selecteaz s U; U:= U - {s}; V:= {s};
k := k + 1: o(S) := k;
(17) END;
(18) END.

Este evident c algoritmul PTG are complexitatea tot O(m) i c


vectorul p determin una sau mai multe arborescente parcurgeri.
Exemplu 1.
Se aplic algoritmul PBF digrafului din figura 1 .

Figura 1

Ini ializ ri:


s = 1, U = {2,3,4,5,6},
V = {1}, W = 0 , p = (0,0,0,0,0,0), l = (0, , , , , ).
Itera ia 1:
x = 1, (1,2) A, 2 U: U = {3,4,5,6},
V = {1,2}, p = (0,1,0,0,0,0) ,
l = (0,1, , , , ); (1,3) A, 3 U: U = {4,5,6},
V = {1,2,3}, p= (0,1,1,0,0,0),
l = (0,1, 1, , , ); V = {2, 3}; W = {1}.
Itera ia 2:
x = 2, (2,4) A, 4 U: U = {5,6}, V = {2,3, 4},
p = (0,1,1,2,0,0), l = (0,1,1,2, , ); (2,5) A,
5 U : U = {6}, V = {2,3,4,5} , p = (0,1,1,2,2,0) ,
l = (0,1,1,2,2, ) ; V = {3, 4, 5} ; W = {1, 2}.
Itera ia 3:
x = 3, V = {4, 5}, W = {1, 2, 3}.
Itera ia 4:
x = 4, (4, 6) A, 6 U: U = 0 , V = {4, 5,6},
p = (0,1,1,2,2,4), l = (0,1,1,2,2,3); V = {5,6};
W = {1,2,3,4}.
Itera ia 5:
x =5, V={6}, W = {1,2,3,4,5}.
Itera ia 6:
x = 6, V = 0 , W = {1,2,3,4,5,6}.
Np = {1,2,3,4,5,6} = W.

Arborescen a parcurgere BF este prezentat în figura 2.


Figura 2

Drumul unic de la nodul 1 la nodul 6 se ob ine cu PROCEDURA


DRUM în modul urm tor:
y = 6 este ultimul nod al drumului;
Itera ia 1: x = p(6) = 4, y = 4.
Itera ia 2: x = p(4) = 2, y = 2.
Itera ia 3: x = p(2) = 1, y = l.
Drumul este: 1,2,4,6.

4.2. Parcurgerea DF a grafurilor


Parcurgerea se face "mai întâi în adâncime". În englez "depth first"
(DF).
În algoritmul parcurgerii DF (algoritmul PDF) se folosesc acelea i
nota ii ea în algoritmul PBF cu deosebirea c , în locul tabloului
unidimensional de lungime l se utilizeaz tablourile timp unidimensionale t1
i t2 care au fiecare n elemente. Mul imea nodurilor vizitate i neanalizate V
este organizat ca structur de date, ca stiv .
Algoritmul PDF este urm torul:
(1) PROGRAM PDF;
(2) BEGIN;
(3) U := N-{s}; V := {s}; W := 0 ;
(4) FOR to i y N DO p(y) := 0;
(5) t := 1; t1(s) := 1; t2(s) := ;
(6) FOR to i y U DO t1(y) := ; t2(y) := ;
(7) WHILE V 0 DO
(8) BEGIN
(9) se selecteaz cel mai nou nod x introdus in V;
(10) IF exist arc (x,y) A i y U
(11) THEN U := U - {y}; V := V {y}; p (y) := x;
t := t + 1; t1(y) := t
(12) ELSE V := V-{x}; W := W {x}; t:=t+1;t2(x):=t;
(13) END;
(14) END.
Din liniile (10), (11), (12) ale algoritmului PDF rezult c elementul
t1(y) reprezint momentul când y devine nod vizitat i neanalizat i
elementul t2(x) reprezint momentul când x devine nod vizitat i analizat.
Se va studia în continuare algoritmul parcurgerii totale DF
(algoritmul PTDF).
Algoritmul PTDF este urm torul:

(1) PROGRAM PTDF;


(2) BEGIN;
(3) U:=N-{s}; V:={s}; W:= 0 ;
(4) FOR to i y N DO p(y) := 0;
(5) t:=1; t1(s):= l; t2(s):= ;
(6) FOR to i y U DO t1(y) := ; t2(y) := ;
(7) WHILE W N DO
(8) BEGIN
(9) WHILE V 0 DO
(10) BEGIN
(11) se selecteaz cel mai nou nod x introdus
în V;
(12) IF exist arc (x,y) A i y U
(13) THEN U := U - {y}; V := V {y};
p (y) := x; t := t + 1; t1(y)
:= t;
(14) ELSE V:= V - {x}; W:= W {x};
t:= t + 1; t2 (x) := t;
(15) END;
(16) se selecteaz s U; U := U - {s}; V := {s};
t:=t+l; t1(s):=t;
(17) END;
(18) END.

Fie mul imea S {s s N , s selectate în linia (3) i linia (16)}.


Teorema 6.
Algoritmul PTDF este convergent i determin mul imile nodurilor
accesibile din s, s S.
Demonstra ie. Se demonstreaz la fel ca Teorema 2.
Teorema 7.
Algoritmul PTDF are complexitatea O(m).
Demonstra ie. Evident c . algoritmul PTDF are complexitatea
O(m).
Un digraf G ˆ (N, ˆ se nume te p dure dac este format din una
ˆ A)
sau mai multe arborescen e. Un graf neorientat G ˆ (N,
ˆ A)ˆ se nume te
p dure dac este format din unul sau mai mul i arbori.
În parcurgerea total DF, dac subgraful predecesor Gp = (Np,Ap),
N p {y p(y) 0} S, A p {(p(y), y) y N p S} este o p dure i
Np = W, atunci Gp se nume te p dure parcurgere DF.
Teorema 8.
Algoritmul PTDF determin elementele tabloului p astfel încât
subgraful predecesor Gp = (Np,Ap) este o p dure parcurgere DF.
Demonstra ie. Se demonstreaz analog ca Teorema 5.
Exemplul 2.
Se aplic algoritmul PTDF digrafului

Figura 3

Ini ializ ri:


s = 1,U = {2,3,4,5,6, ,8}, V = {1}, W = 0 , p
p = (0,0,0,0,0,0,0,0), t = 1,
t1 = (1, , , , , , , ),
t2 = ( , , , , , , , ).
Itera ia 1:
x = 1, (1,2) A, 2 U: U = {3,4,5,6,7,8}, V = {1,2},
p = (0,1,0,0,0,0,0,0), t = 2,
tl = (1,2, , , , , , , ).
Itera ia 2:
x = 2, (2,3) A,3 U: U = {4,5,6,7,8}, V = {1,2,3},
p = (0,1,2,0,0,0,0,0), t = 3,
t1 = (1, 2, 3, , , , , ).
Itera ia 3:
x = 3, (3,4) A,4 U: U = {5,6,7,8}, V = {1,2,3,4},
p = (0,1,2,3,0,0,0,0), t = 4, t1 = (1,2,3,4, , , , ).
Itera ia 4:
x = 4: V = {1,2, 3}, W = {4}, t = 5,
t2 = ( , , ,5, , , , ).
Itera ia 5:
x = 3: V = {1,2}, W = {4,3}, t = 6,
t2 = ( , ,6,5, , , , ).
Itera ia 6:
x = 2, (2,5) A, 5 U: U = {6,7,8},
V = {1,2,5}, p = (0,1,2,3,2,0,0,0), t = 7,
tl = (1,2,3,4,7, , , ).
Itera ia 7:
x = 5: V = {1,2}, W = {4,3,5}, t = 8,
t2 = ( , ,6,5,8, , , ).
Itera ia 8:
x = 2 : V = {1}, W = {4,3,5,2}, t = 9,
t2 = ( ,9,6,5,8, , , ).
Itera ia 9:
x = 1: V = 0, W = {4,3,5,2,l}, t = 10,
t2 = (10,9,6,5,8, , , ).
Actualiz ri:
s = 6, U = {7,8}, V = {6}, t = 11, t1 = (1,2,3,4,7,11, , )
Itera ia 10:
x = 6, (6, 7) A, 7 U : U = {8}, V = {6, 7},
p = (0,1,2,3,2,0,6,0), t = 12,
t1 = (1,2,3,4,7,11,12, ).
Itera ia 11:
x = 7 : V = {6}, W = {4, 3,5,2,1,7}, t = 13,
t2 = (10,9,6,5,8,00,13, ).
Itera ia 12:
x = 6, (6,8) A,8 U: U = 0 , V = {6,8}, p = (0,1,2,3,2,0,6,6),
t = 14, tl = (1,2,3,4,7,11,12,14).
Itera ia 13:
x = 8 : V = {6}, W = {4, 3, 5, 2,1, 7,8}, t = 15,
t2 = (10,9,6,5,8, ,13,15).
Itera ia 14:
x = 6: V = 0 , W = {4,3,5,2,1,7,8,6}, t = 16,
t2 = (10,9,6,5,8,16,13,15).

4.3. Aplica ii
4.3.1. Sortarea topologic
Teorema 9. Un digraf G = (N,A) este f r circuite dac i numai
dac orice parcurgere total DF a lui G nu produce arce de revenire.
Demonstra ie. Presupunem c digraful G este f r circuite. Prin
reducere la absurd presupunem ca o parcurgere total DF a lui G produce
arce de revenire ( R 0 ). Fie arcul (z, x) R . În acest caz nodul z este un
descendent al nodului x în p durea parcurgere DF. Deci exist un drum D de

la x la z în G. Atunci D = D {z,x} este un circuit în G i aceasta


contrazice ipoteza c digraful G este f r circuite.
Reciproc, presupunem c o parcurgere total DF a digrafului G nu
produce arce de revenire ( R 0 ). Prin reducere la absurd presupunem c

G con ine un circuit D . Fie x primul nod vizitat din D i fie arcul

(z,x) D . Deoarece nodurile x, z D rezult c exist un drum D de la x


la z. De asemenea x fiind primul nod vizitat din D rezult c nodul z
devine un descendent al nodului x la p durea PDF. Deci (z,x) este un arc
de revenire ce contrazice ipoteza R 0 .
Sortarea topologic a unui digraf G = (N,A) f r circuite const
într-o ordonare liniar a nodurilor din N astfel încât dac (x, y) A
atunci x apare înaintea lui y în ordonare.
Algoritmul sortare topologic (algoritmul ST) se ob ine din
algoritmul PTDF f când urm toarele dou complet ri:
(1) în partea de ini ializ ri (liniile (3)-(6)) se ini ializeaz o list a
nodurilor;
(2) în linia (16) dup calculul lui t2(X), nodul x se introduce la
începutul listei.
La terminarea algoritmului ST, lista furnizeaz sortarea topologic
a digrafului G = (N,A) f r circuite i nodurile x sunt plasate în list în
ordinea descresc toare a timpilor t2(X).

4.3.2. Componentele conexe ale unui graf


Defini ia 1. Un digraf G = (N,A) se nume te conex dac pentru
oricare dou noduri x, y exist un lan care are aceste dou noduri drept
extremit i.
No iunea de conexitate are sens i pentru grafuri neorientate.
Defini ia 2. Se nume te component conex a unui digraf
G = (N,A) un subgraf G' = (N',A') al lui G, care este conex i care este
maximal în raport cu incluziunea fa de aceast proprietate (oricare ar fi
x N ' N N ' , subgraful G 'x generat de N 'x N ' {x} nu mai este
conex).
O component conex G' = (N',A') a unui digraf G = (N,A) se poate
identifica cu mul imea N' care genereaz subgraful G'.
Deoarece în problema conexiunii sensul arcelor nu conteaz se va
considera c grafurile sunt neorientate. Dac G = (N,A) este digraf atunci i se
asociaz graful neorientat G ˆ (N, ˆ , unde N̂ N, A
ˆ A) ˆ {[x, y] (x, y) A

i / sau (y, x) A }. Este evident c G i Ĝ au acelea i componente conexe.


Algoritmul componentelor conexe (algoritmul CC) este o adaptare a
algoritmului PTDF aplicat unui graf neorientat G = (N,A). Nu se calculeaz
tablourile timp t1, t2 i prin p not m o variabil scalar a c rei valoare
reprezint num rul componentelor conexe. Algoritmul CC este urm torul:
(1) PROGRAM CC;
(2) BEGIN
(3) U:= N - {s}; V:= {s}; W:= 0 ; p:= l; N' = {s};
(4) WHILE W N DO
(5) BEGIN
(6) WHILE V 0 DO
(7) BEGIN
(8) se selecteaz cel mai nou nod x introdus în V;
(9) IF exist muchie [x, y] A i y V
(10) THEN U:= U-{y}; V:=V {y};N':=N' {y}
(11) ELSE V:= V-{x}; W:=W {x};
(12) END;
(13) se tip resc p i N';
(14) se selecteaz s U; U:=U-{s}; V:={s};
p:= p+1;N':={s};
(15) END;
(16) END.

La terminarea algoritmului pot exista cazurile:


(Cl) se tip re te o singur component conex i în acest caz graful
G = (N,A) este conex;
(C2) se tip resc mai multe componente conexe i în acest caz graful
G = (N,A) nu este conex, ob inându-se toate componentele conexe ale lui G.
Teorema 10.
Algoritmul CC determin componentele conexe ale unui graf
neorientat G = (N,A).
Demonstra ie.
La terminarea execu iei ciclului WHILE se determin mul imea N' a
tuturor nodurilor accesibile printr-un lan cu aceea i extremitate, nodul s.
Mul imea N' genereaz evident o component conex G' = (N',A').
Deoarece la terminarea execu iei algoritmului avem W = N rezult c
algoritmul CC determin toate componentele conexe ale lui G = (N,A).
Teorema 11.
Algoritmul CC are complexitatea O(m).
Demonstra ie. Algoritmul CC are aceea i complexitate cu a
algoritmului PTDF, adic O(m).
Exemplul 3.
Fie digraful din figura 4.
Pentru a determina componentele conexe ale acestui digraf se
transform într-un graf neorientat reprezentat în figura 5 c ruia i se aplic
algoritmul CC.

Figura 4
Figura 5

Ini ializ ri:


s = 1, U = {2,3,4,5,6,7,8}, V = {1}, W = 0 , p = 1, N'={1}.
Itera ia 1:
x = 1, [1,2] A, 2 U : U = {3,4,5,6,7,8}, V = {1,2}, N'={1,2}.
Itera ia 2:
x = 2, [2,3] A, 3 U: U={4,5,6,7,8}, V={1,2,3}, N'={1,2,3}.
Itera ia 3:
x=3, [3,4] A, 4 U: U={5,6,7,8}, V={1,2,3,4}, N'={1,2,3,4}.
Itera ia 4:
x = 4: V = {1,2,3}, W = {4}.
Itera ia 5:
x = 3: V = {1,2}, W = {4,3}.
Itera ia 6:
x = 2, V = {1}, W = {4,3,2}.
Itera ia 7:
x = 1 : V = 0 , W = {4, 3, 2, 1}.
Se tip resc:
p = 1 i N' = {1,2,3,4}
Actualiz ri:
s = 5, U = {6,7,8}, V = {5}, p = 2, N' = {5}.
Itera ia 8:
x = 5, [5,6] A, 6 U : U = {7,8}, V = {5,6}, N' = {5,6}.
Itera ia 9:
x = 6, [6,8] A, 8 U : U = {7}, V = {5,6,8}, N' = {5,6,8}.
Itera ia 10:
x = 6, [8, 7] A, 7 U: U = 0 , V = {5,6,8,7}, N'={5,6,8,7}.

Itera ia 11:
x = 7 : V = {5,6,8}, W = {4,3,2,1,7}.
Dup înc trei itera ii se ob ine
V = 0 , W = {4,3,2,1,7,8,6,5}
Se tip resc
p = 2 i N' = {5,6,8,7}
i execu ia algoritmului se opre te.