Vous êtes sur la page 1sur 14

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

TEMA NR. 10 13 mai 2003 1.


Fie G un graf conex cu n vrfuri i TG familia arborilor si pariali. Se consider graful H = (TG, E(H)) unde T1T2 E(H) |E(T1) E(T2)| = 2. a) Demonstrai c H este conex i are diametrul cel mult n-1. b) Demonstrai c pentru orice funcie de cost c pe mulimea muchiilor grafului G, mulimea arborilor pariali de cost c minim induce un subgraf conex n H.

Soluie: a) Iniial vom demonstra c graful H obinut este conex, i anume c exist drum ntre oricare 2 noduri ale sale. Se observ c n cazul mulimilor de muchii ale arborilor pariali, cardinalul diferenei lor simetrice este numr par . Aceasta are loc ntruct mulimile de muchii ale celor 2 arbori pentru care calculm diferena simetric au acelai cardinal (arborii pariali ai unui graf au exact n-1 muchii). Deci dac un arbore difer de un al doilea printr-o muchie este evident c i cel de-al doilea are o muchie diferit de cele ale primului. Acest lucru se poate demonstra prin reducere la absurd. Presupunem prin reducere la absurd c exist T1 i T2, 2 arbori pariali pentru un graf G, astfel nct |E(T1) E(T2)| = 2k + 1, k 0. Aceasta nseamn c un arbore difer de cellalt printr-un numr par de muchii (s zicem prin 2s muchii), iar cellalt arbore difer de primul printr-un numr impar de muchii (2t+1 muchii), astfel nct 2s+2t+1 = 2k+1. Putem face presupunerea c T1 difer de T2 prin 2s muchii. Deci restul muchiilor din T1, i anume n-1-2s, apar i n T 2. Dar mai sus am obinut c T 2 are 2t+1= 2k+1-2s muchii diferite de cele din T1. Deci T2 are 2k+1-2s+n-1-2s = n+2k-4s muchii. tiam c T2 are, asemenea tuturor arborilor pariali, n-1 muchii. Obinem c 4s-2k = 1, ceea ce este absurd, ntruct 4s-2k este numr par. Aadar presupunerea iniial este fals i deci putem spune c |E(T1) E(T2)| = 2k, k>0 pentru oricare 2 arbori pariali T1 i T2. Vom demonstra c graful H este conex i are diametrul cel mult n 1 prin inducie dup cardinalul K = 2k al diferenei simetrice a mulimilor de muchii. Pasul de baz: La acest pas vom verifica dac pentru oricare 2 arbori, pentru care diferena simetric dintre mulimile lor de muchii are cardinalul 2, exist drum ntre ei. Din ipotez tim c ntre doi arbori pariali care difer printr-o singur muchie exist muchie n graful H. Aadar exist drum ntre oricare doi arbori pariali cu aceast proprietate.

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

