Vous êtes sur la page 1sur 14

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

TEMA NR. 8 22 aprilie 2003 1.


Fie G un graf conex i o funcie de cost c:E(G) R. Vom numi tietur orice mulime A de muchii ale lui G cu proprietatea c exist o bipartiie (S, V(G) S) a mulimii vrfurilor lui G astfel nct A este mulimea muchiilor lui G cu extremitile n clase diferite ale bipartiiei. a) Artai c dac funcia de cost are proprietatea c orice tietur are o unic muchie de cost minim, atunci exist un unic arbore parial de cost minim. b) Deducei c, dac funcia de cost c este injectiv, atunci G are un unic arbore parial de cost minim. c) Sunt adevrate reciprocele afirmaiilor a i b?

Soluie: a) Fiind conex, graful G accept cel puin un arbore parial de cost minim. Vom utiliza teorema general de construcie a arborilor pariali de cost minim, particularizat pentru cazul n care funcia de cost are proprietatea c orice tietur are o unic muchie de cost minim. Se fac urmtoarele notaii: TK = (T1k, , Tn-kk), unde Tik, cu 1 i n-k, sunt arbori (subgrafuri ale lui G); V(Tik) = partiie a lui V(G); e* este muchia de cost minim printre toate cu o extremitate pe T sk ales i cealalt n V-V(Tsk). Vom demonstra urmtoarea teorem: Fie G=(V,E) cu V = {1, , n} i o funcie de cost c: E(G)R astfel nct orice A, tietur, are o unic muchie de cost minim. Dac G este conex (T G ), atunci exist i este unic T* (arbore
E (T j parial de cost minim) i pentru oricare k ntre 0 i n-1, E(T K) =
j= 1 n k k

E(T*) (pentru k = n -

1 obinem soluia problemei) Demonstraie: Vom demonstra teorema prin inducie dup k, adic dup pasul la care am ajuns cu construcia arborelui. Pasul de baz: Pentru k=0 avem G conex, deci exist T* (TG i finit). E(T*) = E(T*), deci relaia este adevrat. Pasul inductiv: Presupunem relaia adevrat pentru k < n - 1 adic: exist i este unic T *astfel nct E(Tk) E(T*). Trebuie s demonstrm c exist i este unic T*astfel nct E(Tk+1) E(T*). E(Tk+1) = E(Tk) {e*}, unde e* este muchia considerat mai sus. Avem dou posibiliti: 1. dac muchia e* este din E(T*), unde T* este arborele parial de cost minim de la pasul k, atunci la acest pas nu modificm arborele de la pasul anterior i deci teorema are loc. 2. dac muchia e*nu este din E(T*), unde T* este arborele parial de cost minim de la pasul k, atunci T*+ e* are exact un circuit C care are toate muchiile, n afar de e *, n E(T*). ntruct T* este arbore, putem spune c exist deja o muchie e1 cu o extremitate pe Tsk i cealalt n afar, la fel ca e*. Deci, pentru a obine un alt arbore parial de cost minim, este necesar s nlocuim e1 cu e* n T*; ns nlocuirea se poate face numai n cazul n

2 care c(e*) c(e1). Dar T* era arbore parial de cost minim aadar c(T *) era minim; nu putem obine un arbore parial de cost mai mic dect T * dar am putea obine un alt arbore parial, de cost egal cu c(T*). Acest lucru s-ar ntmpla dac am gsi o muchie e * astfel nct c(e*)= c(e1). (V(Tsk), V(G)-V(Tsk)) determin o tietur iar e1 este muchia de cost minim din aceast tietur. tim c funcia de cost are o singur muchie de cost minim ntr-o tietur, aa c nu exist o alt muchie de cost egal cu costul lui e 1. Deci nu gsim o muchie e* cu proprietatea de mai sus, aa c aceast situaie nu este posibil. Aadar, muchia e* este obligatoriu din E(T*) de la pasul anterior, deci T* nu se poate modifica; el rmne la fel la fiecare pas. Am demonstrat c n ipoteza de la care am pornit obinem un unic arbore parial de cost minim. b) Dac funcia c este injectiv, nseamn c pentru oricare dou muchii e 1, e2 din E(G), diferite, avem c (e1) c(e2). Deci pentru orice mulime de tieturi obinem c are o unic muchie de cost minim, ntruct orice alt muchie diferit de ea trebuie s aib cost diferit, i evident mai mare ntruct muchia considerat era de cost minim. Ne aflm acum n condiiile de la punctul a) i conform teoremei demonstrate mai sus, obinem c exist un unic arbore parial de cost minim. c) Reciprocele afirmaiilor de la punctele a) i b) nu sunt adevarate. Acest lucru l putem arta cel mai bine pe un graf conex G pe care l considerm nc de la nceput arbore. Este evident c acest graf are un unic arbore parial de cost minim, i anume chiar graful G, deoarece nu putem scoate nici o muchie din el pentru c nu ar mai fi conex (este minimal cu aceast proprietate). Vom arta c nu este obligatoriu ca funcia de cost s aib una din proprietile de mai sus: s fie injectiv sau s accepte o unic muchie de cost minim n orice tietur. Vom considera un exemplu, sugestiv pentru aceste dou cazuri: Dup cum putem observa, tietura determinat de mulimea S={1} i V(G)-S={2, 3, 4, 5} are dou muchii de cost minim = 10, i anume: muchia (1,2) i muchia (1,3). Cu toate acestea, aa cum am precizat i anterior, graful nostru adimite un unic arbore parial de cost minim. Pentru punctul b), subliniem faptul c funcia c asociat grafului G nu este injectiv: exist dou muchii diferite, (1,2) i (1,3), care au costuri egale: 10. Deci, reciprocele afirmaiilor de la punctele a) i b) nu sunt adevrate, ntruct exist situaii n care exist un unic arbore parial de cost minim pentru un graf i totui nici una din prorietile funciei de cost de mai sus nu este ndeplinit.

