Sunteți pe pagina 1din 65

1

Facultatea de Matematic i Informatic



Universitatea din Bucureti





Lucrare de Licen



Cuplaje n Grafuri







autor
Grosu Andrei Nicolae






ndrumtor tiinific

Prof. Dr. Tomescu Ioan














Bucureti, iunie 2011



Cuprins
2


1.Prefa 4
1.1 Subiectul Tezei .................................................................................. .. 4
1.2 Repere Istorice..................................................................................5
1.2.1 Problema podurilor din Knigsberg..................................5
1.2.2 Teorema poliedral a lui Euler..........................................6
1.2.3 Problema celor patru culori................................................6
1.2.4 Ciclu Hamiltonian..............................................................7
1.2.5 Originea cuvntului graf ....................................................7
1.3 Definiii i notaii.................................................................................8

2.Cuplaje perfecte 15
2.1 Introducere ..15
2.2 Teorema lui Berge ...........................................................................17
2.3 Teorema lui Hall............................................................................................18
2.4 Teorema lui Knig:...........................................................................................26

3.Cuplaje n Grafuri Oarecare
3.1 Teorema lui Tutte...........................................................................................28
3.2 Teorema lui Petersen.......................................................................................32
3.3Aplicaii................................................................................33
3

4.Problema Asocierii 37
4.1Algoritmul Ungar...........................................................................................37
4.2Algoritmul Kuhn-Munkres.............................................................................42
5. Aplicaie 46
Concluzii 61
Bibliografie 62

















4








Prefa


folosi o mulime de puncte unite prin linii sau sgei pentru a descrie o situatie ce
reprezinta interes. Punctele pot substitui oameni ori locuri ori atomi, iar sagetile sau
liniile ar putea reprezenta relatii de rudenie, drumuri sau legaturi chimice. Astfel de
diagrame le intalnim la tot pasul sub diverse denumiri: sociograme in psihologie,
simplexuri in topologie, structure organizationele in economie, retele sociale, etc.
Denes Knig a sugerat pentru prima dat ca numele generic graf s fie folosit
pentru astfel de structuri asumndu-i totodat studiul noului domeniu ce urma a se
contura.



1.1 Subiectul Tezei

In aceast lucrare ne propunem s introducem cititorul n aspectele teoretice ale
temei alese plecnd de la modele practice.
Considerm urmatoarea situaie: o companie farmaceutic dorete s testeze un
numr de n antibiotice pe n subieci voluntari. Cercetrile preliminare au scos la iveal
faptul c anumii voluntari sunt alergici la unele medicamente testate. Poate fi conceput
un experiment astfel ncat fiecare subiect s testeze exact unul dintre antibioticele la care
nu este alergic i fiecare medicament s fie administrat unui singur voluntar?
Putem modela aceast situaie folosind un graf bipartit G n care voluntarii i
medicamentele reprezint nodurile iar mulimea muchiilor e definit astfel : dac un
voluntar nu e alergic la un medicament atunci exist muchie.
Astfel modelarea experimentului se rezum la gsirea unui cuplaj perfect al lui G.
5
n capitolul doi prezentm o condiie necesar si suficient pentru existena unui cuplaj
perfect ntr-un graf bipartit.


1.2 Repere istorice

1.2.1 Problema podurilor din Knigsberg

Continum lucrarea cu o scurt descriere a evoluiei Teoriei Grafurilor, din care
face parte i tema vizat : Cuplajele n Grafuri.
Subiectul Teoriei Grafurilor i are originile n probleme recreaionale de
matematic. Originea acestui domeniu este strns legat de anul 1736, cnd
matematicianul elveian Leonard Euler a rezolvat Problema Podurilor din Knigsberg.
Aceast problem era un puzzle vechi privind posibilitatea de a gsi un drum care s
traverseze toate cele apte poduri ce legau o insul de rm dar fr a trece un pod de
dou ori.


Figura 1.2.1


Euler a argumentat c o astfel de cale nu exist , n esen demonstrnd prima lui
teorem referitoare la grafuri. Translatat n terminologia teoriei grafurilor actuale
teorema ar putea fi enunat astfel : pentru a parcurge toate muchiile dintr-un graf exact o
singur dat trebuie ca fiecare nod s aibe un numr par de muchii, indiferent de pozitia
acestuia n drum(de nceput/sfrit sau n interior).








1.2.2 Teorema poliedral a lui Euler
6

Euler a fcut a doua mare contribuie la teoria grafurilor n 1758, la dou decenii
dup ce a rezolvat problema podurilor din Knigsberg. Acesta a enunat o formul pentru
grafuri planare. Un graf planar este un graf care poate fi trasat n plan astfel nct
muchiile sale s nu se intersecteze n interior.

Figura 1.2.2

O caracteristic evident a acestui tip de graf este c mparte planul n regiuni
nchise de un ciclu numite fee. De exemplu n Figura 1.3 sunt trei fee interioare si una
exterioar infinit. Euler a demonstrate ca pentru o reprezentare a unui graf planar
numrul de vrfuri minus numrul muchiilor plus numrul feelor este ntotdeauna egal
cu doi. Pe scurt n e + f = 2, unde n este numrul de vrfuri, e numrul de muchii si f
numrul feelor. Pentru exemplul de mai sus avem n = 4, e = 6 i f = 4, valori care verfic
egalitatea. Acest teorem poart numele aceluiai Euler, n plus pentru orice
reprezentare n plan al unui graf valoarea pentru n e + f este cunoscut ca si
caracteristica Euler.



1.2.3 Problema celor patru culori

Problema ne ntreab dac rile de pe orice hart pot fi colorate folosind doar 4
culori, astfel nct rile care sunt vecine s fie de culori diferite. Aparent enunat iniial
de ctre Francis Guthrie n 1850 , problema are o istorie presarat cu ncercri greite de
rezolvare. Rezultatul a fost demonstrat n 1976, utiliznd aproape 2000 de verificri
computerizate.



1.2.4 Ciclu Hamiltonian
7

n 1857 matematicianul irlandez William Rowan Hamilton a inventat un puzzle
pe care l-a vndut mai trziu unui fabricant de jocuri pentru 25 de lire englezeti. Puzzle-
ul presupunea gsirea unui drum special, cunoscut mai trziu sub numele de ciclu
hamiltonian, de-a lungul muchiilor unui dodecadron. Drumul trebuia s se termine n
vrful de start , parcurgnd fiecare nod o singur dat.




Figura 1.2.3



1.2.5 Originea cuvntului graf

Cuvntul graf n nelesul actual a fost derivat din termenul notaie grafic din
chimie i a fost folosit prima dat de J. Silvester n anul 1878 ntr-un articol publicat n
primul numr al revistei American Journal of Mathematics, nfiinat chiar de el. Dei
teoria unitar chimio-algebr pe care el ncerca s-o fundamenteze s-a dovedit o utopie,
teoria grafurilor are multe aplicaii n chimie.












1.3Definiii i notaii




(a) Conceptele utilizate pentru grafurile orientate
8



Def. 1.3.1
Drumul este o succesiune de vrfuri legate, fiecare cu urmtorul, prin cte un
arc. Drumul poate fi finit sau nu.
Exemplu:



Graful din Figura 1.3.1 conine numai drumurile finite, iar al doilea graf
conine i drumuri infinite. Drumurile finite sunt d
1
=(x
1
,x
2
,x
5
); d
2
=(x
1
,x
4
,x
5
);
d
3
=(x
1
,x
3
,x
4
,x
5
).




Def. 1.3.2
Un drum se numete simplu dac arcele care le compun sunt folosite
fiecare, o singur dat. n caz contrar, el se numete compus.

Def. 1.3.4
Un drum se numete elementar dac trece o singur dat prin vrfurile sale.

Def. 1.3.5



Figura1.3.1 Figura 1.3.2
1
2
3
4
5
1
2
3
4
5
9
Lungimea unui drum este dat de numrul arcelor sale; deci dac drumul
are n vrfuri, atunci lungimea sa este l= n -1.

Def. 1.3.6
Circuitul este un drum al crui vrf iniial coincide cu vrful final.

Def. 1.3.7
Bucla este un circuit de lungime 1.



(b) Concepte utilizate pentru grafuri neorientate

Def. 1.3.1
Muchia. Se spune c exist o muchie ntre dou vrfuri X i Y, dac exist
un arc de la X la Y i / sau de la Y la X.
Obs : d
[G]
(x)=gradul nodului x n graful G, reprezentnd numrul de muchii ce au
un capt nodul x;



Def. 1.3.2
Lanul este o succesiune de muchii consecutive. Lanul poate fi
simplu sau compus, elementar sau nu, n aceleai condiii prezentate pentru
drumuri.

Def. 1.3.3
Ciclul este un lan nchis. Noiunea de circuit de la grafuri orientate este
nlocuit la cele neorientate cu ciclu. Orice circuit este un ciclu dar nu orice ciclu
este circuit.

Def. 1.3.4
10
Graful conex. Oricare ar fi vrfurile X i Y considerate, exist un lan ntre
X i Y.

Def. 1.3.5
Graful complet. Oricare ar fi vrfurile X i Y considerate, exist o muchie
ntre X i Y (Figura 1.3.3). Trebuie observat c ntre X i Y se afl o muchie i nu
un arc.


Figura 1.3.3

Def. 1.3.6
Graf regulat. Un graf neorientat se numete k-regulat dac toate nodurile au
gradul exact k.

(c) Graf parial i subgraf


Def. 1.3.1
Graful parial. Dac ntr-un graf se suprim unul sau mai multe arce, se
formeaz un graf parial al grafului de referin (Figura 1.3.4a i 1.3.4b).
Harta tuturor drumurilor unei ri, cuprinznd drumurile naionale i cele
judeene formeaz un graf. Dac se consider numai drumurile naionale se
obine un graf parial.
11


Def. 1.3.2
Subgraful. Dac ntr-un graf se suprim unul sau mai multe puncte,
precum i arcele care sosesc sau pleac din ele, graful care rmne este un
subgraf al grafului de referin (Figura 1.3.4a i 1.3.4c). Se pot considera, de
asemenea, i subgrafuri pariale.