Pasul inductiv: Presupunem c exist drum ntre oricare doi arbori care difer prin k-1 muchii (adic au cardinalul diferenei simetrice egal cu 2(k-1)). Vom demonstra c i ntre oricare doi arbori care difer prin k muchii (adic au cardinalul diferenei simetrice egal cu 2k) exist drum n graful H. Pentru aceasta vom gsi un arbore parial T3 care difer prin k-1 muchii de T1 i printr-o muchie de T2. Dac reuim acest lucru, obinem un drum de la T 1 la T2 care trece prin T3 (tim, conform ipotezei inductive, c exist drum de la T 1 la T3, ntruct acetia difer prin k-1 muchii; ntre T3 i T2 avem muchie n H, ntruct cei 2 arbori difer printr-o singur muchie). Alegem o muchie dintre muchiile care aparin diferenei simetrice, i anume una dintre muchiile lui T1 care nu se gsesc i n T2, pe care o notm cu e1. Adugnd aceast muchie la arborele T2 obinem exact un circuit (dup cum am explicat i la problema 2 de la tema 8). Alegem o muchie e2, dintre muchiile circuitului obinut, care nu aparine i lui T1. Va exista ntotdeauna o astfel de muchie ntruct, altfel, ar nsemna c toate muchiile circuitului aparin lui T 1 i deci arborele parial T1 admite un circuit, ceea ce este absurd. Considerm arborele T3 determinat de muchiile lui T2, mai puin e2, la care adugm muchia e1 din T1. Acesta este tot un arbore parial ntruct are tot n-1 muchii i este conex (am eliminat o muchie din circuit dar toate celelalte noduri care formeaz circuitul rmn legate). Arborele T3 difer de T2 prin muchia e1 i de arborele T1 prin k-1 muchii (cele k muchii prin care difer T2 de T1, mai puin muchia e2). Deci ntre T2 i T3 avem muchie n graful H, ntruct difer printr-o muchie, iar de la T1 la T3 avem drum conform ipotezei inductive, ntruct difer prin k-1 muchii. Aadar avem drum i de la T1 la T2, prin T3. Deci ntre oricare 2 arbori pariali care difer prin k muchii putem construi un drum n graful H i conform metodei induciei putem spune c ntre oricare 2 arbori care difer printr-un numr de k muchii (cu k ntre 1 i n-1) exist drum n graful H. Aadar graful H este conex. tiind c numrul de muchii dintr-un arbore parial este n-1, diferena simetric dintre doi arbori pariali are cel mult 2n-2 muchii. Putem ajunge dintr-un arbore parial n altul reducnd la fiecare pas cu 2 numrul de muchii din diferena simetric dintre cei doi arbori (fiecare pas reprezint o muchie n H din drumul dintre cei doi arbori). Demonstraie: Pas de baz: Dac doi arbori pariali difer printr-o muchie (|T1T2| = 2), atunci n H exist o muchie ntre cei doi arbori pariali, deci se poate ajunge de la T1 la T2 printr-o muchie, deci exist un drum de lungime 1 ntre cei doi arbori. Pas inductiv: Fie T1 i T2 doi arbori pariali. Dup cum am artat mai sus, putem alege orice muchie din T1 T2 i o muchie (aleas din ciclul format prin adugarea muchiei alese

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

din T1 la T2) din T2 T1, astfel nct s obinem un nou arbore parial T 0, astfel nct diferena simetric dintre T0 i T2 are cardinalul mai mic cu 2. Procednd inductiv, n |T1T2|/2 pai (muchii din drumul de la T1 la T2) putem ajunge de la T1 la T2, i cum max(|T1T2|) = 2(n-1) ntre orice doi arbori exist un drum de lungime mai mic sau egal cu n-1 diametrul(H) n-1 b) Vom demonstra c subgraful C determinat de arborii pariali de cost minim este conex, indiferent de funcia de cost c, prin inducie dup cardinalul diferenei simetrice a mulimilor de muchii ca la punctul a). Alegem o funcie de cost c. Pasul de baz: La acest pas vom verifica dac ntre oricare 2 arbori pariali de cost minim, pentru care diferena simetric dintre mulimile lor de muchii are cardinalul 2, exist drum. Din ipotez tim c ntre doi arbori pariali care difer printr-o singur muchie exist muchie n graful H. Aadar exist drum i n C ntre oricare doi arbori pariali cu aceast proprietate. Pasul inductiv: Presupunem c exist drum, n C, ntre oricare doi arbori pariali de cost minim care difer prin k-1 muchii (adic au cardinalul diferenei simetrice egal cu 2(k1)). Vom demonstra c i ntre oricare doi arbori care difer prin k muchii (adic au cardinalul diferenei simetrice egal cu 2k) exist drum n subgraful C. Pentru aceasta vom gsi un arbore parial de cost minim (n cazul funciei c alese) T3 care difer prin k-1 muchii de T1 i printr-o muchie de T2. Dac reuim acest lucru, obinem un drum de la T1 la T2 care trece prin T3 (tim, conform ipotezei inductive, c exist drum de la T1 la T3, ntruct acetia difer prin k-1 muchii; ntre T3 i T2 avem muchie n H, ntruct cei 2 arbori difer printr-o singur muchie). Alegem muchia de cost minim dintre muchiile care aparin diferenei simetrice (pe care o notm cu e1) i presupunem c e din T1. Dac ar fi fost din T2 ar fi fost o situaie analog doar c am fi creat un arbore parial de cost minim care ar fi diferit printr-o muchie de T1 i prin k-1 de T2. Adugnd aceast muchie la arborele T2 obinem exact un circuit (analog punctului a) ). Alegem o muchie e2, dintre muchiile circuitului obinut, care nu aparine i lui T1. Va exista ntotdeauna o astfel de muchie ntruct, altfel, ar nsemna c toate muchiile circuitului aparin lui T1 i deci arborele parial T1 admite un circuit, ceea ce este absurd. Considerm arborele T3 determinat de muchiile lui T2, mai puin e2, la care adugm muchia e1 din T1. Acesta este tot un arbore parial ntruct are tot n-1 muchii i este conex (am eliminat o muchie din circuit dar toate celelalte noduri care formeaz circuitul rmn legate). Costul lui T3 este c(T2)-c(e2)+c(e1), care evident este cel mult 3

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