2.

Considerm o numerotare fixat a celor m>0 muchii ale unui graf conex G=(V,E) de ordin n. Pentru orice submulime de muchii A considerm xA GFm vectorul m-dimensional cu elemente 0,1 definit prin xiA=1 ei A (vectorul caracteristic). GFm

3 este spaiul vectorial peste corpul GF (cu elemente 0 i 1, i operaiile de adunare i nmulire modulo 2). a) Demonstrai c mulimea vectorilor caracteristici ai tuturor tieturilor grafului G, la care adugm i vectorul nul, formeaz un subspaiu vectorial X al lui GFm. b) Demonstrai c vectorii caracteristici ai mulimilor muchiilor circuitelor grafului G genereaz un subspaiu vectorial U al lui GFm ortogonal pe X. c) Artai c dim(X) n-1 d) Artai c dim(U) m-n+1 e) Deducei c dim(X) = n-1 i c dim(U) = m-n+1. Soluie: a) Vom ncepe prin a defini spaiul vectorial i vom specifica ce nseamn subspaiu vectorial. Fie K un corp. Se numete spaiu vectorial (peste corpul K) un grup abelian (V,+) pe care este dat o lege de compoziie extern cu operatori n K, K V V, ( , u) u, care verific axiomele: S1) ( + )u = u + u, S2) (u + v) = u + v, S3) ( u) = ( )u, S4) 1 u = u, Oricare ar fi , K i u, v V. n cazul nostru, (GFm, +(mod2)) este grupul abelian iar (GF, +(mod2) ,*) este corpul K din definiie. Pentru a demonstra c X este un subspaiu vectorial al lui GFm , iniial, trebuie s demonstrm c X este subgrup al lui GFm. 0m X din ipotez. Este evident c X are acelai element neutru ca i GFm, i anume vectorul 0m. Trebuie s demonstrm c din oricare dou elemente din X, compuse prin operaia de adunare modulo 2 pe vectori, se obine un element tot din X. De fapt, trebuie s demonstrm c din dou tieturi A 1 i A2, reprezentate prin vectori caracteristici, se obine o nou tietur A3, A3=A1+A2. n momentul n care adunm cei doi vectori, folosind adunarea modulo 2, putem avea urmtoarele cazuri, cu semnificaiile proprii: 0+0 = 0 dac o muchie i, cu i ntre 0 i m-1, nu aparine nici lui A1 i nici lui A2, atunci ea nu aparine nici lui A3 (n vectorul caracteristic al lui A3 vom avea 0 pe poziia i ) 0+1 = 1+ 0 = 1 dac o muchie i aparine mcar uneia dintre tieturi, atunci aparine i lui A3; deci va fi 1 pe poziia i n vectorul lui A3. 1+1 = 0 dac o muchie aparine ambelor tieturi, ea nu aparine lui A 3; vom avea 0 pe poziia i n vectorul A3. Aceste trei situaii se pot traduce n limbajul mulimilor prin diferena simetric, i anume A3 = A1 A2. n A3 avem numai acele muchii care nu se afl i n A1 i n A2. Trebuie s artm c noua mulime de muchii A 3 este tot tietur. Pentru aceasta, trebuie s gsim o mulime S3, corespunztoare lui A3, astfel nct muchiile din A3 s aib o extremitate n S3 i cealalt n V(G)-S3. Vom demonstra c mulimea S 3 corespunztoare este S1 S2, unde S1, S2 sunt mulimile corespunztoare lui A1, respectiv A2; artm c toate muchiile cu o extremitate n S1 S2 i cealalt n afar se afl n A3. S1 S2={v| v S1 i v S2 sau v S2 i v S1} Demonstrm prin dubl inegalitate:

4 1) A3 {uv E(G)| u S1 S2 i v V(G)-(S1 S2)} Considerm o muchie uv din A3. tim c uv A1 A2. Presupunem c uv A1. Deci u se afl n S1 i v se afl n V(G)-S1, sau invers. Deoarece uv A2 nseamn c u i v se afl amndou n S2 sau n V(G)-S2. Dac u i v S2, avem u S1 S2 i v S1 S2. Deci avem muchia uv inclus n mulimea {uv E(G)| u S1 S2 i v V(G)-(S1 S2)}. Dac u i v V(G)-S2, avem v S1 S2 i u S1 S2. Deci avem muchia uv inclus n mulimea {uv E(G)| u S1 S2 i v V(G)-(S1 S2)}. Analog, obinem i pentru v n S1 i u n V(G)-S1. 2) {uv E(G)| u S1 S2 i v V(G)-(S1 S2)} A3 Considerm o muchie uv din {uv E(G)| u S1 S2 i v V(G)-(S1 S2)}. Presupunem c u S1 i u S2 . Din faptul c v V(G)-(S1 S2) putem spune c v fie nu aparine nici lui S1, nici lui S2, fie aparine lui S1 S2. Dac v S1 i v S2, nseamn c v V(G)-S1 i v V(G)-S2. Conform presupunerii anterioare, obinem c uv A1 i uv A2, deci uv A3. Dac v S1 S2, nseamn c v S1 i v S2. Conform presupunerii anterioare, obinem c uv A2 i uv A1, deci uv A3. Analog, demonstrm i n presupunerea c u S2 i u S1. Conform cazurilor 1 i 2, obinem c A 3 = {uv E(G)| u S1 S2 i v V(G) (S1 S2)}. Deci A3 este tietur, cu S3= S1 S2. ntruct simetricul x al unui element x A din spaiul X este tot x A (xA + xA = 0 ) care aparine lui X i compunerea a oricare dou elemente din X este tot un element din X, putem spune c X este subgrup al lui GFm. n continuare, verificm axiomele: S1) ( + )u = u + u, , {0,1} , u X = 0 i = 1 : ( + )u = u u + u = 0m + u = u = 0 i = 0 : ( + )u = 0m X u + u = 0m + 0m = 0m = 1 i = 1 : ( + )u = 0mu = 0m X u + u = u + u = 0m S2)

(u + v) = u + v, {0,1}, u, v X = 0 : (u + v) = 0m X u + v = 0m + 0 m = 0 m =1 : (u + v) = u + v X aa cum am demonstrat anterior u+ v =u+v

S3)

( u) = ( )u, , {0,1} , u X = 0 i = 1 : ( u)=0 u = 0m = ( )u = 0 i = 0 : ( u)=0 0m = 0 m= ( )u = 1 i = 1 : ( u)=1 u = u = (1*1) u = ( )u = 1 i = 0 : ( u)=1 0m = 0m = 0 u =( )u

S4) 1 u = u, u X evident ntruct X este subgrup al grupului GF m i respect axiomele, putem spune c X este subspaiu vectorial al lui GFm. b) U = <{xC| C circuit n G}> Mulimea tuturor vectorilor caracteristici asociai circuitelor din graful G este inclus n U. Notm un astfel de vector cu xC, unde xC[i] = 1 dac muchia i se afl n circuitul C i 0 altfel. Pentru a demonstra c subspaiul vectorial generat de vectorii caracteristici asociai mulimilor muchiilor circuitelor grafului G este ortogonal pe X, trebuie s considerm vectorul caracteristic al unui circuit (din U), s l nmulim cu vectorul caracteristic al unei tieturi (din X) i s demonstrm c obinem rezultatul 0. Fie C un circuit i xC vectorul caracteristic asociat i fie A o tietur. Prin nmulirea vectorului xC cu xA nelegem produsul scalar al celor doi vectori, i anume: x
C

C A = ( x (i ) x (i ) ) (mod 2).

m 1

De fapt

x
i =0

i =0 m 1 C

(i ) x A (i ) reprezint numrul de muchii pe care le au n comun circuitul C

i tietura A, ntruct x C (i ) x A (i ) este 1 numai n momentul n care amndoi sunt 1, deci numai dac muchia I se afl i n circuit i n tietur. Deoarece suma obinut este modulo 2, putem spune c de fapt, produsul scalar este 0 dac circuitul i tietura au un numr par de muchii n comun i 1 dac numrul de muchii n comun este impar. Deci demonstraia noastr se reduce la a demonstra c orice circuit i tietur au n comun numr par de muchii (numai n acest caz produsul scalar este 0). Fie C un circuit i A o tietur. Fie k numrul de muchii comune lui A i C. Fie S i V S mulimile corespunztoare tieturii A. Dac k = 0, k este par, ceea ce trebuia demonstrat. Dac k > 0: Exist un nod v V(C) S (evident, deoarece, dac acest circuit are muchii comune cu o tietur, atunci, n mod necesar, el are noduri n ambele submulimi determinate de bipartiia corespunztoare tiaturii). Circuitul C este un drum nchis de la v la v. Fiecare muchie din cele k comune tieturii A i circuitului C este o trecere din S n V S sau invers. Presupunem c pornim din nodul v i parcurgem muchiile acestui circuit n ordinea n care ele apar (rezultatul este acelai indiferent de direcia n care se pornete). ntruct captul final al acestui drum nchis se gsete n S, pentru fiecare muchie te trecere de la S la V S trebuie s existe o alt muchie de revenire n S. n consecin, k trebuie s fie par. Aadar, orice circuit i tietur au n comun numr par de muchii i dup cum am explicat mai sus, putem spune c U este ortogonal pe X. c) Vom ncerca s construim incremental (n maniera construciei arborelui parial de cost minim) tieturi, prin adugarea la fiecare pas a unui nod; vom demonstra c prin acest mod de construcie se obin n - 1 tieturi liniar independente, adic nici o tietur nu poate fi obinut dintro combinaie liniar de alte tieturi. Prin urmare, exist cel puin n - 1 tieturi liniar independente.