D
Fig. 1.3.4 a) Graful G de referin

Fig. 1.3.4 b) Graful parial al lui G
12

Fig. 1.3.4 c) Subgraful lui G


(d) Concepte utilizate pentru cuplaje

Def. 1.3.1
Cuplaj. Fie G=(V, E) un graf simplu. Se numete cuplaj al grafului G, o mulime
M E cu proprietatea c oricare dou muchii sunt neincidente(mulime independent de
muchii).
Obs : Graful indus de M l notm prin [M]. Notm cu M
*
un cuplaj de cardinal
maxim din G.



Def. 1.3.2
Cuplaj. Vrfurile muchilor unui cuplaj M al unui graf G spunem c sunt M-saturate.
Vrfurile grafului G care nu aparin lui M spunem c sunt M-nesaturate.


Def. 1.3.3
Lan M-alternant. n raport cu un cuplaj M din G, un lan sau un ciclu elementar
spunem c este M-alternant dac muchiile sale aparin alternative mulimilor M i
=E(G)-M. Un lan M-alternant spunem c este deschis (sau cresctor) dac are capetele
13
nesaturate. n figura 1.3.5 b) avem de exemplu lanul M-alternant , dat prin nodurile sale
[12, 3,4,5,6].



Figura 1.3.5 a) Figura 1.3.5 b)
Un graf G oarecare Cuplaj n graful G



Def. 1.3.4
Spunem c o mulime de noduri A V(G) poate fi saturat daca exist un cuplaj
M care s conin toate nodurile mulimii A.

Def. 1.3.5
Cuplaj perfect. Un cuplaj M se numete perfect dac acesta satureaz mulimea V.
Dac din mulimea de noduri V rmne exact un nod nesaturat , numim cuplajul V
aproape perfect.
Obs : Un cuplaj cu un numr impar de noduri nu poate conine un cuplaj perfect.



Def. 1.3.6
Cuplaj maxim. Un cuplaj M al unui graf G se numete maxim dac nu exist
un alt cuplaj M

din G astfel nct | M

| > |M|.

14

Figura 1.3.6
Cuplaj Perfect
Def. 1.3.7
Transversal . O transversal K din G este o mulime de vrfuri K V(G) cu
proprietatea c orice muchie din G are cel puin unul din vrfuri n ea.
Obs : Notm cu o transversal de cardinal minim din G



Def. 1.3.8
Fie G=(V,E) un graf simplu i X V, notm cu N
G
(X) mulimea nodurilor
adiacente celor din X.


(d) Concepte utilizate pentru grafuri bipartite


Def. 1.3.1
Graf bipartit .Un graf G=(V,U) se numete bipartit dac exist dou mulimi nevide
A, B astfel nct V=A U B, AB = i orice muchie a lui G are o extremitate n A iar
cealalt n B.
Obs : Pentru un graf bipartit G=(V,U) cu mulimea nodurilor dat de partiiile
mulimii V : A i B , mulimea muchiilor E vom folosi notaia G=( A U B, E).


15


Figura 1.3.7



Def 1.3.2
Graf bipartit complet. Un graf bipartit G=( A
1
U A
2
, E), este bipartit complet dac
fiecare nod din mulimea A este adiacent cu toate nodurile din B si reciproc.





Capitolul 2

Cuplaje n Grafuri Bipartite

Presupunem c ni se d un graf i trebuie s gsim n el ct mai multe muchii
independente. ntrebarea asta mi-a atras atenia imediat dup lecia iniiativ n cuplaje
de la facultate n care ni s-au prezentat de ctre domnul profesor noiunile introductive
premergtoare. Cum s procedm? Vom reui s distingem toate muchiile grafului
astfel? Dac nu, cum putem fi siguri c nu avem o soluie? n mod surprinztor aceast
problem banal n aparen st la baza multor aplicaii, mbogeste semnificativ Teoria
Grafurilor.
16
S lum n considera urmtorul exemplu din realitate : la o serat particip o
mulime B de n biei i o mulime F de n fete. Se tie c fiecare biat cunoate
exact k fete i c fiecare fat cunoate deasemenea exact k biei.
Se poate organiza o repriz de dans astfel nct fiecare dintre participani
s danseze cu o cunotin a sa? n plus, se pot organiza k astfel de reprize de
dans n care fiecare participant s danseze pn la final cu toate cunotinele sale.
Rspunsul ne-a fost pentru prima dat oferit de ctre Hall(1935).

Dac considerm B- mulimea bieilor i F mulimea fetelor putem construi
graful G=(B F, E) n care muchiile sunt formate de acele perechi {b,f} cu bB
i fF cu proprietatea c b i f se cunosc atunci obinem un graf bipartit k-
regulat iar mulimii perechilor ce evolueaz ntr-o repriz de dans cu proprietile
din enun i corespunde un cuplaj perfect n G, iar mulimii celor k reprize de
dans i corespunde o descompunere n k cuplaje perfecte a mulimii muchiilor lui
G.
Teorema lui Hall ne ofer o condiie necesar i suficient pentru existena unui
cuplaj perfect ntr-un graf bipartit. Putem demonstra acest rezultat folosind lanuri
alternante sau teorema lui Knig(1931) : n orice graf bipartit cardinalul cuplajului
maxim este acelasi cu al transversalei de cardinal minim.
Pentru descompunerea n cuplaje perfecte a mulimii muchiilor unui graf bipartit
ne vom folosi de teorema lui Bernstein i alte cteva rezultate intermediare.

n demonstrarea a numeroase aplicatii teoretice ne vom folosi de caracterizarea
cuplajelor de cardinal maxim a lui Berge(1957) folosind lanuri M-alternante: Un cuplaj
M este maximal dac i numai dac nu mai exist nici un lan M-alternant deschis.
Numim transfer de-a lungul lanului M-alternant deschis P operaia prin
care cuplajul M se transform ntr-un cuplaj M prin nlocuirea muchiilor sale din
lanul P cu cele ale lanului P care nu-i aparin ceeace formal se poate scrie
astfel: M = M E(P). Astfel problema gsirii unui cuplaj maximal poate fi redus la
gsirea unui lan M-alternant deschis dac exist.




2.1 Caracterizarea Cuplajelor de Cardinal Maxim a lui Berge


Propoziie:

Fie M un cuplaj n graful G=(V,E) i P un lan M-alternant deschis.
Numim transfer de-a lungul lanului M-alternant deschis P operaia prin care
cuplajul M se transform ntr-un cuplaj M prin nlocuirea muchiilor sale din
lanul P cu cele ale lanului P care nu-i aparin ceeace formal se poate scrie
astfel: M = M E(P). Cardinalul noului cuplaj va fi ,M,=,M,+1.
Prin operaia de transfer am obinut un cuplaj cu un cardinal strict mai mare dect
cel anterior. Aceast proprietate reduce gsirea unui cuplaj maximal la gsirea unui lan
alternant deschis.
17

2.2Teorema lui Berge

Teorem(Berge, 1957):
Fie G=(V,E) , E, un graf simplu i M E un cuplaj. Atunci M este un cuplaj
de cardinal maxim dac i numai dac nu exist nici un lan M-alternant deschis.

Demonstraie:

1.1Presupunem c M este un cuplaj maxim i c exist n graful G lanul
M-alternant deschis P :v
1
v
2
...v
k
. ntruct lanul este M-alternant cu ambele capete M-
nesaturate k este par i c muchiile v
2
v
3
, v
4
v
5
, ... v
k-2
v
k-1
sunt toate muchii ale cuplajului.
De asemenea rezult c muchiile v
1
v
2
,v
3
v
4
, ..., v
k-1
v
k
nu sunt muchii ale cuplajului
M.(Fig. 2.1)
Definim mulimea de muchii M
1
v
2
v
3
, v
4
v
5
, ... v
k-2
v
k-1
) { v
1
v
2
,v
3
v
4
, ...,
v
k-1
v
k
}. Vom demonstra c M
1
este cuplaj.
Muchiile lui M
1
E(P) sunt independente una fa de alta ntruct le regseam
i-n cuplajul iniial M. Dac o muchie din M
1
E(P) este incident cu una din mulimea
{ v
1
v
2
,v
3
v
4
, ..., v
k-1
v
k
} nu poate fi dect ntrunul dintre nodurile v
2
,v
3
,...,v
k-1
altfel lanul P
nu ar mai fi fost M-alternant deschis.
Cum muchiile v
1
v
2
,v
3
v
4
, ..., v
k-1
v
k
sunt independente obinem M
1
cuplaj i n
plus cardinalul lui M
1
va fi exact cu o unitate mai mare dect cel al lui M, contradicie cu
faptul c M era un cuplaj maxim.


v
1
v
2
v
3
v
4
v
5
v
6
v
k-2
v
k-1
v
k

Fig. 2.1



Pentru implicaia invers presupunem c G nu are lanuri M-alternante deschise i
c exist un cuplaj M

de carinal strict mai mare dect M. Definim subgraful H al lui G


18
astefel : Fie V(H)= V(G) i n E(H) considerm muchiile ce apar n doar unul dintre
cuplajele M sau M

. Formal E(H) = M M

.
S analizm cteva dintre proprietile subgrafului H. ntruct fiecare nod al su
este incident cu cel mult o muchie din M i cel mult o muchie din M

gradul maxim n H
va fi 2. Datorit acestei proprieti orice component conex va fi un nod izolat, un lan
sau un ciclu.
Muchiile dintr-o component conex a lui H alternnd ntre M si M

vom aveam 4
tipuri de component conexe :

Ciclu M, M

-alternant (numit pe scurt component de tip C);





Lan M, M

-alternant cu un capt M-saturat i cellalt M

saturat (component
tip (M, M

));





Lan M, M

-alternant cu ambele capete M-saturate (component tip (M, M));








19
Lan M, M

-alternant cu ambele capete M

-saturate (component tip (M

, M

));


