Sunteți pe pagina 1din 14

Capitolul 4 PARCURGERI DE GRAFURI

Problema parcurgerii unui digraf G = (N,A), N = {1, ... , n}, A = {1, ... , m} are urmtoarea formulare: s se genereze mulimea 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 iteraie a execuiei oricrui algoritm de parcurgere stabilete pentru fiecare nod apartenena la una din urmtoarele trei stri: nevizitat; vizitat i neanalizat, adic un nod vizitat ai crui succesori au fost parial vizitai; vizitat si analizat, adic un nod vizitat ai crui succesori au fost n totalitate vizitai. 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 explornd arcul (x,y) se spune c nodul x este predecesorul parcurgere al nodului y. Se vor prezenta urmtorii algoritmi pentru parcurgerea unui digraf: algoritmul BF i algoritmul DF. Aceti algoritmi utilizeaz urmtoarele notaii comune: U mulimea nodurilor nevizitate; V mulimea nodurilor vizitate i neanalizate; W mulimea nodurilor vizitate i analizate; p tabloul predecesor, care este unidimensional cu n elemente.

4.1. Parcurgerea BF a grafurilor


Parcurgerea se face "mai nti n lime". n englez "breadth first" (BF). Fie digraful G = (N,A) cu nodul surs s i Dx mulimea drumurilor de la nodul sursa s la nodul x N. Numrul de arce ce compun un drum Dx Dx definete lungimea acestui drum pe care l notm l(Dx). Distana de la nodul s la nodul x se definete n modul urmtor: / min{l(D x ) D x Dx }, Dx 0 d(x) = , Dx = 0 /
29

Un drum D x Dx cu l( D x ) = d(x) se numete cel mai scurt drum de la nodul surs s la nodul x. Observaia 1. Pentru orice arc (x,y) A avem d(y) d(x) + 1. ntr-adevr, dac Dx = 0 atunci d(x) = i inegalitatea se pstreaz. / Dac Dx 0 atunci evident Dy 0 . Fie D x un cel mai scurt drum de la s / / la x, deci l( D ) = d(x). Mulimea Dy poate conine un drum Dy, astfel nct l(Dy) < d(x) + 1. Conform definiiei distanei avem d(y) l(Dy) i rezult c d(y) < d(x) + 1. Avem egalitate cnd un drum cel mai scurt D y de la s la y are lungimea
d(y) = l( D y ) = d(x) + 1,
x

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. Mulimea nodurilor vizitate i neanalizate V este organizat, ca structur de date, ca o coad. Algoritmul PBF este urmtorul:
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) PROGRAM PBF; BEGIN; U := N - {s} ; V := {s} ; W := 0 ; / FOR toi y N DO p(y) := 0; l(s) := 0; FOR toi y U DO l(y) := ; WHILE V 0 DO / BEGIN se selecteaz cel mai vechi nod x introdus In V; FOR (x, y) A DO IF y U THEN U:=U{y}; V:=V {y}; p(y):=x: l(y) := l(x) + 1; V:=V-{x}; W:=W {x}; END; END.

Teorema 1 . (1) Algoritmul PBF calculeaz elementele tabloului l astfel nct d(y) l(y), y N ; (2) Dac la iteraia 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 .

30

Demonstraie. (1) Utilizm inducia dup k, numrul de iteraii ale ciclului WHILE. Iniial l(s) := 0, l(y) := pentru yU i evident d(y) l(y), y N . Presupunem c, la iteraia k avem d(y) l(y) pentru y N . La iteraia 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 induciei, avem d(y) l(y) , deoarece la iteraia 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 iteraia k + 1 nu se modific nici un element l(y) i conform ipotezei induciei d(y) l(y) pentru y N . (2) Utilizm inducia dup k numrul de iteraii ale ciclului WHILE. Iniial V := {s}. Deci x1 = a, xr = a i l(s) < l(s) + 1, l(s) = l(s). Presupunem c la iteraia k avem l(xr) l(x1) + 1 i l(xi) < l(xi+1), pentru i = 1, r 1 . La iteraia 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 inegalitile l(xi) l(xi+1), i = 1, r 1 au rmas 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 inegalitile l(xi) l(xi+1), i = 1, r 1 au rmas nemodificate. Teorema 2. Algoritmul PBF este convergent i la terminarea execuiei determinm mulimea tuturor nodurilor care sunt accesibile din nodul surs s n digraful G = (N,A). Demonstraie. Din liniile (10), (11) i (12) ale algoritmului rezult c toate nodurile introduse n V sunt eliminate dup ce sunt analizate. Deci dup un numr finit de iteraii se obine V = 0 i / execuia algoritmului se oprete. Pentru a arta c la terminarea execuiei, algoritmul determin mulimea tuturor nodurilor care sunt accesibile din nodul surs s n digraful G = (N,A), trebuie s artm c la terminarea execuiei algoritmului mulimea 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