c(T2) ntruct alesesem e1 ca fiind muchia de cost minim din diferena simetric. Aadar i arborele T3 este de cost minim deoarece c(T2) este minim i deci c(T3) este minim. Arborele T3 difer de T2 prin muchia e1 i de arborele T1 prin k-1 muchii (cele k muchii prin care difer T2 de T1, mai puin muchia e2). Deci ntre T2 i T3 avem muchie n graful H i deci i n subgraful C, ntruct difer printr-o muchie, iar de la T1 la T3 avem drum n C conform ipotezei inductive, ntruct difer prin k-1 muchii. Aadar avem drum i de la T 1 la T2, prin T3, drum care se pstreaz n C. Deci ntre oricare 2 arbori pariali de cost minim care difer prin k muchii putem construi un drum n subgraful C i conform metodei induciei putem spune c ntre oricare 2 arbori pariali de cost minim, pentru o funcie c, care difer printr-un numr de k muchii (cu k ntre 1 i n-1) exist drum n subgraful C. Aadar subgraful C este conex, indiferent de funcia c.

2.

Fie H = (V,E) un digraf i ts E un arc fixat al su. Se coloreaz toate arcele lui H cu galben, rou i verde arbitrar, cu singura condiie ca arcul ts s fie galben (se poate ntmpla ca s nu avem arce roii sau verzi) Demonstrai algoritmic c are loc exact una din urmtoarele situaii: i) exist un circuit n graful G(H) (nu se ine seama de orientare) cu arce galbene sau verzi care conine arcul ts i toate arcele galbene ale sale au aceeai orientare) ii) exist o partiie (S,T) a lui V astfel nct s S, t T, toate arcele de la S la T sunt roii i toate arcele de la T la S sunt roii sau galbene. Soluie:

Iniial, vom explica intuitiv de ce nu pot avea loc simultan cele dou situaii. S presupunem c am avea ndeplinit prima situaie, i anume, c am avea un circuit cu respectivele proprieti. Dac am ncerca s construim o partiie de forma exprimat la punctul ii) ar trebui ca nodurile din circuit ntre care sunt arce verzi s se afle n aceeai mulime (n S sau n T) iar cele ntre care se afl arce galbene s aib originea n T i destinaia n S sau s se afle n aceeai mulime. Dar oricum am aranja vrfurile n cele 2 mulimi am obine mcar dou vrfuri n mulimi diferite i ntre care este fie arc verde, fie arc galben dar nu n direcia dorit (de la T la S). Presupunem prin reducere la absurd c este posibil o asemenea situaie, i deci c exist o asemenea partiie. Aadar toate nodurile ntre care exist arce verzi, se afl dou cte dou n aceeai mulime iar arcele galbene din circuit sunt fie cu sursa n T i destinaia n S (dac au orientarea corect), fie au ambele extremiti ntr-o mulime. Dac avem mcar un arc galben uv din circuit n cadrul partiiei i anume cu u T i v S am avea toate arcele verzi care intr sau ies din u n T, iar cele care intr sau ies din v n S. ns aceste noduri fac parte dintr-un circuit i deci mai exist un arc care ar trebui s fac legtura ntre nodurile (circuitului) din cele dou mulimi, altfel ar

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