Cum cele dou cuplaje au un numr egal de muchii n componentele conexe de tip C i
de tip (M, M

) i cardinalul lui M

este strict mai mare dect cel al lui M rezult c avem
o component conex de tip (M

, M

), adic un lan M-alternant deschis. Contradicie i


teorema este demonstrat.



2.2Teorema lui Knig

Teorem(Knig, 1931)
Fie un graf bipartit. Numrul maxim de muchii dintr-un cuplaj
este egal cu numrul minim de noduri dintr-o transversal a nodului curent.


Demonstraie:
Fie M un cuplaj de cardinal maxim din G. De la fiecare muchie din M alegem
unul dintre capete astfel : din mulimea B dac un lan M-alternant ce ncepe dintr-un
nod nesaturat din A se termin n acest nod, altfel alegem nodul-capt din mulimea
A.(Fig. 2.2) Notm cu U mulimea acestor noduri i vom demonstra c este o transversal
a lui G.









20
U
Fig. 2.2 Transversala U
Fie o muchie. Vom arta c nodul a sau b . Distingem 2 cazuri :
1.Cazul ab M este trivial, conform definiiei U coninnd unul dintre noduri.
2. Presupunem c ab M. ntruct M este cuplaj maximal asta presupune c

a
1
b
1
M cu a = a
1
i b

b
1
sau b= b
1
i a

a
1
.
Dac a

a
1
i b=b
1
atunci ab este un lan M-alternant i b U.
Dac a = a
1
i b

b
1
i a U atunci b
1
U i exist un lan M-alternant P
ce se termin n b
1
. Definim lanul M-alternant deschis P
1
astfel : P
1
=Pb(dac b P) sau
P
1
= Pb
1
a
1
b . P
1
va fi M-alternant, contradicie, deci a=a
1
U i muchia ab este
acoperit de ctre U.

2.3Teorema lui Hall

Teorem(Hall, 1935)

Fie un graf bipartit. G admite un cuplaj ce satureaz nodurile
mulimii A n B dac i numai dac |N
G
(S)||S| pentru orice submulime S a lui A.

Demonstraie :

1.Implicaia trivial :
G admite un cuplaj ce satureaz nodurile lui A n B i fie S o submulime
oarecare a lui A, . Fie M acest cuplaj.
N
G
(S) implic | N
G
(S)||
| i implicaia este demonstrat.
21



2. Implicaia non-trivial o vom demonstra prezentnd trei metode. Prima e bazat
pe teorema lui Knig ; a doua este o construcie direct folosind lanuri M-alternante;
ultima este o combinaie ntre primele.

a)Presupunem c G nu admite nici un cuplaj ce satureaz toate nodurile din A.
Atunci conform teoremei lui Knig transversala minim U va conine mai puine noduri
dect |A| sau U = A
1
B
1
unde A
1
A i B
1
B.
Atunci |A
1
| + |B
1
| = |U| |A| de unde rezult |B
1
| |A| - |A
1
| = |A\ A
1
|

Din definiia lui U , G nu admite muchii ntre A\A
1
i B\B
1
, prin urmare
N
G
(A\A
1
)

B
1
= |N
G
(A\A
1
)| |B
1
| |A\ A
1
|.
Am obinut c pentru S = A\ A
1
|N
G
(S)| |S|, contradicie i prin urmare presupunerea
facut iniial este fals i G admite un cuplaj ce satureaz toate nodurile din A.



A
1


B
1


Fig. 2.3 O transversal cu mai puine noduri dect |A|
22

b)Fie M un cuplaj maximal al lui G i fie u A un nod nesaturat. Definim
mulimea X ca fiind format din nodurile lui G care sunt legate de u printr-un lan M-
alternant. Fie S = X A i T = X B; Teorema lui Berge implic faptul c singurul nod
M-nesaturat din S este u i c toate nodurile din T sunt M-nesaturate, altfel ar exista un
lan M-alternant deschis i cuplajul M nu ar mai fi maxim.
Prin urmare fiecare nod din S\{u} este saturat i fiecare nod din T este saturat.
Asta implic |T| = |S| - 1.
n continuare vom demonstr c N
G
(S) T.
i)Fie a S\{u}. Presupunem c exist b B\T astfel nct ab E.
Dac b este M-saturat atunci conform definiiei mulimii T b T.
Dac b este M-nesaturat atunci exist un lan M-alternant deschis de la u la b i cuplajul
nu mai este maximal, contradicie .
Evaluarea celor dou posibiliti implic N
G
(a) T, pentru a S\{u}.

ii)Pentru a = u. Presupunem c exist b B\T astfel nct ab E.
Dac b este M-saturat atunci conform definiiei mulimii T b T.
Dac b este M-nesaturat atunci muchia definim cuplajul M
1
= M {ab}, |M
1
|=|M|+1
|M| contravine cu faptul c M este cuplaj maximal.

Din relaiile i) i ii) obinem N
G
(S) T = |N
G
(S)| |T| =|S| - 1 |S|, contradicie cu
ipoteza din enun.
Prin urmare nu exist u A M-nesaturat i teorema este demonstrat.

23

c)Vom demonstra Teorema lui Hall prin inducie dup numrul nodurilor din A.
Dac |A|= 1 , A ={x} i conform ipotezei N
G
({x}) 1 = exist y B cu xy E.
M= {xy}.
Acum presupunem |A| 2 i teorema lui Hall adevrat pentru toate mulimile ce
au un numr de noduri mai mic dect |A|.
i)Dac |N
G
(S)| |S| +1 pentru orice submulime nevid S a lui A, atunci alegem o
muchie oarecare ab a lui G i considerm graful G
0
= G -{a,b} n care e satisfcut relaia:
|N
G0
(S)| |N
G
(S)| - 1 |S| i conform ipotezei de inducie G
0
conine un cuplaj ce
satureaz A\{a}. mpreun cu muchia ab acest cuplaj va satura A n graful G.
ii)Presupunem c exist A
0
o submulime nevid a lui A cu |A
0
| = |B
0
|, unde
B
0
= N
G
(A
0
).
Din ipoteza de inducie graful G
0
=(A
0


B
0
) conine un cuplaj ce satureaz A
0.

Graful G-G
0
satisface de asemenea condiia din teorema lui Hall : dac pentru o
submulime S A\A
0
am avea |N
G-G0
(S)| |S| asta ar nsemna c
|N
G
(S A
0
)| | S A
0
| contradicie cu presupunerea fcut. Prin urmare i G-G
0

conine un cuplaj ce satureaz A\A
0
i unind cele dou cuplaje se satureaz toate nodurile
din A n G.


2.3.1Corolar (Frobenius (1917))

Dac G este un graf k-regulat bipartit cu k>0 atunci G admite un cuplaj perfect.

Demonstraie:
24
Fie G=(X U Y, E) un graf bipartit k-regulat. ntruct G este k-regulat avem c
k |X|= |E|=k|Y | => |X|=|Y|;
Fie S X i definim E
1,
E
2
mulimile muchiilor incidente nodurilor din S, respectiv
N
[G]
(S). Evident c E
1
E
2
; => E
2
=k * | N
[G]
(S)| S
1
= k*|S| => |N
G
(S)||S|.
S fiind o mulime aleas arbitrar obinem c oricare ar fi S X |N
G
(S)||S|, deci
conform teoremei lui Hall G admite un cuplaj ce satureaz A.
Pe de alt parte am demonstrat mai devreme c |X|=|Y| =>G admite un cuplaj
perfect i corolarul este demonstrat.

2.3.2Corolar

Fie un graf bipartit. Dac |N
G
(S)||S|-d pentru orice
submulime S a lui A i d N fixat, atunci G conine un cuplaj de cardinal |A|-d.

Demonstraie:

Construim graful G
1
={A B
1
,E
1
} cu B
1
= B {b
1
, b
2
b
d
} i N
G
(b
i
)=A
, altfel spus adugm grafului G d noduri pe care le legm de toate
nodurile din A.
Graful G
1
va fi bipartite i-n plus pentru S o submulime oarecare a lui A avem
relaiile: |N
G1
(S)| = |N
G
(S)|+d |S|.
Conform teoremei lui Hall G
1
admite un cuplaj M ce satureaz A. Cum maxim d
muchii din M aparin lui E
1
\E obinem c G conine un cuplaj ce satureaz cel puin |A|-d
noduri i teorema este demonstrat.

25
2.3.3Sistem de reprezentani distinci

Definiie:
Fie (S
1
,S
2
... S
n
) o familie de submulimi a unei mulimi A, indexate dup primele n
numere naturale. Un sistem de reprezentani distinci sau SRD, pentru familia
specificat, este o familie (x
1
, x
2
... x
n
) de elemente a lui A ce satisfac condiiile:
i)x
i
S
i
pentru orice i cu 1 in;
ii)x
i
x
j
pentru i

j;

Prima condiie afirm c elementele sunt reprezentani ai mulimilor i a doua c
sunt distinci.

De exemplu, fie mulimile S
1
, S
2
, S
3
, S
4
i S
5
definite astfel:
S
1
= {2, 8},
S
2
= {8},
S
3
={5,7},
S
4
= {2,4,8},
S
5
= {2,4}.
Familia X
1
= { S
1
, S
2
, S
3
, S
4
} admite un SRD i anume{2,8,7,4}. Familia de
mulimi X
2
= { S
1
, S
2
, S
4
, S
5
} nu admite un SRD. Deci sub ce condiii o familie finit
de mulimi are un SRD?
Evident pentru a exista un SRD trebuie ca oricare k mulimi din familie s
conin reunite cel puin k elemente din A. De asemenea fiecare mulime trebuie s fie
nevid. Vom demonstra c aceste dou condiii sunt suficiente pentru existena unui SRD
folosind teorema lui Hall.

Teorem 2.3.1: Fie (S
1
,S
2
... S
n
) o colecie finit de mulimi nevide. Aceast colecie
admite un SRD dac i numai dac reuniunea oricror k mulimi S
i
conine cel puin k
elemente.