31

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 oprete cnd V = 0 rezult c W conine toate nodurile / y N care sunt accesibile din s i introduse n V. S artm c W conine 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. Continund procedeul vom deduce n final c s = y1 V. Aceasta contrazice faptul c n linia (3) a algoritmului iniializm V:={s}. Rezulta c y V, deci y W i teorema este demonstrat. Teorema 3. Algoritmul PBF este convergent i determin: (1) mulimea tuturor nodurilor care sunt accesibile din nodul surs s; (2) elementele tabloului l astfel nct l(y) = d(y) pentru y N. Demonstraie. Convergena i punctul (1) se demonstreaz la fel ca Teorema 2. Punctul (2) se demonstreaz prin inducie dup k numrul iteraiilor ciclului WHILE. Fie mulimea Nk = {y N |d(y) = k}. Pentru k = 0 avem N0 = {s} i deci d(s) = l(s) = 0. Presupunem afirmaia adevrat pentru k. Afirmaia pentru k + 1 rezult cu uurin, deoarece, n conformitate cu Teorema 1 punctul (2), un nod y Nk+l este vizitat plecnd de la un nod x Nk numai dup ce toate nodurile din Nk sunt vizitate. Deci, dac y Nk+l i este vizitat explornd 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). Demonstraie. 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 execuia algoritmului se termin cnd V = 0 deducem c algoritmul execut cel mult 2n iteraii. 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 numete arborescen parcurgere BPF. Teorema 5. Algoritmul PBF determin elementele tabloului p astfel nct subgraful predecesor Gp = (Np,Ap) este o arborescen parcurgere BPF. Demonstraie. Din liniile (10), (11) i (12) ale algoritmului rezult c p(y) := x numai dac y este accesibil din s. Evident c la terminarea execuiei algoritmului avem Np = W. Din modul cum sunt definite Np i Ap

32

rezult c Gp este o arborescen. Deci subgraful predecesor Gp este o arborescen parcurgere a digrafului G = (N,A). Observaia 2. Drumul unic de la nodul surs s la un nod y din arborescena parcurgere BF este un cel mai scurt drum de la nodul surs s la acelai nod y din digraful G, conform punctului (2) al Teoremei 3. Observaia 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 arborescene. Observaia 4. Un drum unic de la nodul surs s la un nod y din arborescenta parcurgere BF se poate determina cu urmtoarea procedur.
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) PROCEDURA DRUM (G,s,y); BEGIN; se tiprete u; WHILE p (y)i-0 DO BEGIN x := p(y); se tiprete x; IF xs THEN y := x ELSE EXIT; END; END.

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

Este evident c algoritmul PTG are complexitatea tot O(m) i c vectorul p determin una sau mai multe arborescente parcurgeri.
33

Exemplu 1. Se aplic algoritmul PBF digrafului din figura 1 .

Figura 1 Iniializri: s = 1, U = {2,3,4,5,6}, V = {1}, W = 0 , p = (0,0,0,0,0,0), l = (0, , , , , ). / Iteraia 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}. Iteraia 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}. Iteraia 3: x = 3, V = {4, 5}, W = {1, 2, 3}. Iteraia 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}. Iteraia 5: x =5, V={6}, W = {1,2,3,4,5}. Iteraia 6: / x = 6, V = 0 , W = {1,2,3,4,5,6}. Np = {1,2,3,4,5,6} = W. Arborescena parcurgere BF este prezentat n figura 2.

34

Figura 2
Drumul unic de la nodul 1 la nodul 6 se obine cu PROCEDURA DRUM n modul urmtor: y = 6 este ultimul nod al drumului; Iteraia 1: x = p(6) = 4, y = 4. Iteraia 2: x = p(4) = 2, y = 2. Iteraia 3: x = p(2) = 1, y = l. Drumul este: 1,2,4,6.

4.2. Parcurgerea DF a grafurilor