6 Se pornete iniial cu un singur nod aflat n mulimea S a primei tieturi. La fiecare pas se adaug un nou nod n S-ul de la pasul anterior. Facem convenia ca nodul ales la pasul i s fie notat cu ui iar mulimea S obinut la acest pas s fie Si. Tietura determinat de mulimea Si va fi Ai. 1. Vom demonstra c tieturile obinute n aceast manier sunt distincte. Reducere la absurd: Presupunem c exist Si, Sj cu j > i, a.. Ai = Aj. Din modul de construcie a mulimilor S Si Sj (incluziune strict), adic Sj = Si {u1, ,uj-i}. Mulimea {u1,,uj-i} este evident nevid, deoarece am presupus j > i, avnd exact j i noduri. Vom studia urmtoarele dou cazuri(care acoper toate posibilitile): Cazul 1: w Si, up Sj - Si a.. wup E(G). Atunci: up Sj - Si up Si up V(G) - Si; n plus, w Si; up i w sunt n submulimi diferite ale bipartiiei corespunztoare tieturii Ai wup Ai; up Sj - Si up Sj; n plus, w Si i Si Sj (aa cum am artat mai sus) w Sj up i w sunt n acceai submulime dintre cele dou corespunztoare tieturii Aj wup Aj. Am artat deci c, n acest caz, wup Ai i wup Aj Ai Aj Ai Aj. Cazul 2: w Si, up Sj - Si a.. wup E(G). Atunci, ntruct G este conex, up Sj - Si i s V(G) Sj, a.. sup E(G). (Am precizat c s V(G) Sj, deoarece: am presupus n ipoteza acestui caz c nici un nod din S j - Si nu este adiacent cu nici un nod din Si; dac pentru orice up Sj - Si nu ar exista nici un alt nod din V(G) S j cu care s fie adiacent, nodurile din Sj - Si nu ar fi accesibile din nici un alt nod din graf care nu aparine acestei mulimi, deci graful nu ar fi conex. ). up Sj - Si up Sj; n plus, s V(G) Sj up i s sunt n submulimi diferite ale bipartiiei corespunztoare tieturii Aj sup Aj; up Sj - Si up Si up V(G) - Si; n plus, s V(G) Sj i Si Sj (aa cum am artat mai sus) s V(G) Si up i s sunt n acceai submulime dintre cele dou corespunztoare tieturii Ai sup Ai. Am artat deci c, i n acest caz, sup Aj i sup Ai Aj Ai Aj Ai. 2. Vom demonstra c tieturile obinute n aceast manier sunt liniar independente i deci ele aparin bazei spaiului vectorial X. Demonstraia o vom face prin inducie: Pasul de baz: Se alege un nod oarecare pe care am convenit s-l notm cu u 0. Mulimea S0 este format numai din elementul u0. A0 este format numai din acele muchii care au o extremitate n u0. A0 = { u0v| v V(G), u0v E(G) }

7 ntruct graful G este conex, u0 are cel puin un nod adiacent cu el n mulimea V-{u 0}. Deci A0 este mulime nevid (are cel puin o muchie) i vectorul caracteristic asociat xA0 este diferit de vectorul nul 0m. Aadar 0 xA0 = 0m , 0 {0,1} 0 = 0. Deci mulime de tieturi {A0} este liniar independent. Pasul inductiv: Presupunem c toate tieturile pn la Ak inclusiv, cu k<n-1 sunt liniar independente. Vom alege nodul uk+1 din V Sk. Sk+1 = Sk { uk+1}. Tietura Ak+1 va cuprinde toate muchiile din Ak, mai puin eventualele muchii cu o extremitate n uk+1, la care se adaug eventualele muchii cu o extremitate n uk+1 i cealalt n V(G)Sk+1. Deci Ak+1 = Ak { uk+1v| v Sk, uk+1v E(G) } { uk+1v| v V(G)-Sk+1, uk+1v E(G) }. Noua tietur este diferit de toate cele de nainte prin cel puin una din urmtoarele dou situaii (sau chiar amndou): dac uk+1 are vecini n mulimea V(G)-Sk+1 atunci se formeaz muchii care nu au existat pn acum n nici o alt tietur, deoarece pn la acest pas uk+1 i aceti vecini ai si s-au aflat n aceeai mulime: V(G)-Si, cu i ntre 0 i k. dac uk+1 are vecini n mulimea Sk atunci Ak+1 difer de toate celelalte tieturi de nainte deoarece aceast tietur nu mai conine muchiile dintre uk+1 i aceti vecini. Demonstraie: Deoarece graful este conex, exist drum ntre oricare dou noduri. Demonstrm c mulimea de tieturi {A0, A1, ... Ak, Ak+1} rmne liniar independent. Avem
k