Demonstraie:

26
Fie S = S
1
S
2
... S
n
. Cum S
1
,S
2
... S
n
sunt mulimi finite i S va fi finit.
Considerm a
1
, a
2
... a
m
elementele mulimii X. Construim graful bipartit
astfel X= {S
1
,S
2
... S
n
} i Y = { a
1
, a
2
... a
m
}. (Fig. 2.4) ntre o mulime
S
i
i un nod a
j
vom aveam muchie doar dac a
j
S
i
.


Fig.2.4
Teorema lui Hall afirm c G admite un cuplaj ce saturez X dac i numai dac
|A| |N
G
(A)| pentru orice submulime A aparinnd lui X. Cu alte cuvinte G admite un
SRD dac pentru reuniunea oricror k mulimi S
i
conine cel puin k elemente, exact
ipoteza din enunul teoremei.

2.3Teorema lui Bernstein

Teorem(Bernstein)

Fie G = (AB, E) un graf bipartit, dou pari X _ A, Y _B i dou cuplaje M
A
al lui X
n B i M
B
al lui Y n A . Exist un cuplaj M _ M
A
M
B
care satureaz elementele
mulimii X Y.


Demonstraie:
27


Vom construi un cuplaj M_ M
A
M
B
care satureaz elementele mulimii X Y.
Fie G=[M
A
M
B
] graful indus de mulimea muchiilor celor dou cuplaje, M
A
i
M
B
. Avem M
A
M
B
= (M
A
M
B
)(M
A
AM
B
).
Dac M
A
AM
B
=C atunci M
A
= M
B
i lum M= M
A
.
Considerm cazul n care M
A
AM
B
=C . Componentele conexe ale grafului
[M
A
AM
B
] sunt de unul din urmtoarele tipuri:
Tipul (1) : lan M
A
,M
B
-alternant tip (M
A
,M
B
) cu ambele capete n A;
Tipul (1): lan M
A
,M
B
-alternant tip (M
A
,M
B
) cu ambele capete n B;
Tipul (2) : lan M
A
,M
B
-alternant tip (M
A
,M
A
);
Tipul (2): lan M
A
,M
B
-alternant tip (M
B
,M
B
);
Tipul (3) : ciclu M
A
,M
B
-alternant.



28



Construim cuplajul M din muchiile comune celor dou cuplaje MA
i MB i alegnd apoi pentru fiecare tip de component conex a
grafului [MAAMB] cte un cuplaj care satureaz vrfurile din
mulimile X i Y pe care ea le conine. Astfel, pentru
componentele de tip (1), (2) i (3) alegem muchiile cuplajului MA iar
pentru componentele de (1) i (2) alegem muchiile cuplajului MB
aflate n acea component. Cuplajul M astfel construit satureaz
toate vrfurile mulimilor X i Y.



Vrf din X
Vrf din Y
M
A
M
A
M

Legenda.
(1)
(3)
(2) (2)
(1)
29
2.4Teorema Birkhoff - von Neuman

Definiii:

O matrice dublu stocastic reprezint o matrice patrtic de numere reale cu
proprietatea c suma elementelor de pe orice linie sau orice coloan este egal cu 1.

Spunem despre combinaia liniar c
1
x
1
+c
2
x
2
+... c
n
x
n
c este o combinaie convex a
numerelor reale x
1
,x
2
, ... x
n
dac c
i
0 {1n} i


O matrice permutare este matricea patratic ce are exact un singur element egal cu 1 pe
fiecare linie i coloan i 0 n rest. Evident orice matrice permutare este o matrice dublu
stocastic.

Teorem(Birkhoff 1946, von Neuman 1953)

Orice matrice dublu stocastic nenegativ se poate scrie ca o combinaie convex de
matrici-permutare.

Demonstraie:

Vom demonstra un rezultat mai general.
Fie A=(a
ij
) ,1 i j n, o mtrice patratic de ordin n ce satisface condiiile

, unde este un numr real pozitiv. Ne propunem s


artm c A poate fi scris ca o combinaie convex de matrici-permutare.
Notm cu m numrul de elemente diferite de 0 din A i vom demonstra prin
inducie dup m c teorema enunat mai sus este adevrat. Evident m n, ntruct cel
puin fiecare linie sau coloan trebuie s conin cel puin un element pozitiv.
Dac m=n fiecare linie i coloan trebuie s conin fix cte un , cu alte cuvinte
A= P, unde P este o matrice permutare.
Acum presupunem c matricea are m n i teorema este adevrat pentru orice
matrice cu un numr mai mic de elemente p ozitive.
Definim S
i
= {j| a
ij
> 0}, {1,... , n} . Colecia de mulimi S
1
,S
2
... S
n

satisface condiia lui Hall pentru existena unui SRD. Altfel, dac ar exista I_{1,... , n}
pentru care |

| |I| atunci elementele aflate pe liniile din I ar ocupa mai puin de |I|
coloane. Mai mult, am avea :



|I| contradicie cu faptul c

.
Conform teoremei 2.3.1 exist un SRD j
1
S
1
, j
2
S
2
, .... j
n
S
n.
30
Considerm matricea permutare P = (p
ij
) cu p
ij
= dac i numai dac j = j
i
i = min{a
ij
| j
= j
i
i=1,2 , , n} i matricea A

= A - P. A

va avea mcar cu unul mai puine elemente
pozitive dect A i-n plus satisface relaiile

.
Aplicnd ipoteza de inducie obinem A

unde P
1
, P
2
P
s
sunt
matrici-permutare iar
1
,
2
...
s
0 cu

. Prin urmare,
A = P + A

= P +

unde

i demonstraia este
ncheiat.
Alegnd = 1 obinem rezultatul teoremei Birkhoff-von Neuman.


Capitolul 3

3.1 Teorema lui Tutte


O condiie necesar i suficient pentru ca un graf s fie perfect a fost enunat de
ctre Tutte. O component conex a lui G este par sau impar n funie de paritatea sau
imparitatea numrului de noduri ce o constituie. Notm cu o(G) numrul componentelor
conexe impare din G.

Teorem(Tutte, 1947)
Un graf G admite un cuplaj perfect dac i numai dac o(G-S)|S| pentru orice
S G.

Demonstraie:
=>
Presupunem c G admite un cuplaj perfect M i fie S G iar G
1
, G
2
, ...G
n

componentele impare din G-S.
31
G
i
, i=1,n va conine cel puin un nod u
i
care se va cupla cu un nod v
i
din S ntruct
nodurile din G
i
nu se pot cupla toate ntre ele fiind numr par, ntre G
i
i G
j
cu ij nu
exist muchii fiind componente conexe disjuncte.
Cum {v
1
,v
2
...,v
n
} S avem o(G-S)=n=|{v
1
,v
2
...,v
n
}||S|








Componentele impare din G Componentele pare


Figura 3.1.1

<=
Presupunem c G=(V,E) satisface o(G-S)|S| pentru orice S G dar nu admite
un cuplaj perfect. Atunci G este un graf parial al uni graf maximal G
*
ce nu admite
cuplaj perfect.
G-S va fi un graf parial al lui G
*
-S i o(G
*
-S)o(G-S) |S| pentru orice S

V(G
*
);
32
Pentru S= avem o(G*)=0, adic n= numrul de noduri din G
*
, este par.
Considerm mulimea U a nodurilor de grad n-1 n G
*
. Dac U=V atunci G
*
este graf
complet cu numr par de noduri i evident admite un cuplaj perfect. Prin urmare
presupunem c UV.
n continuare ne propunem s artm c G
*
-U este o partiie de grafuri complete.
Presupunem prin reducere la absurd c ar exista o component conex din G
*
-U care nu
este graf complet. Prin urmare exist nodurile x, y,z astfel nct xy E(G*) i yz E(G*)
dar xz E(G*); cum y U => exist un nod w G
*
-U astfel nct yw E(G
*
).(Situaia e
ilustrat n figura 3.1.2




Figura 3.1.2

Cum G
*
este un graf maximal coninnd nici un cuplaj perfect, G
*
+e va conine
un cuplaj perfect pentru orice muchi e E(G*). Fie M
1
i M
2
cuplajele perfecte n G
*
+xz
i G
*
+yw, respectiv .


33

(b)
M
1
linie ngroat
M
2
linie curbat
Figura 3.1.3



Fie H subgraful lui G
*
U {xz, yw}indus de M
1
M
2
d
[M1 M2 ]
(x) = d
[M1]
(x) + d
[M2]
(x) = 1+1=2 => Toate componentele conexe ale lui H vor fi
cicluri de lungime par.
Distingem dou cazuri:

(a) xz i yw se afl n componente conexe diferite ale lui H(Figura 3.1.3a). Atunci
dac zw se afl n ciclul C din H, muchiile lui M
1
n C , impreun cu muchiile lui
M
2
care nu sunt n C formeaz un cuplaj perfect n G
*
, contradicie.

(b)xz i zw se afl n aceeai component conex C a lui H. Datorit simetriei dintre x
i z , putem presupune c nodurile x, y, w, z apar n ordinea aceasta n C
(Figura 3.1.3b). Atunci muchiile din poriunea yw...z a lui C, mpreun cu muchia yz
i muchiile din M
2
ce nu se afl n poriunea yw...z a lui C constituie un cuplaj perfect
n G
*
. Contradicie.


34
ntruct ambele cazuri au dus la contradicii deducem c G
*
-U este o partiie de
grafuri complete.
Mai devreme am demonstrat c o(G
*
-U)|U|. Prin urmare avem cel puin |U|
componente conexe impare n G
*
-U. Construim un cuplaj perfect n G
*
astfel
Cuplm fiecare nod al componentelor conexe impare din G
*
-U cu cte un nod din U.
. Figura 3.1.4 ilustreaz cum se cupleaz componentele conexe pare din G
*
-U ntre
ele i numrul par de noduri din U rmase.






Componente Impare din G
*
-U Componente pare din G
*
-U

Figura3.1.4


ntruct G
*
s-a presupus a nu conine un cuplaj perfect am obinut contradicie
dorit. Astfel dovedeim c G admite un cuplaj perfect i demonstraie este ncheiat.
Prezentm un rezultat demonstrat prima dat de ctre Petersen n 1891, dar care
poate fi foarte uor dedus din Teorema lui Tutte.


35
3.2 Teorema lui Petersen

Teorem(Petersen, 1891)
Orice Graf 3-regulat conex fr muchii admite un cuplaj perfect dac nu conine
muchii critice.
Demonstraie:
Fie G=(V, E) un graf 3-regulat fr muchii i S G. Considerm G
1,
G
2
...G
n

componentele conexe impare din G-S i definim m
i
ca fiind numrul de muchii ce au un
capt n G
i
i cellalt n S , i=1,n.

Cum G este 3-regulat pentru orice i=1,n avem


Din relaia de mai sus obinem c
, adic m
i
este impar .
G neconinnd muchii critice => m
i
1 , m
i
impar deci m
i
3 ,i =1,n.
Din faptul c orice nod are gradul 3 obinem relaia :

Din ultimele dou relaii obinem c

De unde conform Teoremei lui Tutte G admite un cuplaj perfect.


3.3 Aplicaii
36

Propoziie 3.2.1
Un arbore conine maxim un cuplaj perfect.

Demonstraie:
Fie T = (V, E) un arbore oarecare. Avem dou cazuri.
I)Arborele nu conine un cuplaj perfect. n acest caz demonstraia este
ncheiat.