Parcurgerea se face "mai nti n adncime". n englez "depth first" (DF). n algoritmul parcurgerii DF (algoritmul PDF) se folosesc aceleai notaii 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. Mulimea nodurilor vizitate i neanalizate V este organizat ca structur de date, ca stiv. Algoritmul PDF este urmtorul:
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) PROGRAM PDF; BEGIN; U := N-{s}; V := {s}; W := 0 ; / FOR toi y N DO p(y) := 0; t := 1; t1(s) := 1; t2(s) := ; FOR toi y U DO t1(y) := ; t2(y) := ; WHILE V 0 DO / BEGIN se selecteaz cel mai nou nod x introdus in V; IF exist arc (x,y) A i y U THEN U := U - {y}; V := V {y}; p (y) := x; t := t + 1; t1(y) := t ELSE V := V-{x}; W := W {x}; t:=t+1;t2(x):=t; END; END.

35

Din liniile (10), (11), (12) ale algoritmului PDF rezult c elementul t1(y) reprezint momentul cnd y devine nod vizitat i neanalizat i elementul t2(x) reprezint momentul cnd x devine nod vizitat i analizat. Se va studia n continuare algoritmul parcurgerii totale DF (algoritmul PTDF). Algoritmul PTDF este urmtorul:
(1) PROGRAM PTDF; (2) BEGIN; (3) U:=N-{s}; V:={s}; W:= 0 ; / (4) FOR toi y N DO p(y) := 0; (5) t:=1; t1(s):= l; t2(s):= ; (6) FOR toi y U DO t1(y) := ; t2(y) := ; (7) WHILE WN 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 mulimea S = {s s N , s selectate n linia (3) i linia (16)}.

Teorema 6. Algoritmul PTDF este convergent i determin mulimile nodurilor accesibile din s, s S. Demonstraie. Se demonstreaz la fel ca Teorema 2. Teorema 7. Algoritmul PTDF are complexitatea O(m). Demonstraie. Evident c. algoritmul PTDF are complexitatea O(m). Un digraf G = (N, A) se numete pdure dac este format din una sau mai multe arborescene. Un graf neorientat G = (N, A) se numete

pdure dac este format din unul sau mai muli 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 pdure i
Np = W, atunci Gp se numete pdure parcurgere DF.
36

Teorema 8. Algoritmul PTDF determin elementele tabloului p astfel nct subgraful predecesor Gp = (Np,Ap) este o pdure parcurgere DF. Demonstraie. Se demonstreaz analog ca Teorema 5. Exemplul 2. Se aplic algoritmul PTDF digrafului

Figura 3 Iniializri: / 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 = ( , , , , , , , ). Iteraia 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, , , , , , , ). Iteraia 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, , , , , ). Iteraia 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, , , , ). Iteraia 4: x = 4: V = {1,2, 3}, W = {4}, t = 5, t2 = ( , , ,5, , , , ). Iteraia 5: x = 3: V = {1,2}, W = {4,3}, t = 6, t2 = ( , ,6,5, , , , ). Iteraia 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, , , ). Iteraia 7: x = 5: V = {1,2}, W = {4,3,5}, t = 8, t2 = ( , ,6,5,8, , , ).
37

Iteraia 8: x = 2 : V = {1}, W = {4,3,5,2}, t = 9, t2 = ( ,9,6,5,8, , , ). Iteraia 9: x = 1: V = 0, W = {4,3,5,2,l}, t = 10, t2 = (10,9,6,5,8, , , ). Actualizri: s = 6, U = {7,8}, V = {6}, t = 11, t1 = (1,2,3,4,7,11, , ) Iteraia 10: x = 6, (6, 7)A, 7U : U = {8}, V = {6, 7}, p = (0,1,2,3,2,0,6,0), t = 12, t1 = (1,2,3,4,7,11,12, ). Iteraia 11: x = 7 : V = {6}, W = {4, 3,5,2,1,7}, t = 13, t2 = (10,9,6,5,8,00,13, ). Iteraia 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). Iteraia 13: x = 8 : V = {6}, W = {4, 3, 5, 2,1, 7,8}, t = 15, t2 = (10,9,6,5,8, ,13,15). Iteraia 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. Aplicaii
4.3.1. Sortarea topologic
Teorema 9. Un digraf G = (N,A) este fr circuite dac i numai dac orice parcurgere total DF a lui G nu produce arce de revenire. Demonstraie. Presupunem c digraful G este fr 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 pdurea 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 fr 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 conine 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
o o o o o

38