i =0

xAi =

k+1

xAk+1,

i {0,1}.

Cazul 1

A i=0,, k conform ipotezei inductive c k+1 = 0 i x i = 0m i = 0, i =0

tieturile pn la pasul k inclusiv sunt liniar independente. Cazul 2

k+1

=1

i =0

xAi + xAk+1 = 0m.

De la punctul a) tim c suma a dou tieturi reprezentate prin vectori caracteristici este de fapt diferena simetric a celor dou tieturi. Acest rezultat se pstreaz i pentru suma dintre mai multe tieturi. ntruct diferena simetric este asociativ, putem scrie c:

i =0

xAi + xAk+1

i = 1

Si , cu i de la 0 la k+1

Si este nevid ntruct conine nodul uk+1 (acest nod nu apare dect n mulimea S k+1 Dar 1 i=
i deci rmne n diferena simetric. Deci i

i =0

xAi + xAk+1 este diferit de vectorul nul.

Deci, n ambele cazuri, vectorii caracteristici asociai tieturilor pn la pasul k+1 inclusiv sunt liniar independeni. Aadar aceste tieturi sunt liniar independente i deci aparin bazei spaiului vectorial X. ntruct se pot face n-1 adugri de noduri, pn cnd n mulimea V(G)-S rmne un singur nod, putem spune c avem n-1 astfel de tieturi liniar independente care aparin bazei lui X i deci dim(X) n-1.

8 d) Considerm un arbore parial al grafului G. tim c un astfel de arbore are exact n-1 muchii, este conex i deci ntre oricare dou noduri exist un unic drum. Dac adugm cte o muchie la acest arbore, din cele care nu sunt incluse deja, obinem la fiecare pas cel puin un nou ciclu . Presupunem c adugm muchia uv, care nu fusese deja adugat. tim c ntre u i v exist un drum n arbore format numai din muchiile iniiale ale acestuia; prin adugarea acestei muchii, se nchide respectivul drum i se formeaz un ciclu care conine numai muchii iniiale, mai puin muchia uv. Se pot aduga m-n+1 astfel de muchii. Toate circuitele de aceast form (cu o singur muchie n afar de cele iniiale) sunt liniar independente, adic nu se pot obine prin combinaii liniare ale altor circuite, ntruct fiecare circuit are o muchie care nu poate fi obinut din celelalte circuite (muchia adugat care nu aparinea iniial arborelui). Deci aceste circuite aparin bazei spaiului vectorial U i obinem c dim(U) m-n+1. e) ntruct X i U sunt ortogonale (deci nu au elemente n comun) i sunt subspaii ale spaiului vectorial GFm, putem spune c dim(GFm) dim(U) + dim(X). Dimensiunea lui GFm este m ntruct baza acestui spaiu vectorial este format numai din acei vectori caracteristici care au 1 pe o singur poziie (toi ceilali vectori pot fi obinui din acetia). Deci m dim(U) + dim(X) (1). Dar am demonstrat mai sus c: dim(U) m-n+1 dim(X) n-1 Aadar dim(U) + dim(X) m (2). Din (1) i (2) obinem c dim(U) + dim(X) = m. i cum dim(U) m-n+1 i dim(X) n-1 obinem dim(X) = n-1 i dim(U) = m-n+1.

3.

Artai c orice arbore cu gradul maxim t > 0 are cel puin t vrfuri pendante.

Soluie: Fie T un arbore cu n = |T| i (T) = t. Atunci exist un nod v V(T) astfel nct d(v) = (T) = t. Fie u1, u2, ... , ut vecinii lui v. Printr-o parcurgere BFS a arborelui T pornind din nodul v se obine un arbore de lime, notat T, care este, de fapt, arborele T n care considerm nodul v ca fiind rdcin. T i T au, evident, acelai numr de noduri, aceleai muchii, deci, implicit, acelai numr de noduri pendante (mai mult, nodul u este pendant n T dac i numai dac este pendant n T). Este suficient deci s studiem numrul de noduri pendante din T. n fiecare din subarborii din T cu rdcinile u1, u2, ... , ut exist cel puin un nod de grad 1. (Demonstraie: Reducere la absurd: Presupunem c u Tuk, d(u) 2, unde Tuk este subarborele din T cu rdcina uk. Deoarece numrul de muchii din orice graf este jumtate din suma gradelor nodurilor, se obine: 1 d (u ) 1 ( 2 V (Tuk ) ) |V(Tuk)| |E(Tuk)|= 2 2 u V (T ) Dar Tuk este arbore, i n orice arbore T = (V, E) avem |E| = |V| - 1, deci
uk

9 |V(Tuk)| - 1 |V(Tuk)| contradicie). Aadar, fiecare din cei t subarbori are cel puin un nod pendant. Acestea sunt distincte, deoarece subarborii sunt disjuni. n cosdsecin, T are cel puin t noduri pendante T are cel puin t noduri pendante.