II)Arborele conine cel puin un cuplaj perfect.

Notaii : s(x) = nodul din care s-a ajuns n nodul x ntr-o parcurgere n
lime;

n acest caz considerm reprezentarea arborelui pe nivele, dupa o
parcurgere n lime pornind dintr-un nod oarecare. Nivelul rdcinii (nodul de
start n parcurgere) va fi notat cu 1.
Fie un nod v cu d
[ T ]
(v)=1 => muchia (v, s(v)) aparine cuplajului ntruct
nodul v nu are alt muchie prin care s aparin cuplajului.
Presupunem c exist 2 noduri v, u cu d
[ T ]
(v)=1, d
[ T ]
(u)=1 astfel nct
s(u)=s(v) => muchiile (v, s(v)) i (u, s(u)) sunt incidente, contradicie cu faptul c
ar aparine cuplajului.
Deci orice frunz din arborele nostru nu are frai. Prin urmare de pe ultimul
nivel al arborelui toate muchiile aparin cuplajului, iar penultimul nu contribuie cu
nici o muchie.
Ne mutm pe penultimul nivel n arborele nostru. Nici o muchie nu va
aparine cuplajului ntruct ar fi incident cu muchiile frunzelor, contradicie.
Nodurile de pe acest nivel trebuie s abin ns cuplajului i nu o pot face
dect prin muchi ce le leag de strmoul lor i ne aflm ntr-o situaie simetric
cu cea iniial.
Practic muchiile cuplajului vor aparine cuplajului , alternativ pe nivele,
ncepnd cu muchiile frunzelor ca n figura 3.2.1.
37
La fiecare pas modul de alegere al muchiilor fiind unic determinat cuplajul
va fi maxim unul , demonstraia fiind ncheiat.














Figura 3.1.2(Cuplajul perfect are muchiile ngroate)


Propoziie 3.2.2(V. Chungphaisan)
Un arbore T admite un cuplaj perfect dac i numai dac o(T-v)=1 oricare ar fi v
V.
Demonstraie:
=>
Fie T=(V, E) un arbore ce admite un cuplaj perfect.
Fie S={v} , unde v V este un vrf oarecare.
T, admind un cuplaj perfect, conform Teoremei lui Tutte avem o(T-S)|S|
, adic o(T-v)1.
Arborele T are un numr par de noduri ntruct fiecare muchie din cuplaul perfect
este descris de cte o pereche distinct de noduri.
38
Presupunem prin reducere la absurd c o(T-v)=0, adic Graful T-v are doar
componente conexe pare=> T-v are un numr par de noduri
Dar |T|=|T-v|+1 => |T| are un numr impar de noduri, contradicie.
Prin urmare o(T-v)=1 oricare ar fi v V.
<=
Fie T=(V, E) un arbore n care o(T-v)=1 oricare ar fi v V.
Considerm arborele T ca fiind reprezentat pe nivele, numerotarea fcndu-se de la
frunze ce se afl pe nivelul 1 pn la un nod x numit rdcin ce va avea nivelul n.
Presupunem c exist u
1
, u
2
...u
m
frunze din T astfel nct s(u
i
)=s(u
j
) , i =1,m j=i,m-
1 unde prin s(x) am notat nodul tat al lui x.
Graful T-s(u
1
) va avea m+1 componente conexe: m noduri izolate i un arbore.
Evident o(T-s(u
1
))m
Din ipotez o(T-s(u
1
))=1, rezultnd c m=1.
Demonstrm prin inducie dup k, nivelul nodurilor, c ntr-un arbore cu
proprietatea din enun nodurile ce se afl pe nivele pare au un singur fiu.
P(1) a fost demonstrat!
Presupunem P(2k) adevrat pentru orice nivel p2k i ne propunem s c i
P(2k+2) este adevrat.
Presupunem prin reducere la absurd c exist u
1
, u
2
...u
m
noduri situate pe nivelul
2k+2 astfel nct s(u
i
)=s(u
j
) , i =1,m j=i,m-1.
Graful T-s(u
1
) va avea m+1 componente conexe. Dintre acestea m vor fi subarbori
formai cu noduri ce se afl pe nivele strict mai mici dect 2k+2.
Fiecare nod aflat pe un nivel p2k, p numr par are un singur fiu deci nivele p+1,
p vor avea cte o singur muchie. Numrnd muchiile astfel obinem un numr par de
muchii. Componentele conexe fiind arbori, vor avea prin urmare un numr impar de
noduri.
Evident o(T-s(u
1
))m
39
Din ipotez o(T-s(u
1
))=1, rezultnd c m=1, sau c fiecare nod de pe nivelul 2k+2
are un singur fiui ipoteza de inducie este demonstrat.

Dac rdcina arborelui se afl pe un nivel impar , nseamn conform
celor demonstrate pn acum c arborele nostru are un numr par de muchii,
adic impar de noduri.
Fie v o frunz a lui T, atunci o(T-v) =1 conform ipotezei.
T-v va fi un subarbore a lui T cu |T-v|=|T|-1.
Prin urmare arborele T va avea un numr par de noduri , contradicie.
Astfel am demonstrat c rdcina se afl pe un nivel par.
Construcia unui cuplaj maximal este evident n acest moment: alegem
muchiile ale cuplajului, alternativ pe nivele, ncepnd cu cele care leag frunzele
de arbore.




Capitolul 4

4.1 Algoritmul Ungar

Introducere

Continum aceast lucrare prezentnd o problem din viaa cotidian care i va
gsi rezolvarea n mod firesc, n acest cadru al cuplajelor.
S presupunem c ntr-o companie avem un numr de m lucrtori i tot attea
locuri de munc. Fiecare loc de munc are specificul su i fiecare angajat este calificat
pentru unul sau mai multe dintre acestea. Problema const n a gsi o mprire a locurilor
de munc astfel nct fiecare angajat s fie repartizat conform uneia dintre calificrile
sale.
40





Rezolvare

Pentru a rezolva aceast problem modelm datele astfel
Notm mulimea lucrtorilor cu X= (x
1
, x
2
....x
n
) i mulimea locurilor de munc
cu Y = (y
1
, y
2
....y
n
).

Construim , cu ajutorul acestora, graful bipartit G =(X

Y, E) unde
e =(x
i
, y
j
) E dac i numai dac lucrtorul x
i
este calificat pentru locul de munc y
j
.
Problema se reduce astfel la determinarea unui cuplaj perfect al grafului G.
n condiiile acestei probleme Teorema lui Hall asigur existena unui astfel de
cuplaj. Pentru determinarea lui vom folosi Algoritmul Ungar. Acesta decide dac, n
general un graf bipartit admite un cuplaj perfect sau nu. n cay afirmativ metoda
determin un astfel de cuplaj iar n caz contrar aceasta returneaz (conform Teoremei lui
Hall) o submulime S X cu proprietatea c :|N
G
(S)|<|S|.
Algoritmul pornete cu un cuplaj arbitrar M(de exemplu, prima muchie n ordinea
lexicografic a etichetelor nodurilor). Dac aceasta satureaz toate nodurile mulimii X,
atunci algoritmul se oprete, pentru c a fost determinat un cuplaj perfect. Altfel, se alege,
n ordinea etichetelor, un nod z X, M-nesaturat i se ncearc construirea unui lan M-
alternant deschis cu extremitatea iniial n nodul z ales. Mai nti se alege un (primul)
vecin (nod adiacent) y al lui z. Dac acesta este M-nesaturat, am aflat deja un lan M-
alternant deschis de lungime unu, cu extremitatea iniial n nodul z ales i extremitatea
final n y.
Astfel adugm lanului L muchia zy din E-M, muchia yz

din cuplajul M i
continum procedeul cu nodul z

pe post de z, ocolind nodurile din mulimea Y care


aparin deja lanului L. Dac lanul L construit pas cu pas este M-alternant deschis atunci
este determinat (similar metodei folosite n demonstrarea teoremei lui Berge ) cuplajul
41
M=ME(L) care satureaz din mulimea X un nod n plus fa de cuplajul anterior, dup
care se reia procedul cu un nou cuplaj M

pe post de M. n cazul n care lanul L nu este


M-alternant deschis nseamn c mulimea S = V(L)

X verific inegalitatea |N
G
(S)|<|S|,
deci conform Teoremei lui Hall , graful nu admite un cuplaj perfect.
Pentru o mai bun nelegere a algoritmului construim schema logic a acestuia i
dm un exemplu de rulare.
Figura3.2.1




START
M
cuplaj
arbitrar
42

3.3Exemplu de rulare al Algoritmului Ungar