rmne un nod cu gradul 1; obinem un arc verde sau un arc galben de la S la T, ceea ce contrazice presupunerea fcut c exist o astfel de partiie (S,T) a lui V. Dac nu avem nici un arc galben din circuit n cadrul partiiei, nseamn c toate nodurile din circuit ntre care exist arc sunt puse dou cte dou n aceeai mulime. Dar atunci ar nsemna c unul dintre noduri nu are dect un vecin, pentru c altfel ar trebui ca toate nodurile s fie n aceeai mulime pentru c altfel ar trebui ca toate nodurile s fie n aceeai mulime (dar s i t sunt cu certitudine n muimi diferite). Dar acest lucru este imposibil ntruct ntr-un circuit toate nodurile au gradul 2. i din nou se contrazice presupunerea fcut i deci nu exist o astfel de partiie. Dac am avea ndeplinit a doua situaie, adic am avea o asemenea partiie, am obine aceeai contradicie dup cum am explicat i anterior. Vom ncerca s construim o astfel de partiie i vom arta c n cazul n care nu putem construi o asemenea partiie, obinem un circuit cu proprietile de la punctul i). Iniial, introducem n mulimea T nodul t iar n mulimea S toate celelalte noduri, inclusiv nodul s. Algoritmul gestioneaz o coad n care reine nodurile din T i pe msur ce termin de lucrat cu un nod l extrage din coad. Se preia fiecare nod v din coad (primul introdus dintre nodurile rmase n coad) i se verific dac mai are vreun nod adiacent cu el n mulimea S. Cnd se gsete un nod w n S astfel nct vw E( G(H) ), unde vw are culoarea verde sau wv, arc de culoare galben, se introduce nodul w n mulimea T i n coad. Coninum pn cnd se golete coada sau pn cnd introducem nodul s n T. Dac suntem n situaia de a introduce s n T ne putem opri i spune c nu se poate construi o astfel de partiie dar exist un circuit ca la punctul i). procedure Construiete_i_sau_ii(H) begin /* iniializm mulimile S i T, precum i coada C*/ T {t} S V-{t} C {t} do v C.first /* lum primul nod din coad i verificm vecinii adiaceni cu el din S, care respect condiiile pe care le-am explicat mai sus*/ for every w in S do if ( (vw E(H) and vw-verde) or (wv E(H) and (wv-verde or wvgalben) ) ) then if ( w s ) then T T {w} S S \ {w}

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

C.adaug(w) C.extrage(v) /* ne oprim cnd coada este vid i deci am terminat de examinat toate nodurile din T i nu am mai gsit nepotriviri sau cnd am ajuns s-l punem pe s*/ while ( (C nu e vid) and (w s) ) if ( w s) then am obinut o partiie (S,T) else nu putem obine o astfel de partiie, ns exist un circuit care corespunde punctului i) end; Algoritmul se termin ntotdeauna, deoarece se face cel mult o verificare a adiacenei a oricare dou noduri, iar numrul de noduri este finit. n continuare vom explica de ce n cazul n care nu reuim s construim o astfel de partiie i se iese din bucla do while prin nesatisfacerea condiiei w s, exist un circuit cu proprietile de la i). Nodul s a fost descoperit de un nod cu care forma un arc care respecta cerinele circuitului. Dac se ncearc aducerea acestui nod n T, atunci exist un arc verde de la un nod v din T la s sau un arc verde sau galben se la s la un nod v din T. Pornindu-se din t, s-a ajuns la s prin astfel de arce. Dar exist arc galben de la t la s, acest arc nchiznd un circuit care respect proprietatea i). Dac s-a ieit din bucla do while prin neatisfacerea condiiei C nu este vid, atunci s-a reuit construirea unei partiii (S, T) ce respect condiiile din enun, adic ntre S i T nu exist dect arce roii n orice sens, i arce galbene orientate de la T la S, iar nodul s nu aparine lui T, deci s S. Toate arcele galbene fiind orientate de la T la S, nu exist un arc care s nchid un eventual circuit cu proprietatea i). Evident, doar una dintre cele dou condiii poate fi fals la un moment dat, deci nu se pot construi att un circuit ct i o partiie.

3.

Fie G = (V, E) un graf. O mulime de vrfuri A V se numete m independent dac exist un cuplaj M al lui G astfel nct A S(M). Demonstrai c, dac A i B sunt m independente i |A| < |B|, atunci exist b B A a.. A {b} este m independent.

Soluie: Fie A i B dou mulimi m independente cu |A| < |B|. n aceste condiii, B A , adic b B A. n plus, se tie c toate mulimile m independente maximale au acelai cardinal. ntruct exist cel puin o mulime m independent (de exemplu B) de cardinal mai mare dect A, A nu este maximal, deci v V A a.. A {v} este m independent. n aceste condiii, cutarea unui b n B A a.. A {b} s fie m independent are sens.

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