4.

Fie T = (V, E) un arbore cu rdcina r (un vrf oarecare) i cu parent(v) printele nodului v V, v r. Un cuplaj M al lui T se numete propriu dac orice vrf expus v (relativ la M) n T are un frate w astfel nct w parent(v) M. a) Demonstrai c orice cuplaj propriu este de cardinal maxim. b) Artai c pentru orice arbore cu n vrfuri, dat prin listele de adiacen, se poate construi n timpul O(n) un cuplaj propriu.

Soluie: a) Fie M un cuplaj propriu al lui T. Conform Teoremei lui Berge, M este cuplaj de cardinal maxim M nu admite drumuri de cretere. Este suficient deci s artm c M nu admite drumuri de cretere. Reducere la absurd: Presupunem c exist n T un drum de cretere P relativ la M.

Conform definiiei drumului de cretere, v 0 i vk sunt vrfuri expuse. Din definiia cuplajelor proprii, orice vrf expus u are un frate w astfel nct w parent(v) M. n consecin, v0 are un frate w0 a.. w0 parent(v0) M, respectiv vk are un frate wk a.. wk parent(vk) M. T este arbore T este conex exist drum ntre oricare dou noduri. n plus, ntr-un arbore aceste drumuri sunt unice. Fie vi acel nod de pe drumul de cretere P considerat mai sus, cu proprietatea c drumul D i de la r (rdcina arborelui T) la vi are lungime(Di) = min{lungime(D)| D drum de la r la un nod vj de pe P}.

vi este unic cu aceast proprietate. (Demonstraie: Presupunem c vj vp V(P) a.. lungime(Dj) = lungime(Dp) = min{lungime(D)| D drum de la r la un nod vj de pe P}. Exist drum de la r la vj care trece prin vp. Acesta se obine prin concatenarea drumului Dp cu drumul Pjp, unde Pjp este acea poriune din P aflat ntre nodurile vj i vp. vj vp lungime(Pjp) > 0. Deci lungimea drumului de la r la vj prin vp este strict mai mare dect lungime(Dp), deci i dect lungime(Dj). n consecin, drumul de la r la v j prin vp este diferit de Dj, adic exist dou noduri n arborele T ntre care sunt mai multe drumuri (mai mult de un drum) contradicie).

10

ntr-un arbore, numrul nivelului pe care se gsete un nod u este dat de distana dintre acest nod u i rdcina arborelui. Distana de la r la vj este mai mare dect distana de la r la vi, vj vi V(P) nodurile vj se gsesc pe nivelurie inferioare nivelului lui vi n T. De asemenea, n orice arbore, oricare dou noduri adiacente sunt n relaia printe - fiu. n plus, ntotdeauna printele este unic i se gsete pe nivelul imediat superior nuvelului fiului.
Presupunem c vi se afl n T pe nivelul h. Vom demonstra prin inducie c: i ); - vi+j se gsete pe nivelul h+j, avndu-l pe vi+(j-1) ca printe (j = 1, k - vi-j se gsete pe nivelul h+j, avndu-l pe vi-(j-1) ca printe (j = 1, i ). Pasul I: - dac i > 0, vi-1 este adiacent cu vi; distana(r, vi-1) > distana(r, vi) (din modul de alegere a lui vi) vi-1 este fiu al lui vi (nu poate fi printe, deoarece se gsete pe un nivel inferior) i se afl n arbore pe nivelul h+1 (distana(r, v i-1) = distana(r, vi) + distana(vi, vi-1)); - dac i < k, vi+1 este adiacent cu vi; distana(r, vi+1) > distana(r, vi) (din modul de alegere a lui vi) vi+1 este fiu al lui vi (nu poate fi printe) i se afl n arbore pe nivelul h+1. Pasul II: Presupunem afirmaiile adevrate pentru j1 m1, respectiv j2 m2 (1 j1 m1< k i, 1 j2 m2< i). Demonstrm pentru j1 = m1 + 1: Din ipoteza inductiv o vi+m1 se afl pe nivelul h + m1; o parent(vi+m1) = vi+m1-1 . vi+m1+1 este adiacent cu vi+m1 (deci sunt n relaia printe fiu) i v i+m1 are un unic printe (pe vi+m1-1) vi+m1 = parent(vi+m1+1) vi+m1+1 se afl pe nivelul imediat inferior nivelului lui vm1, i anume pe (h + m1) + 1 = h + (m1 + 1). Demonstrm pentru j2 = m2 + 1: Din ipoteza inductiv o vi-m2 se afl pe nivelul h + m2; o parent(vi-m2) = vi-m2-1 . vi-(m2+1) este adiacent cu vi-m2 (deci sunt n relaia printe fiu) i v i-m2 are un unic printe (pe vi-(m2-1)) vi-m2 = parent(vi-(m2-1)) vi-(m2+1) se afl pe nivelul imediat inferior nivelului lui vi-m2, i anume pe (h + m2) + 1 = h + (m2 + 1).

Aadar, schematic, poziia nodurilor i a muchiilor de pe drumul P n arborele T este:

11

Evident, dac vi = v0 sau vi = vk, una dintre cele dou ramuri care pornesc de la vi lipsete. Vom presupune c vi vk. Aceasta corespunde cazurilor: - vi v0 i vi vk; - vi = v0 (n acest caz, evident, v i vk, deoarece orice drum de cretere are lungimea nenul, deci v0 vk). Cazul cnd vi = vk se trateaz similar cu cel tratat mai jos, nlocuind peste tot orice indice j ( j = 0, k ) cu k j. vk-1 = parent (vk) i vk este nod expus are un frate wk a.. wk parent(vk) M. parent(wk) = vk-1 wk vk-1 M. Dar vk-2 vk-1 M i wk vk-2 , (deoarece vk-2 = parent(vk-1), deci nu poate fi i fiu al acestuia)

dM(vk-1) 2 contradicie cu definiia cumplajului, conform creia, dac M este cuplaj n G, atunci, u V(G), dM(v) 1.
n consecin, presupunerea fcut este fals M nu admite drumuri de cretere M este cuplaj de cardinal maxim, conform teoremei lui Berge. b) Artm c, pentru orice arbore cu n vrfuri, dat prin listele de adiacen, se poate construi n timpul O(n) un cuplaj propriu. Pentru a arta aceasta este suficient s artm c exist un algoritm care construiete, pentru orice arbore cu n vrfuri, dat prin listele de adiacen, un cuplaj propriu n timpul O(n).