Fie Graful G=({x
1
,x
2
,x
3,
x
4
}U {y
1
,y
2
,y
3,
y
4
}, E) unde mulimea muchiilor este
redat n imaginea de mai jos

NU
Lan L=[z,..y]
M-alternant
deschis
DA
Exist yz M
NU
Exist yN(S)\T
DA
S:=S U z
T:= T U y
DA
NU
Exist z X M-nesaturat
Este X
Saturat
STOP
M satureaz
pe X
S:=z
T:=
N(S)=T
STOP
|N
G
(S)|<|
S|
L:= L U zy
Este y
M-
L:= L U yz M

= M E(L)
M:= M


43
Figura 3.3.1

Pornim cu M = x
1
y
1
;
X saturat ?
NU: z = x
2
, S ={ x
2
}, T =
N(S) = T ?
NU : y = y
2
; L=[x
2
y
2
]
y- M saturat ?
NU : M

= [x
1
y
1
, x
2
y
2
];
M

= [x
1
y
1
, x
2
y
2
];



X saturat ?
NU: z = x
3
, S ={ x
3
}, T =
N(S) = T ?
NU : y = y
1
; L=[x
3
y
1
]
Y- M saturat ?
DA: z=x
1
; L=[x
3
y
1
, y
1
x
1
];
S ={ x
3
, x
1
}, T={ y
1
}
N(S) = T ?
NU : y = y
3
; L=[x
3
y
1
, y
1
x
1
, x
1
y
3
]
Y- M saturat ?
DA: M

=[x
1
y
3
, x
2
y
2
, x
3
y
1
];
M=[x
1
y
3
, x
2
y
2
, x
3
y
1
];

44



X saturat ?
NU: z = x
4
, S ={ x
4
}, T =
N(S) = T ?
NU : y = y
3
; L=[x
4
y
3
]
Y- M saturat ?
DA: z=x
1
; L=[x
4
y
3
, y
3
x
1
];
S ={ x
4
, x
1
}, T={ y
3
}

N(S) = T ?
NU : y = y
1
; L=[x
4
y
3
, y
3
x
1
,x
1
y
1
]
Y- M saturat ?
DA: z=x
3
; L=[x
4
y
3
, y
3
x
1
,x
1
y
1
,y
1
x
3
];
S ={ x
4
, x
1
,x
3
}, T={y
3
, y
1
}

N(S) = T ?
NU: y = y
2
; L=[x
4
y
3
, y
3
x
1
,x
1
y
1
,y
1
x
3
, x
3
y
2
]
Y- M saturat ?
DA: z=x
2
; L=[x
4
y
3
, y
3
x
1
,x
1
y
1
,y
1
x
3
,x
3
y
2
,y
2
x
2
];
S ={ x
4
, x
1
,x
3
,x
2
}, T={y
3
, y
1
,y
2
}

N(S) = T ?
NU: y = y
4
; L=[x
4
y
3
, y
3
x
1
,x
1
y
1
,y
1
x
3
, x
3
y
2
, y
2
x
2
,x
2
y
4
]
Y- M saturat ?
NU: M

= [x
4
y
3
, x
1
y
1
, x
3
y
2
, x
2
y
4
];
X saturat ?
DA : STOP

45




Observaie: Cuplajul perfect al grafului G nu este unic, depinde de cuplajul
iniial. Un alt exemplu de cuplaj perfect pentru G este :



4.1 Algoritmul Kuhn(1955)-Munkres(1957)

Introducere

Am vzut c algoritmul ungar ne rezolv problema determinrii unui cuplaj
perfect ntr-un graf bipartit, de exemplu cel al asocierii lucrtori-locuri de munc. Dar ce
s-ar ntmpla dac nu am reine numai pentru ce loc de munc este calificat fiecare
lucrtor , ci i gradul specializrii sale ? n aceast situaie putem modela problema cu
ajutorul unui graf bipartit ponderat. Astfel este definit o funcie pondere w: X Y R
+

care asociaz fiecrei muchii a grafului un numr real pozitiv(altfel spus, aceast funcie
ne indic gradul de pricepere al lucrtorului x
i
pentru locul de munc y
j
prin valoarea
w(x
i
,y
j
)). Observm c, fr a restrmge generalitatea, aceast problem poate fi modelat
cu ajutorul unui graf bipartit complet n care, dac lucrtorul x
i
nu este calificat pentru
locul de munc y
j
muchiei x
i
y
j
i vom asocia ponderea 0, n celelalte cazuri ponderea fiind
strict pozitiv.
46
O prim soluie a acestei probleme ar fi generarea tuturor celor n! cuplaje perfecte
ale grafului bipartit complet i selectarea unuia optim dintre acestea. Pentru valori mari
ale lui n aceast soluie este, n mod evident, total ineficient. Algoritmul Kuhn-Munkres
reprezint o variant de rezolvare a acestei probleme acceptabil din punctul de vedere al
complexitii.
Pentru a-l putea prezenta avem nevoie de urmtoarea:

Definiie: Fie G=(X U Y, E) un graf bipartit complet. Spunem c o funcie
l: X U Y R
+
este o etichetare valid a nodurilor grafului G dac oricare ar fi x
din X i y din Y este ndeplinit inegalitatea l(x)+l(y) w(xy). Numrul l(x) l vom numi
eticheta nodului x.

Se poate observa c o astfel de etichetare valid exist ntotdeauna , spre
exemplu :
l(x)= max
yY
w(xy), dac x X;
l(y)=0, dac x X; (4.1.1)
Pentru o etichetare valid l vom nota cu E
l
mulimea de muchii din G
pentru care are loc egalitatea l(x)+l(y) = w(xy): E
l
={xy E| l(x)+l(y) = w(xy) }; i cu G
l

graful generat de mulimea de muchii E
l
. Legtura ntre acest subgraf al grafului G i
determinarea unui cuplaj perfect optim este dat de urmtoarea:

4.1.2Teorem: Fie l o etichetare valid a grafului G. Dac G
l
conine un cuplaj
perfect M
*
, atunci M
*
este un cuplaj optim pentru graful G.
Demonstraie:
Presupunnd c G
l
conine un cuplaj perfect M
*
, cum V(M
*
) = V(G
l
)=V(G)
rezult c M
*
este un cuplaj perfect i pentru graful G, atunci w(M
*
)=
eM*
w(e). Dar
cum toate muchiile M
*
conin o singur dat toate nodurile grafului G i fiind din
graful G
l
, ponderea unei muchii este suma etichetelor extremitilor ei, rezult

eM*
w(e)=
vV*
l(v). n schimb, pentru un cuplaj perfect oarecare al grafului G are
loc relaia anterioar cu inegalitate : w(e) =
eM
w(e)
vV*
l(v). Comparnd obinem
c w(M
*
)w(M), deci M
*
este un cuplaj optim al grafului G.

47
Aceste rezultat mpreun cu algoritmul Ungar prezentat n seciunea
anterioar reprezint instrumentele ce stau la baza construirii algoritmului Kuh
Munkres.
Pentru a aplica algoritmul, alegem pentru nceput o etichetare valid l a
nodurilor grafului G(de exemplu, cea dat de 4.1.1), determinm graful asociat
acestei etichetri, G
l
i alegem un cuplaj arbitrar al acestuia,M. Pentru acest
cuplaj, aplicm algoritmul ungar n vederea determinrii unui cuplaj perfect n G
l
,
care, conform Teoremei 4.1.2 ar fi cuplaj optim n graful G, deci algoritmul se
ncheie. Dac, n schimb, nu exist un cuplaj perfect n graful G
l
, nseamn c,
aplicnd algoritmul ungar am ajuns n situaia N
Gl
(S)=T i, n acest caz, efectum
o reetichetare a nodurilor grafului G dup urmtoarea regul :
-- calculm
l
= min
xS, y T
{l(x)+l(y) - w(xy)};

--alegem etichetarea valid
l(v)
l
, dac v S

l

= l(v) +
l
, dac v T

l(v), altfel

-- determinm noul graf G
l
.

Aceste trei operaii asigur apariia n graful G
l
a unui nou nod
nesaturat al mulimii Y cu ajutorul cruia extindem cuplajul M la un nou cuplaj M,
dup care este reluat algoritmul, pn la obinerea cuplajului optim.
Pentru o mai bun nelegere a acestui algoritm ilustrm schema logic.
48

NU
Exist lan L=[z,..,y]
M-alternant deschis
DA
Exist yz M
Exist y N
Gl
\T

NU
Exist y N(S)\T
DA
NU
Exist z X M-
nesaturat?
DA
START
Etichetar
e
Determinarea G
l
, un
cuplaj M n G
l
Este x-M
saturat n
G
l
?
STOP
M este
cuplaj
optim
Sz
T
N(S)=T
Calculul
pentru

l
,l

,G
l

LL U zy
Este Y-
M
saturat
ll

G
l
G
l
LL U yz
SS U z
T T U y
M

= ME(L)
MM

49

Capitolul VI

Aplicaie

Fie G = (X,U), # X = n 3 un graf complet nesimetric i fr bucle i
x n ij
a A

= ) ( matricea valorilor arcelor corespunztoare grafului.
Se cere proiectarea unui algoritm care s execute operaiile:
a) s genereze matricea
n n ij
b B

= ) ( a valorilor AB minimale ale arcelor
grafului utiliznd elementele matricei
x n ij
a A

= ) ( .
b) Utiliznd elementele matricei
n n ij
b B