la z. De asemenea x fiind primul nod vizitat din D rezult c nodul z devine un descendent al nodului x la pdurea PDF. Deci (z,x) este un arc de revenire ce contrazice ipoteza R = 0 . / Sortarea topologic a unui digraf G = (N,A) fr circuite const ntr-o ordonare liniar a nodurilor din N astfel nct dac (x, y) A atunci x apare naintea lui y n ordonare. Algoritmul sortare topologic (algoritmul ST) se obine din algoritmul PTDF fcnd urmtoarele dou completri: (1) n partea de iniializri (liniile (3)-(6)) se iniializeaz 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) fr circuite i nodurile x sunt plasate n list n ordinea descresctoare a timpilor t2(X).

4.3.2. Componentele conexe ale unui graf


Definiia 1. Un digraf G = (N,A) se numete conex dac pentru oricare dou noduri x, y exist un lan care are aceste dou noduri drept extremiti. Noiunea de conexitate are sens i pentru grafuri neorientate. Definiia 2. Se numete 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 mulimea 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, A) , unde N = N, A = {[x, y] (x, y) A i / sau (y, x) A }. Este evident c G i G au aceleai 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 notm o variabil scalar a crei valoare reprezint numrul componentelor conexe. Algoritmul CC este urmtorul:
(1) (2) (3) (4) (5) PROGRAM CC; BEGIN U:= N - {s}; V:= {s}; W:= 0 ; p:= l; N' = {s}; / WHILE W N DO BEGIN

39

(6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) END; END.

WHILE V 0 DO / BEGIN se selecteaz cel mai nou nod x introdus n V; IF exist muchie [x, y] A i y V THEN U:= U-{y}; V:=V {y};N':=N' {y} ELSE V:= V-{x}; W:=W {x}; END; se tipresc p i N'; se selecteaz s U; U:=U-{s}; V:={s}; p:= p+1;N':={s};

La terminarea algoritmului pot exista cazurile: (Cl) se tiprete o singur component conex i n acest caz graful G = (N,A) este conex; (C2) se tipresc mai multe componente conexe i n acest caz graful G = (N,A) nu este conex, obinndu-se toate componentele conexe ale lui G. Teorema 10. Algoritmul CC determin componentele conexe ale unui graf neorientat G = (N,A). Demonstraie. La terminarea execuiei ciclului WHILE se determin mulimea N' a tuturor nodurilor accesibile printr-un lan cu aceeai extremitate, nodul s. Mulimea N' genereaz evident o component conex G' = (N',A'). Deoarece la terminarea execuiei 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). Demonstraie. Algoritmul CC are aceeai 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 cruia i se aplic algoritmul CC.

Figura 4

40

Figura 5 Iniializri: / s = 1, U = {2,3,4,5,6,7,8}, V = {1}, W = 0 , p = 1, N'={1}. Iteraia 1: x = 1, [1,2]A, 2U : U = {3,4,5,6,7,8}, V = {1,2}, N'={1,2}. Iteraia 2: x = 2, [2,3]A, 3U: U={4,5,6,7,8}, V={1,2,3}, N'={1,2,3}. Iteraia 3: x=3, [3,4]A, 4U: U={5,6,7,8}, V={1,2,3,4}, N'={1,2,3,4}. Iteraia 4: x = 4: V = {1,2,3}, W = {4}. Iteraia 5: x = 3: V = {1,2}, W = {4,3}. Iteraia 6: x = 2, V = {1}, W = {4,3,2}. Iteraia 7: / x = 1 : V = 0 , W = {4, 3, 2, 1}. Se tipresc: p = 1 i N' = {1,2,3,4} Actualizri: s = 5, U = {6,7,8}, V = {5}, p = 2, N' = {5}. Iteraia 8: x = 5, [5,6] A, 6 U : U = {7,8}, V = {5,6}, N' = {5,6}. Iteraia 9: x = 6, [6,8] A, 8 U : U = {7}, V = {5,6,8}, N' = {5,6,8}. Iteraia 10: / x = 6, [8, 7]A, 7U: U = 0 , V = {5,6,8,7}, N'={5,6,8,7}. Iteraia 11: x = 7 : V = {5,6,8}, W = {4,3,2,1,7}. Dup nc trei iteraii se obine / V = 0 , W = {4,3,2,1,7,8,6,5} Se tipresc p = 2 i N' = {5,6,8,7} i execuia algoritmului se oprete.

41

42

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