12 Observaie: Aa cum se vede n cele dou exemple de mai sus, pentru un arbore T, un cuplaj M este sau nu propriu n funcie de nodul considerat rdcin. n exemplul I, dac rdcina este 4, atunci exist un nod expus (acest nod este 1) care nu are nici un frate, deci pentru care nu exist w fiu al lui 2 astfel nct 2w M (M = {32, 45, 67}). Aceast problem dispare dac vom considera nodul 2 ca rdcin a arborelui. De asemenea, dac studiem arborele din exemplul II, vom constata c, indiferent de cuplajul maxim considerat, dac rdcina arborelui este 10, respectivul cuplaj nu este propriu, ntruct fie rdcina, fie o parte din nodurile frunze sunt noduri expuse fr a avea un frate care mpreun cu printele lor comun s formeze o muchie din cuplaj.

O condiie necesar i suficient ca un cuplaj M s fie prorpiu pentru un arbore este ca orice nod expus s aib un frate care, mpreun cu printele lor comun, s formeze o muchie din cuplajul M. O alt condiie necesar pentru ca un cuplaj M s fie propriu este aceea ca rdcina s nu fie nod expus. Rdcina nu are frai, deci, dac ar fi nod expus ntr-un cuplaj M, atunci respectivul cuplaj nu ar putea fi propriu pentru arborele respectiv cu rdcina considerat. n plus, se precizeaz c rdcina arborelui pentru care se construiete cuplajul propriu este un nod oarecare v, aadar nodul rdcin nu prezint importan. n plus, cuplajele proprii sunt ntotdeauna cuplaje de cardinal maxim, deci se folosesc pentru a putea construi pentru arbori cuplaje de cardinal maxim n timp liniar (n condiiile n care, pentru grafuri oarecare, un cuplaj maximal se construiete n O(n 3)). Un cuplaj de cardinal maxim i pstreaz proprietatea indiferent de nodul rdcin a arborelui, aadar nodul pe care l cosiderm rdcin n momentul construciei cuplajului propriu nu afecteaz rezultatul final. O posibilitate de construcie a unui astfel de cuplaj este parcurgerea DFS a arborelui T i selectarea acelor unui numr de muchii care s ndeplineasc condiia de mai sus. Trebuie evitat acea situaie cnd pentru un nod frunz u expus nu se gsete nici un alt nod frate care mpreun cu printele s formeze o muchie din cuplaj. Aceast situaie poate aprea atunci cnd, n urma parcurgerii, a fost selectat muchia parent(u) parent(parent(u)), iar toi fiii lui parent(u) sunt frunze. De aceea, selectarea muchiilor pentru cuplaj nu se va face la prima parcurgere a fiecrei muchii, ci la ntoarcerea n fiecare nod, dup ce muchiile dintre nivelele inferioare au fost deja parcurse i s-a stabilit dac sunt sau nu selectate. Cu alte cuvinte, aceast selecie se face de jos n sus, tocmai pentru a se evita situaia menionat mai sus. Algoritmul care construiete un cuplaj propriu este: function ConstruieteCuplajPropriuDFS(T) begin /*iniial: - mulimea de muchii M (care va memora n final cuplajul propriu) este vid; - toate nodurile sunt nevizitate; - nici un nod nu este extremitate a unei muchii din cuplaj, deoarece M deci nu este nod saturat.

13 */ M for all u in V(T) do vizitat (v) false saturat (v) false /*se selecteaz un nod oarecare din arbore, din care se pornete parcurgerea */ v AlegeNodDinArbore(T) rdvin v vizitat (v) true for all u in listaDeAdiacen(rdcin) do /*se efectueaz parcurgerea DFS i selectarea muchiilor pentru fiecare subarbore care are ca rdcin un nod de pe nivelul 2 (adic un fiu al rdcinii lui T)*/ ConstruieteRecursiv(u) if (not saturat (u) and not saturat(rdcin)) then /*dac este posibil, se adaug muchia dintre rdcin i un fiu al su n cuplaj*/ M M {u rdcin} saturat(rdcin) true saturat(u) true if ( saturat(rdcin) = false ) then /*este posibil ca, n urma selectrii tuturor muchiilor, rdcina s rmn nod nesaturat; aceasta se ntmpl atunci cnd nu se poate niciodat aduga o muchie dintre primele 2 nivele n cuplaj, adic atunci cnd toate nodurile de pe al doilea nivel sunt saturate*/ /*aa cum am artat mai sus, un cuplaj este sau nu propriu pentru un arbore n funcie de nodul ales rdcin*/ /*dac, pentru cuplajul construit, vom alege ca rdcin un fiu al actualei rdcini, vechea rdcin ca avea un frate care mpreun cu printele s formeze o muchie din cuplaj, deoarece nodul acela era saturat, iar toate celelalte noduri i pstreaz proprietile*/ /*n consecin, M devine cuplaj propriu pentru arborele cu noua rdcin*/ v un fiu oarecare al rdcinii rdcin v return M end function ConstruieteRecursiv(u) begin vizitat(u) true for all w in listaDeAdiacen(u) do /*dac se ntlnete un nod deja vizitat, acela nu poate fi dect printele, ntruct T este arbore*/ if (vizitat(w) = true) then printe w else ConstruieteRecursiv(w) if (not saturat(printe) and not saturat(u)) then