= ) ( anterior generate s se precizeze
un circuit hamiltonian minimal
h
c i lungimea sa
h
l (valoarea sa
minimal).
Pentru algoritmul proiectat s se scrie un program corespunztor.
Cazuri particulare:
S se exemplifice textul temei pentru G= (X,U), 7 # = X , n care matricea A
este:


0 49 26 78 52 39 87
28 0 36 53 44 68 61
31 29 0 42 49 50 38
52 38 47 0 67 75 82
51 83 51 22 0 37 71
62 93 54 69 38 0 26
58 66 76 41 52 83 0
A
| |
|
|
|
|
=
|
|
|
|
|
\ .


Descrierea algoritmului:
Elementele
n n ij
a A n

= > ) ( , 3 precizate, pentru generarea matricei
n n ij
b B

= ) ( a elementelor AB minimale asociate grafului G propunem un
algoritm care generalizeaz Algoritmul ungar. Dac p, o permutare {1,2, , n}
care se scrie sau nu ca un produs de transpoziii, atunci graful permutare G
p

50
asociat se numete cuplaj n graful G. Dac graful permutare G
p
are o valoare
extremal (minim sau maxim), atunci cuplajul respectiv se numete extremal.
Fiind dat graful G= (X,U), 3 # > = n X simetric sau nu, cu sau fr bucle i
x n ij
a A

= ) ( matricea valorilor arcelor corespunztoare grafului algoritmul ungar
i propune s precizeze un cuplaj extremal al grafului G. Pentru a face o alegere
vom descrie algoritmul ungar pentru generarea cuplajelor minimale. Algoritmul
ungar are urmtoarele faze:
Faza 1. Generarea matricei
n n ij lc
a A

= ) (
'
a zerourilor pe linii i coloane
corespunztoare arcelor grafului G. Dac graful nu are bucle n toate operaiile
care vor fi descrise pentru orice matrice ce intervine nu vor fi luate n considerare
elementele diagonalei principale; iar dac graful admite i bucle, elementele
dup diagonal corespunztoare buclelor vor fi luate n considerare.
Dac linia n i , 1 = a matricei A are toate elementele nenule, atunci din
fiecare element al liniei se scade elementul de valoare minim corespunztoare
liniei respective.
Procednd n mod analog pentru orice linie care are proprietatea enunat
la sfritul prelucrrii din matricea A se va obine A
l
a zerourilor pe linie asociat
grafului G. Aceast matrice are proprietatea c pe fiecare linie a sa exist cel
puin un element de valoare 0.
Dac n matricea A
l
pe fiecare coloan a sa exist cel puin un element de
valoare 0 atunci A
lc
= A
l
reprezint matricea zerourilor pe linii i pe coloane
asociate grafului G.
Dac n matricea A
l
exist cel puin o coloan n j , 1 = n care toate elementele
sunt nenule, atunci din elementele coloanei respective se va scade elementul de
valoare minim al coloanei respective.
Procednd n mod analog cu toate coloanele matricei A
l
care au
proprietatea enunat la sfritul prelucrrii din matricea A
l
se va obine matricea
A
lc
a zerourilor pe linii i pe coloane asociate grafului G. Dac graful G este
simetric, algoritmul se reia ncepnd cu Faza 3, iar n caz contrar, se continu cu
Faza 2.
51
Faza 2. Generarea matricei
n n ij cl
a A

= ) (
2
a zerourilor pe coloane i pe linii
asociate matricei
c
A . Dac n j , 1 e este o coloan arbitrar a matricei A ale crei
elemente sunt toate nenule, atunci din elementele coloanei j se scade
elementul de valoare minim corespunztor coloanei.
Procednd n mod analog cu elementele oricrei coloane a matricei A care
au proprietatea enunat la sfritul prelucrrii, din matricea A se va obine
matricea A
c
a zerourilor pe coloane asociate grafului G. Matricea A
c
are
proprietatea c pe fiecare coloan a sa exist cel puin un element de valoare 0.
Dac pe fiecare linie a matricei A
c
exist cel puin un element de valoare 0,
atunci A
cl
= A
c
reprezint matricea zerourilor pe coloane i pe linii
corespunztoare grafului G. Dac n matricea A
c
exist cel puin o linie n i , 1 e
care are toate elementele nenule, atunci din elementele liniei i se scade
elementul de valoare minim corespunztor liniei respective. Procednd n mod
analog cu toate elementele matricei A
c
care au proprietatea enunat la sfritul
prelucrrii, din matricea A
c
se va obine matricea A
cl
a zerourilor pe coloane i pe
linii corespunztoare grafului G.
Faza 3. Generarea matricei
n n ij z
a A

= ) (
0
a zerourilor grafului G. Dac graful G
este simetric atunci j i a a a
ji ij ij
= = }, , min{
1 1 0
. Dac graful G este nesimetric,
atunci j i a a a
ij ij ij
= = }, , min{
2 1 0
. La sfritul execuiei acestor operaii se va obine
matricea
n n ij z
a A

= ) (
0
a zerourilor grafului G. Matricea A
z
anterior generat are
proprietatea c pe fiecare linie i pe fiecare coloan a sa exist cel puin un
element de valoare 0.
Faza 4. Generarea unui cuplaj minim. Cu ajutorul elementelor matricei A
z
se
caut cuplajele de valoare minim; ntr-un astfel de cuplaj trebuie s apar ct
mai multe arce ale grafului crora n matricea A
z
le corespund elemente egale cu
0.
Dac } max{ A a b
ij
e = , j i a b a
ij ij
= = , , ' '- =
ii
a , atunci aplicnd
algoritmul ungar anterior descris pentru
n n ij
a A

= ) ( la sfritul prelucrrii vor fi
precizate cuplajele maximale corespunztoare grafului G. Algoritmul pe care-l
propunem const n urmtoarele:
52
Se genereaz irul (l
1
, , l
n
) n care l
i
, n i , 1 = este cel mai mic element al
liniei i i irul (c
1
, , c
n
) n care c
j
, n j , 1 = reprezint cel mai mic element al
coloanei j din matricea A.
Fie }} , 1 / max{ }, , 1 / max{max{ n j c n i l m
j i
= = = . n matricea A exceptnd
eventual diagonala principal, toate elementele sale mai mici sau egale cu m vor
fi marcate cu A, din elementele strict mai mari dect m se va scade valoarea m.
La sfritul prelucrrii, din matricea A se va obine matricea A
l
. Dac n matricea
A
l
pe fiecare linie i pe fiecare coloan a sa exist cel puin dou elemente
marcare cu A atunci B = A
l
reprezint matricea valorilor ABminimale asociate
grafului G. n caz contrar, utiliznd elementele nemarcate cu A ale matricei A
l

se genereaz irul (l
1
, , l
n
) n care l
i
, n i , 1 = este cel mai mic element
nemarcat al liniei i din matricea A
l
i irul (c
1
, , c
n
) n care c
j
, n j , 1 = este cel
mai mic element nemarcat al coloanei j din matricea A
l
.
Fie }} , 1 / ' max{ }, , 1 / ' max{max{ ' n j c n i l m
j i
= = = . n matricea A
l
nlocuind toate
elementele nemarcate cu A i care sunt mai mici sau egale dect m cu B i
din elementele nemarcate cu A i care sunt strict mai mari dect m scznd m
la sfritul prelucrrii din matricea A
l
se va obine matricea
n n ij
b B

= ) (
elementelor ABminimale asociate grafului G.
Pentru generarea unui circuit hamiltonian minimal asociat grafului G se
scrie matricea latin corespunztoare elementelor marcate cu A din matricea
anterior generat ) ( A M
L
. Utiliznd elementele matricei ) ( A M
k
L
se determin
toate drumurile avnd aceeai lungime maxim n k s . Dac nici unul din
drumurile generate nu reprezint un circuit hamiltonian se completeaz fiecare
dintre aceste drumuri pn la obinerea unui circuit cu arce ale grafului G crora
n matricea B anterior generat le corespund elemente marcate cu B. Din
mulimea circuitelor hamiltoniene astfel generate se aleg circuitele hamiltoniene
care au aceeai valoare minimal l
h
. Acestea vor fi circuitele hamiltoniene
minimale asociate grafului G.
53
Pentru generarea circuitelor hamiltoniene maximale asociate grafului G se
aplic algoritmul anterior descris pentru elementele matricei
n n ij
a A

= ) ( anterior
precizate.
Cazuri particulare:
0 49 26 78 52 39 87
28 0 36 53 44 68 61
31 29 0 42 49 50 38
52 38 47 0 67 75 82
51 83 51 22 0 37 71
62 93 54 69 38 0 26
58 66 76 41 52 83 0
A
| |
|
|
|
|
=
|
|
|
|
|
\ .


A
l
:

1 2 3 4 5 6 7
1 - B A 26 B A 35
2 A - A 1 B 16 9
3 A A - B B B A
4 B A B - 15 23 30
5 B 31 B A - A 19
6 10 41 2 17 A - A
7 6 14 24 A B 31 -


m = 41
m= 52
d
h
= (5, 4, 2, 3, 1, 6, 7)
l(d
h
) = A + A + A + A + A + A + A
c
h
= (5, 4, 2, 3, 1, 6, 7, 5) l
h
= 6A + B = 224

Programul C:

#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>

54
#define MAXN 100

typedef struct
{
int n;
int a[MAXN][MAXN];
}matrice;
typedef struct l
{
int a[MAXN];
struct l *next;
}list;

typedef list *plist;

typedef struct
{
int n,k;
plist a[10][10];
}ML;

typedef ML *pML;

void ScadeM(matrice *b,int ml,int do_it,int A)
{
int i,j;

for(i=0;i<b->n;i++){
for(j=0;j<b->n;j++){
if(b->a[i][j]<=0)continue;
if(b->a[i][j]<=ml)
b->a[i][j]=A;
else
if(do_it)
b->a[i][j]-=ml;
}
}
}

void PuneLitera(matrice *b,int A,int *k)
55
{
int i,j,ml,mc,m1,m2,p1,p2;

ml=mc=b->a[0][1];
p1=p2=0;
for(i=0;i<b->n;i++){
m1=b->a[i][(i+1)%b->n];

m2=b->a[(i+1)%b->n][i];
for(j=0;j<b->n;j++){
if(b->a[i][j]<=0)continue;
if(b->a[i][j]<m1){
m1=b->a[i][j];
p1=i;
}
if(b->a[j][i]<m2){
m2=b->a[j][i];
p2=i;
}
}
if(ml<m1)
ml=m1;
if(mc<m2)
mc=m2;
}

if(ml<mc){
ml=mc;
*k=-1;
for(i=0;i<b->n;i++)
if((*k==-1)||
((*k>b->a[i][p1])&&(b->a[i][p1]>ml))){
*k=b->a[i][p1];
}
}else{
*k=-1;
for(i=0;i<b->n;i++)
if((*k==-1)||
((*k>b->a[p2][i])&&(b->a[p2][i]>ml))){
*k=b->a[p2][i];
56
}
}
ScadeM(b,ml,0,A);
}

int CelPutin2A(matrice *b,int A)
{
int i,j,p,q;

for(i=0;i<b->n;i++){
p=q=0;
for(j=0;j<b->n;j++){
if(b->a[i][j]==A)
p++;
if(b->a[j][i]==A)
q++;
}
if((p<2)||(q<2))
return(0);
}
return(1);
}

void CopyMatrix(matrice *a,matrice *b)
{
*b=*a;
}

void die(char *s)
{
printf("%s",s);
exit(1);
}

void PuneSimplu(int i,int j,list **a)
{
list *b;
if(*a!=NULL){
fprintf(stderr,"Hmm, matricea contine deja elemente?\n");
return;
57
}
b=(list *)malloc(sizeof(list));
if(!b){
die("Memorie insuficienta\n");
}
b->next=(*a);
b->a[0]=i;
b->a[1]=j;
*a=b;
}

void GenerareML(matrice *a,ML *m)
{
int i,j;
for(i=0;i<a->n;i++){
for(j=0;j<a->n;j++){
if(a->a[i][j]){
PuneSimplu(j,i,&m->a[i][j]);
}
}
}
}

void GenerareDupaA(matrice *b,ML *m,int A)
{
int i,j;
matrice a;

CopyMatrix(b,&a);

for(i=0;i<a.n;i++)
for(j=0;j<a.n;j++)
if(a.a[i][j]!=A)
a.a[i][j]=0;
else
a.a[i][j]=1;
GenerareML(&a,m);
}

void Citire(matrice *a)
58
{
int i,j;

printf("n=");
scanf("%d",&a->n);
for(i=0;i<a->n;i++)
for(j=0;j<a->n;j++)
{
printf("matrice[%d][%d]=",i,j);
scanf("%d",&a->a[i][j]);
}
}

void TiparireML(ML *m)
{
int i,j,k,p;
list *a;
for(i=0;i<m->n;i++){
for(j=0;j<m->n;j++){
if(m->a[j][i]){
p=0;
for(a=m->a[j][i];a!=NULL;a=a->next){
if(a->a[0]<0)continue;
if(!p){
printf("[%d,%d]\n",j,i);
p=1;
}
printf("(");
for(k=0;k<m->k;k++){
printf("%d ",a->a[k]+1);
}
printf(")\n");
}
}
}
}
}

int LungimeDrum(int *b,int n, matrice *a)
{
59
int s=0,i;

for(i=0;i<n-1;i++)
s+=a->a[b[i+1]][b[i]];

if(n>0)
s+=a->a[b[0]][b[n-1]];
return(s);
}

int MinimalML(ML *m,matrice *a)
{
int i,j,k;
int min=-1;
list *q;
for(i=0;i<a->n;i++)
for(j=0;j<a->n;j++)
if(m->a[i][j]!=NULL){
for(q=m->a[i][j];q!=NULL;q=q->next){
k=LungimeDrum(q->a,m->n,a);
if((k<min)||(min==-1))
min=k;
}
}

for(i=0;i<a->n;i++)
for(j=0;j<a->n;j++)
if(m->a[i][j]!=NULL){
for(q=m->a[i][j];q!=NULL;q=q->next)
if((k=LungimeDrum(q->a,m->n,a))>min){
q->a[0]=-1;
}
}
return(min);
}

void AdaugaDirect(list *p,int kp,list *q,int kq,ML *c)
{
int i,j;
list *z;
60
if(((kp>1)&&(p->a[0]==p->a[kp-1]))||
((kq>1)&&(q->a[0]==q->a[kq-1])))
return; /* adugam un ciclu la ceva... */
if(q->a[0]!=p->a[kp-1]){
return;
}
for(i=1;i<kq-1;i++){
for(j=0;j<kp;j++){
if(p->a[j]==q->a[i]){
return;
}
}
}
for(j=1;j<kp;j++){
if(p->a[j]==q->a[kq-1]){
return;
}
}
z=(list *)malloc(sizeof(list));
if(!z){
die("Memorie insuficienta\n");
}
for(i=0;i<kp;i++){
z->a[i]=p->a[i];
}
for(i=1;i<kq;i++){
z->a[kp+i-1]=q->a[i];
}
z->next=c->a[q->a[kq-1]][p->a[0]];
c->a[q->a[kq-1]][p->a[0]]=z;
}

void Adaugare(list *p,int i,int k,ML *b,ML *c)
{
int j;
list *q;
for(j=0;j<b->n;j++){
if(b->a[j][i]){
for(q=b->a[j][i];q!=NULL;q=q->next){
AdaugaDirect(p,k,q,b->k,c);
61
}
}
}
}

void Inmultire(ML *a,ML *b,ML *c,int skip)
{
int i,j;
list *p;
for(i=0;i<a->n;i++){
for(j=0;j<a->n;j++){
if(((!skip)||(skip && i!=j))&&(a->a[i][j]!=NULL)){
for(p=a->a[i][j];p!=NULL;p=p->next){
Adaugare(p,i,a->k,b,c);
}
}
}
}
}

ML* InitML(ML **m,int n,int k)
{
int i,j;
(*m)=malloc(sizeof(ML));
if(!(*m)){
die("Memorie insuficienta!\n");
}
(*m)->n=n;
(*m)->k=k;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
(*m)->a[i][j]=NULL;
}
}
return(*m);
}