Observaia 1: O mulime X V este m independent dac exist un cuplaj M 0 al lui G astfel nct X S(M0). Dar, dac un cuplaj M0 satureaz toate nodurile din mulimea X, atunci M0 satureaz toate nodurile din orice submulime a lui X. n consecin, orice submulime a unei mulimi m independente este m independent. Aadar, dac A i B sunt dou mulimi m independente cu proprietile de mai sus, i, n plus, A B, atunci, b B A, A {b} B, deci A {b} este m independent. Notaii: - MA = {M| A S(M)}; - MB = {M| B S(M)}. Fie MA MA un cuplaj care satureaz A, cu proprietatea c |MA| = max(|M|, M MA} respectiv MB MB un cuplaj care satureaz B, cu proprietatea c |MB| = max(|M|, M MB}. Vom arta c MA i MB sunt cuplaje de cardinal maxim n G. Reducere la absurd: Presupunem c MA nu este cuplaj de cardinal maxim. Conform teoremei lui Berge, MA admite un drum de cretere P. Fie x i y cele dou noduri expuse relativ la M A (extremitile acestui drum de cretere). Construim M = (MA (P MA)) (P MA). S(MA) S(M), deci M MA. n plus, |M| = |MA| + 1, ceea ce contrazice faptul c MA este cuplaj cu cardinalul maxim ntre cuplajele care satureaz A. Analog se demonstreaz c MB este cuplaj de cardinal maxim. Se construiete subgraful H = (S(MA) S(MB), MA MB). Evident, A S(MA) S(MB) i B S(MA) S(MB). Deoarece H este obinut din reuniunea a dou cuplaje, u S(MA) S(MB) dH(u) 2. (deoarece un nod v poate fi extremitatea a cel mult 2 muchii n H). n aceste condiii, orice component conex C din H este fie drum, fie circuit (orice alt structur este imposibil din cauza faptului c gradele tuturor nodurilor sunt cel puin 1, pt c am considerat doar nodurile saturate de cuplaje, i cel mult 2). Fie C o component conex oarecare din G. 1. Fie C circuit. ntruct muchiile acestui circuit sunt muchiile a dou cuplaje de cardinal maxim din G, oricare dou muchii incidente sunt din cuplaje diferite. Acest circuit este in G (i n H) un circuit alternat relativ la oricare din cele dou cuplaje. Aadar C nu poate fi circuit impar (dac ar fi circuit alternat impar relativ la MA, atunci ar exista n circuit un nod u expus relativ la M A. Dar,

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

u fcnd parte din acest circuit, dH(u) = 2. Atunci u este incident cu dou muchii din E(H) MA, adic din MB MA. De aici reiese c exist dou muchii incidente n MB contradicie cu faptul c MB este cuplaj. Analog se arat c C nu poate fi circuit alternat impar relativ la MB). n consecin, orice circuit alternat din H este circuit alternat par, i toate nodurile acestui circuit sunt saturate de ambele cuplaje. Aadar, dac b (B A) V(C), atunci cuplajul MA satureaz b, deci satureaz A {b}, ceea ce trebuia demonstrat. Altfel, se obine c (B A) V(C) = adic b, dac b B V(C) b A V(C), adic |A V(C)| |B V(C)|. 2. Fie C drum. (Deoarece c este component conex a grafului H, evident C este drum maximal n raport cu incluziunea).