14 /*dac este posibil, se adaug muchia dintre u i printele su n cuplaj*/ M M { u printe} saturat(printe) true saturat(u) true end Corectitudinea algoritmului: Vom arta c, ntr-adevr, M construit de algoritm este cuplaj propriu, orice nod expus s aib un frate care, mpreun cu printele lor comun, s formeze o muchie din cuplajul M. Fie u un nod expus (nici o muchie din cuplaj nu este incident cu el). Caz 1: u nu este rdcina (adic nodul din care s-a pornit parcurgerea DFS). Atunci exist parent(u) i, cu siguran, muchia u parent(u) nu este din cuplaj. Aceasta nseamn c, n funcia ConstruieteRecursiv(u), condiia din ultimul if era fals, adic (not saturat(printe) and not saturat(u)) = false. tim deja c (not saturat(u)) = true not saturat(printe) = false saturat(printe) = true printe este deja extremitatea unei muchii din cuplaj. Deoarece selecia muchiilor se face de jos n sus, la acest pas nu ar fi putut fi selectat nc o muchie dintre parent(u) i parent(parent(u)). Aadar, ntruct parent(u) este deja extremitatea unei muchii din cuplaj, aceast muchie poate fi doar ntre parent(u) i un alt fiu al su w u. Am artat deci c u are un frate w a.. w parent(u) M. Caz 2: u = rdcin (adic este nodul din care s-a pornit parcurgerea DFS). Dac nu s-a putut introduce n cuplaj nici una din muchiile dintre acest u i un fiu v al su, atunci, n funcia ConstruieteCuplajPropriuDFS(T), codiia de la prima instruciune if (cea din interiorul buclei for) este ntotdeauna fals, adic not saturat (fiu) and not saturat(rdcin) = false. tim deja c (not saturat(rdcin)) = true not saturat(fiu) = false saturat(fiu) = true toi fii rdcinii sunt extremiti ale unor muchii din cuplaj. Aceste muchii pot fi doar ntre respectivii fii i nodurile de pe nivelul imediat inferior. Prin urmare, trecnd un astfel de fiu a al rdcinii pe primul nivel, i considernd rdcina ca fiu al acestuia, avem: - saturat(a) = true, aa cum am artat mai sus b fiu al lui a a.. ab M n aceast configuraie (acum parent(rdcin) = a) vechea rdcin, care este n continuare nod expus, are un frate, pe b, a.. b parent(rdcin) M. - nici un alt nod din arbore nu i schimb starea (ceilali fii ai rdcinii, dac existau, erau deja noduri saturate); aadar, oricare alt nod expus din arbore are n continuare proprietatea cerut, conform celor artate la cazul 1. Aadar, cuplajul construit de algoritm este cuplaj propriu penrtu arborele T. Complexitatea algoritmului: Deoarece algoritmul se bazeaz pe o parcurgere DFS (celelalte operaii efectuate la fiecare pas se execut n O(1)) a unui arbore dat prin liste de adiacen, complexitatea algoritmului este O(m+n). n plus, pentru orice arbore, m = n - 1, deci m = O(n). n consecin, complexitatea timp a algoritmului prezentat mai sus este O(n).

Vous aimerez peut-être aussi