void PuteriML(ML *m,int n,ML *q[MAXN],int skip)
{
int i;
62
q[0]=m;
for(i=1;i<n;i++){
InitML(&q[i],n,i+2);
Inmultire(q[i-1],m,q[i],skip);
}
}

int VidML(ML *a)
{
int i,j;
for(i=0;i<a->n;i++){
for(j=0;j<a->n;j++){
if(a->a[i][j]!=NULL)
return(0);
}
}
return(1);
}

void Tiparire(matrice *a)
{
int i,j;

for(i=0;i<a->n;i++){
for(j=0;j<a->n;j++){
if(a->a[j][i]>=0)
printf("%4d ",a->a[j][i]);
else
printf("%4c ",(-1*a->a[j][i])+'A'-1);
}
printf("\n");
}
}

int main(void)
{
matrice a,b;
ML *m[MAXN];
ML *q,*r;
int k;
63

Citire(&a);
CopyMatrix(&a,&b); /* b e matricea "curata" */

PuneLitera(&a,-1,&k);
if(!CelPutin2A(&a,-1)){
ScadeM(&a,k,1,-2);
}
printf("Matricea elementelor AB minimale asociate grafului G este:\n");
Tiparire(&a);

m[0]=InitML(&m[0],a.n,2);
GenerareDupaA(&a,m[0],-1);
PuteriML(m[0],a.n,m,0);

printf("Circuitele hamiltoniene minimale sunt:\n");
if(!VidML(m[a.n-1])){
TiparireML(m[a.n-1]);
printf("Lh=%d\n",MinimalML(m[a.n-1],&b));
}else{
/* nu avem circuite numai cu A, deci luam drumurile cu A */
/* mai mult, matricea latina [n-2] nu contine elemente pe
diagonala */
/* determinam matricea latina cu elemente B */
InitML(&q,a.n,2);
GenerareDupaA(&a,q,-2);

InitML(&r,a.n,a.n+1);

Inmultire(m[a.n-2],q,r,1);
k=MinimalML(r,&b);
TiparireML(r);
printf("Lh=%d\n",k);
}

return 0;
}



64







Concluzii

Lucrarea a avut ca principal scop prezentarea unor noiuni de teoria grafurilor, cu
accent pe cuplaje. .Aceast problem are numeroase aplicaii practice , enumernd mai jos
doar o parte dintre ele:

Analiza 2D i 3D a imaginilor
Procesarea documentelor
Identificarea Biometric
Baze de date pentru imagini
Analiz Video
n aceast lucrare s-au prezentat cele mai importante teoreme din acest subcapitol
al Teoriei Grafurilor ntr-un mod ct mai natural i direct.
Am evideniat o metod de caracterizarea a cuplajelor maximale prin Teorema lui
Berge, am descoperit o metod necesar i suficient de caracterizare a unui cuplaj
perfect ntr-un graf bipartit i am tratat problema cuplajelor perfecte n cteva grafuri
oarecare.
Toate aceste teoreme au avut scopul de a pregti suportul teoretic necesar
nelegerii algoritmului ungar i al algoritmului Kuhn-Munkers, lucrarea practic
culminnd cu acestea.
Tema Cuplajelor n Grafuri nu a fost atins ndeajuns n aceast lucrare ntruct
aplicaiile i suportul teoretic al acestui subcapitol sunt prea vaste pentru a fi cuprinse
ntr-o singur lucrare.
65
Teza se constituie ntr-o foarte bun metod de iniiere n acest domeniu i dorete
s instige cititorul la a afla mai mult, mult mai mult, rspunsurile din lucrare fiind o baz
buna pentru alte ntrebri.





Bibliografie



[1] Drago-Radu Popescu Combinatoric i Teoria Grafurilor, Societatea de
tiine Matematice din Romnia 2005
[2]J. A. Bondy and U. S. R. Murty, Graph Theory With Applications
[3]C. Croitoru Algoritmica Grafurilor, Ediia 2006
[4]Reinhald Diestel Graph Theory, Electronic Edition 2005
[5]Ioan Tomescu, Combinatoric i Teoria Grafurilor,1978.
[6]http://www.leda-tutorial.org/
[7] Popescu Rozica-Maria, Lecii complementare de teoria grafurilor
[8] http://www.britannica.com/

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