Observaie: Dac este drum de lungime 1, atunci: C = v, e, u cu e MA sau e MB. Vom arta c e MA MB. Reducere la absurd: Presupunem e MA i e MB (cellalt caz se demonstreaz analog). dH(u) = dH(v) = 1 (adic, n G, muchia e nu este incident cu nici o alt muchie din MB. n aceste condiii putem construi M = M B {e}. M este cuplaj, dup cum am artat mai sus. n plus, S(M B) S(M), deci B S(M), i |M| = |MB| + 1, ceea ce contrazice faptul c MB este cuplaj de cardinal maxim. Aadar, orice drum de lungime 1 este reprezentat de o muchie din intersecia celor 2 cuplaje i extremitile acesteia, aceste extremiti fiind deci saturate de ambele cuplaje. Prin urmare, dac b (B A) V(C), atunci cuplajul MA satureaz b, deci satureaz A {b}, ceea ce trebuia demonstrat. Altfel, se obine c (B A) V(C) = adic b, dac b B V(C) b A V(C), adic |A V(C)| | B V(C)|. Fie C un drum de lungime strict mai mare dect 1. ntruct muchiile acestui drum sunt muchiile a dou cuplaje de cardinal maxim din G, oricare dou muchii incidente sunt din cuplaje diferite. Acest drum este in G (i n H) un drum alternat relativ la oricare din cele dou cuplaje. Presupunem c C este drum alternat impar. Fie u i v extremitile acestui drum alternat. Din modul de construcie a grafului H C este drum alternat impar relativ la ambele cuplaje n G. Presupunem u i v S(MA). Evident, u i v S(MB). Atunci, n graful G, c este drum de cretere relativ la MB, deci MB admite drumuri de cretere, ceea ce

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

contrazice faptul c MB este cuplaj de cardinal maxim. Aadar presupunerea fcut este fals C nu poate fi drum alternat impar. Atunci C este drum alternat par. Fie u i v extremitile acestui drum. Presupunem c u S(MA), cellalt caz tratndu-se similar. Evident, deoarece componenta conex C a grafului H este drum alternat par, u S(MA) - S(MB) i v S(MB) - S(MA). ntruct B S(MB) i A S(MA), este evident c u B i v A. Presupunem c, studiind celelalte tipuri de componente conexe, nu am descoperit nici un nod b din mulimea B A. Atunci, toate nodurile din aceast mulime se gsesc n aceste componente conexe care sunt drumuri alternate pare. Dac exist un nod b din B A care nu este extremitate a acestui drum, atunci, gsindu-se n interiorul drumului, este extremitate a unei muchii din M A, deci este saturat de MA. Prin urmare, n acest caz, A {v} este m independent. Vom studia n continuare cazul cnd toate nodurile din B A sunt extremiti ale drumurilor alternate pare C. Dac exist o component conex de acest tip (drum alternat par cu extremitatea v din mulimea B - A) n care extremitatea u este din S(M A) A, atunci:

Putem construi un nou cuplaj M astfel: M = (MA (MA E(C))) (E(C) - MA ). Avem: S(M) = (S(MA) {u} ) {v}. Dar A S(MA) {u} i v B A, deci M satureaz A {v}, adic A {v} este m independent, ceea ce trebuia demonstrat. Vom arta acum c, dac toate componentele conexe de celelalte tipuri nu conin noduri din B A, atunci ntre drumurile alternate pare cu extremitatea v din B - A exist cel puin unul pentru care u este din S(MA) A. Reducere la absurd: Presupunem toate componentele conexe care sunt drumuri alternate pare cu o extremitate v n B A au cealalt extremitate u n A. Aa cum am artat mai sus, u B, deci u A B. Atunci, oricare ar fi o astfel de component conex C, vom avea |(A B) V(C)| |(B A) V(C)|. 9

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

ntruct am presupus c nici o alt component conex a lui H nu mai conine noduri din B A, se obine c |(A B) V(H)| |(B A) V(H)|. Dar A i B sunt incluse n V(H) (reiese din construcia lui H), deci |(A B))| |(B A) |, adic |A | |B |, ceea ce contrazice ipoteza. Prin urmare, presupunerea fcut este fals. n toate cazurile am obinut deci c exist b B A a.. A {b} este m independent.

4. Cuplaje stabile n grafuri bipartite. Fie graful complet bipartit Kn,n = (B, F; E), unde
B={b1, b2,..., bn} i F = {f1, f2,..., fn}. Dac M este un cuplaj perfect n Kn,n (fiecare b este cuplat cu exact un f), vom folosi notaia: bifj M fj = M(bi) bi = M(fj). Vom presupune c: b B are o ordonare a preferinelor sale pe F: fi1 <b fi2 <b ... <b fin i f F are o ordonare a preferinelor sale pe B: bi1 <f bi2 <f ... <f bin. Un cuplaj perfect M al lui Kn,n se numete stabil dac: b B dac f<bM(b), atunci M(f)<f b i, de asemenea, f F dac b<fM(f), atunci M(b)<b f. S se arate c pentru orice ordonri ale preferinelor exist un cuplaj stabil i s se construiasc unul n O(n3). Soluie: Un cuplaj perfect M al lui Kn,n se numete stabil dac nu exist o pereche (f, b) astfel nct fiecare s se prefere unul pe cellalt n locul partenerilor cu care au fost cuplai de algoritm. Astfel de perechi determin un blocaj i dac exist un astfel de blocaj putem spune c M, cuplajul perfect obinut, nu este stabil. Exist mai multe posibiliti de a alege tipurile de date cu care lucrm. Am avea nevoie de urmtoarele structuri: 1. o structur n care s reinem preferinele fiecrui biat i ale fiecrei fete i care poate fi de dou tipuri:

10

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

vector sau list de preferine n care, se rein, pentru fiecare biat respectiv fat, toate fetele, respectiv bieii n ordinea descresctoare a preferinelor (adic persoana aflat pe prima poziie este i cea mai preferat de posesorul listei). Cel mai bine s-ar lucra cu vectori, ntruct s-ar realiza mai uor accesul la elementele sale. Se observ c, folosind acest tip de structur, avem timpul de acces la cea mai preferat persoan n O(1) , ns dac dorim s comparm dac o persoan este preferat altei persoane accesul se face n O(n). vector sau list de grade de preferin , n care reinem pentru fiecare biat sau fat, toate fetele, respectiv bieii, n ordine, i pentru fiecare este specificat un grad de preferin. Dac o persoan este preferat altei persoane, atunci va avea gradul de preferin mai mare dect al respectivei persoane dar nu va fi neaprat naintea sa n cadrul structurii . i aceasta poate fi implementat cu vector sau list ns de aceast dat vectorul este optim n cazul n care dorim s comparm gradele de preferina ale dou persoane; accesul se va face n O(1) n cazul vectorului i n O(n) n cazul listei (n comparaie cu primul tip de structur, unde aveam O(n) n ambele cazuri). Pentru a gsi persoana cea mai preferat pentru un biat sau o fat vom avea nevoie de O(n) n cazul cel mai nefavorabil (n timp ce n prima situaie accesul se fcea n O(1)). Vom alege varianta cu vectorul de preferine, pentru fiecare biat i fat. Se rein de fapt dou matrice n*n, una pentru fete i una pentru biei : prF, prB n care avem prF[i] vectorul de preferine pentru fata i i analog pentru biei. 2. o structur n care s reinem cuplurile formate la fiecare pas i n care s obinem n final perechile stabile. De preferat este ca aceast structur s fie implementat prin 2 vectori, unul pentru fete i unul pentru biei, cF, cB. n cF(i) avem perechea fetei i (-1 n cazul n care aceasta este singur) i analog i pentru biei. Accesul la informaiile despre o anumit persoan se face n O(1). 3. un vector primaProp cu intrri pentru fiecare biat din list, i n care se reine prima fat din lista de preferine a fiecrui biat (poziia ei n vectorul de preferine a biatului respectiv) . Accesul la elemente se face tot n O(1). Iniial n acest vector se rein numai valori de 0. 4. o structur n care s reinem bieii liberi. Cel mai bine ar fi ca multimea de biei liberi s fie reinut ntr-o stiv BieiLiberi astfel nct atunci cnd se adaug un biat liber, el s fie mpins n stiv iar cnd dorim s alegem un biat liber care s fac o propunere, acesta s fie preluat din vrful stivei. Despre o fat putem afla dac e liber sau nu din vectorul n care se rein cuplurile formate la fiecare pas: fata i este liber dac cF(i) este 1. Algoritmul se bazeaz pe urmtoarea idee: Iniial toate persoanele sunt libere ct timp exist un biat liber considerm un biat liber fie f prima fat de pe lista de propuneri a lui b, creia nu i-a propus deja dac f este liber 11

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

cupleaz f i b altfel dac f l prefer pe b actualei ei perechi b elibereaz-l pe b cupleaz pe f cu b altfel f l refuz pe b. n continuare, vom prezenta algoritmul ntr-o form mai concret i mai detaliat. function Prob_Cstoriilor(n) begin // iniializarea structurilor for i 0 to n do //Iniial nici un biat i nici o fat nu sunt cuplai //Bieii nu fac nc nici o propunere //Iniializrile se fac n O(n) cB[i] -1 cF[i] -1 primaProp[ i ] 0 BieiLiberi.push(i) //ct mai avem nc biei liberi while ( nu_e_vid(BieiLiberi) ) do /*numrul de iteraii executate de aceast bucl nu poate depi n 2 deoarece: Atunci cnd un biat liber este cuplat cu o fat, cel mult un biat este eliberat, deci reintrodus n BieiLiberi. Prin urmare, la fiecare iteraie, dimensiunea stivei BieiLiberi nu poate depi dimensiunea de la iteraia anterioar. Fiecare biat poate propune o singur dat unei fete, i poate fi refuzat de fiecare fat cel mult o dat.*/ /*celelalte operaii din cadrul buclei (mai puin funcia de preferin se execut n O(1) ntruct sunt simple accesri*/ //se alege primul biat din stiv dar nu se extrage nc din stiv b BieiLiberi.top() /*se alege prima propunere a lui b dintre fetele crora nu le-a fcut deja propuneri*/ f prB[b][ primaProp[b]] (primaProp [b])++ //se trece la urmtoarea propunere din lista preferinelor lui b //verificm dac fata creia i face b propunerea este liber

12

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

if (cF[f] -1) then /*dac fata este liber se formeaz cuplul (f, b) i se extrage b din lista bieilor liberi*/ cF[ f ] b cB[ b ] f BieiLiberi.pop() else /* Verificm dac f prefer mai mult biatul b dect l prefer pe actualul ei logodnic*/ //Verificarea preferinei se face n O(n) if ( prefer(f, b, cF(f) ) then /* funcia returneaz true dac ntr-adevr f l prefer mai mult pe b dect pe cF(f) */ //l scoatem pe b din rndul bieilor liberi i l introducem pe cF(f) BieiLiberi.pop() BieiLiberi.push( cF(f) ); cB[cF[f]] -1 //i cuplm pe f i pe b cF[ f ] = b cB[ b ] = f end; //funcia care determin dac o fat prefer mai mult un biat dect pe altul i care are are evident complexitatea O(n) ntruct n cel mai ru caz se parcurge ntreaga list de preferine a fetei f */ function prefer (f, b1, b2) begin i 0 //naintm n vectorul de preferine pn cnd gsim unul dintre cei doi biei //primul biat ntlnit este preferat de fata f n locul celuilalt while ( prF[f][i] b1 || prF[f][i] b2 ) do i++ if ( prF[f][i] = b1 ) then return true else return false end; Conform celor explicate, complexitatea algoritmului este O(n) + O(n2)(O(n) + O(1)) = O(n3). Algoritmul alege primul biat liber din stiv (i anume acel biat aflat n vrful stivei). Acesta rmne n stiv pn cnd este cuplat cu o fat. n momentul n care un

13

GRDEA MARTA URICARU RALUCA A34 echipa 21

ALGORITMICA GRAFURILOR

cuplu se rupe un biat rmne liber i unul liber este cuplat; se va scoate din stiv biatul care se cupleaz la acel pas i va fi introdus cel care este desprit de pereche. Evident un biat va rmne n stiv pn cnd i se gsete o pereche stabil, deci pn cnd nu mai poate fi scos de nici un biat dintre cei rmai. Fiecare biat este acceptat de o fat aadar algoritmul se termin cu un cuplaj. Acest cuplaj este ntotdeauna stabil i este favorabil din punctul de vedere al bieilor. Presupunem c acest cuplaj obinut este M. Trebuie s artm c ntr-adevr nu se formeaz nici un blocaj. S presupunem c exist o fat f pe care un biat b o prefer mai mult dect pe perechea cu care a fost grupat n urma execuiei algoritmului. Atunci, dup modul n care lucreaz algoritmul, putem trage concluzia c aceast fat f a refuzat n momentul n care biatul b i-a fcut propunerea, sau l-a acceptat la un moent dat, dar a fost nlocuit ulterior cu un altul n condiiile precizate n algoritm, deci putem spune c f l prefer pe partenerul ei curent. Aadar f i b nu formeaz un blocaj i cum am ales biatul b arbitrar, putem spune c nu exist blocaje i deci c M este un cuplaj stabil. Observaie: n cazul n care numrul de fete nu este egal cu numrul de biei, putem aduga nume fictive. Dac avem mai puine fete se adaug un numr de fete fictive iar altfel, se adaug un numr fictiv de biei. Pentru fetele sau bieii adugai vom alctui listele de preferine aleator numai c: dac adugm fete, atunci fetele adugate trebuie puse ultimele n listele de preferine ale bieilor; dac adugm biei, atunci fetele trebuie s i introduc ultimii n listele lor de preferine. Facem aceast alegere ntruct avem nevoie ca cei adugai s nu fie luai n consideraie dect de persoanele cele mai puin dorite din cealalt tabr. n final se vor exclude persoanele introduse n plus, urmnd n tabra cealalt s rmn i biei sau fete fr pereche.

14