cuplaj maxim de valoare minima intr-un graf bipartit
TRANSCRIPT
-
8/12/2019 Cuplaj MAXIM de Valoare Minima Intr-un Graf Bipartit
1/3
G I n f o n r .
1 5 / 3 - m a r t
i e 2 0 0 5
38
f o c u s
Un fel de cupluri...
CuplajMAXIM
de valoareMINIM ntr-un GRAFBIPARTIT
Ilie Vieru
n cadrul acestui articol vom prezenta un algoritm interesant pentrudeterminarea cuplajului maxim de cost minim ntr-un graf bipartit. nmomentul de fa algoritmul este sub tipar i la prestigioasa revistMathematics Magazine.
Sunt cunoscute problemele n care sesolicit asocierea optim a elemente-lor unei mulimi A = {a1, a2, ...,an} cuelementele mulimiiB= {b1, b2, ...,bm}, n condiiile unor limitri ale posibi-litilor de asociere.
n general, fiecare asociere posi-bilai b j aduce un anumit efect(cost, profit etc.) pe care l presupu-nem cunoscut.
Limitrile asupra asocierilor n-seamn: un elementai din A poate fi asociat
doar cu anumite elemente dinB ireciproc;
n final, fiecrui element din A i s-aasociat cel mult un element dinB ireciproc.
Asocierea optim nseamn gsi-rea unui cuplaj maxim ntr-un graf bipartit i presupune, de obicei, douobiective: s se determine maximul de asocieri; suma efectelor asocierilor s fie op-
tim (maxim sau minim).
Dintre problemele practice carese reduc la a determina un cuplaj ma-xim de valoare optim, amintim [1]:
repartizarea muncitorilor unei sec-ii pe utilaje n funcie de pregtireai preferinele muncitorilor dar ide complexitatea mainilor;
repartizarea angajailor pe posturi; formarea grupelor de lucru dup afi-
nitile dintre membrii colectivului; transferarea unor informaii ntr-un
grup.
ObservaiePresupunem cunoscute definiiile cuprivire la graf bipartit, cuplaj, cuplajmaxim, valoarea cuplajului([1], [2],[4]).
n anul 1931 Kniga formulatteorema prezentat n continuare.
TeoremNumrul maxim de muchii ale unuicuplaj ntr-un graf bipartitG = ( A B, U ) este .
n anul 1955, bazndu-se pe teo-rema lui Knig, H.W. Kuhna elabo-rat un algoritm cunoscut sub denu-mirea dealgoritmul ungar cu ajuto-rul cruia se poate determina un cu-plaj maxim de valoare minim ntr-un
graf bipartit pentru | A| = |B| =n. Else bazeaz pe observaia prezentat n continuare.
ObservaieDac se adun (sau se scade) acelainumr la toate valorile muchiilor,atunci nu se schimb ierarhia cupla- jelor maxime.
Algoritmul pornete de la matri-cea ptratic , unde:
Acest algoritm, este laborios, greude implementat, dei are complexita-te polinomial ([1]).
Pentru determinarea cuplajuluibipartit maxim se poate folosi i me-toda Ford-Fulkersonpentru grafulbipartitG = ( X = A B, U ), ntr-untimp polinomial n | X | i |U |.
Soluia const n construirea uneireele de transport n care fluxurilereprezint cuplajele.
Graful iniial se completeaz cu nc dou vrfuris (sursa) it (desti-
=
].,[muchiaexistnudac,];,[muchiaexistdac
],,[muchieivaloarea
ji ji
jimij
( ) n jiijmM = ,1
( )( )C U C A AC
+
min
-
8/12/2019 Cuplaj MAXIM de Valoare Minima Intr-un Graf Bipartit
2/3
f o c u s
GI nf onr .1
5 / 3 -m ar t i e2
0 0 5
39
naia), legate de vrfurile din A, res-pectivB ca n exemplul de la p. 517din [2].
Se presupune c fiecare muchieare o capacitate pozitiv. n acest con-text se aplic algoritmul Ford-Fulker-sonobinndu-se soluia optim.
n continuare v propun un algo-ritm original, rapid i foarte uor deimplementat. Pentru aceasta pornimde la cteva elemente de algebrsuperioar. Se tie c pentru a calculavaloarea determinantului asociat uneimatrice avem formula:
unde reprezintsignaturapermutrii, iar fiecare din termeniisumei reprezint cte un produs cunelemente ale matricei A, n aa fel n-ct ele epuizeaz toate liniile i toatecoloanele matricei.
Cu alte cuvinte, nu exist n niciun termen al sumei doi factori aflaipe aceeai linie sau aceeai coloan amatricei.
Presupunem mai nti c avem| A| = |B| =n. n acest caz va trebui sdeterminm ntr-un mod asemntordefiniiei prezentate anterior terme-nul de va-loare minim, reinnd n acelai timpi permutarea care l-a generat.
Introducem notaia:
Astfel putem scrie expresia:
Cu alte cuvinte, Ak+1se obinedin Ak prin bordare la dreapta i joscu elementele corespunztoate coloa-neik + 1, respectiv ale linieik + 1.
Atam matricei An vectorul dedecizie , cu semnificaia:
d i = j0 unde aij0 reprezint termenulde pe liniai ales la un pask (1 i, j0 k) n sumaSn, i k n. De aseme-nea, construim vectorul ,
care memoreaz permutarea inversataat permutriid , adicvd i = i, saud v j = j (1 i, j0 k).
Iterativ construim: A1 = (a11);d 1 = 1;S1 =a11; v1 = 1.Presupunem construite cele patru
iruri pn n pasulk, k 1.Pentru pasulk + 1 ntreaga con-
strucie urmrete: obinerea elementuluiSk+1 cu valoa-
re minim, n sensul definiiei, cutermeni din matricea Ak+1folosindrezultatele obinute pn la pasulk;
actualizarea vectorilor (d 1, d 2, ...,d k),respectiv (v1, v2, ...,vk).
La acest pas se disting trei situaii: laSk se adaugak+1,k+1, caz n careefectum urmtoarele operaii:Sk+1=Sk +ak+1,k+1; d k+1= 1;vk+1= 1.
Sk+1se formeaz adugnd termeniiai,k+1i ak+1, j pentru care avemd i = j,caz n care efectum operaiile:Sk+1=Sk - aij +ai,k+1+ak+1, j; d i =k + 1;d k+1= j; vk+1= i;v j =k + 1.
Sk+1se formeaz adugnd termeniiai,k+1i ak+1, j pentru care avemd i j,caz n care se efectueaz operaiile:Sk+1=Sk - ai,d i - av j, j +av j,d i +ai,k+1+ak+1, j; d v j =d i;vd i =v j; d i =k + 1;vk+1= i; d k+1= j; v j =k + 1.
n finalSn reprezint valoarea mi-nim a cuplajului maxim: (1,d 1), ...,(n, d n).
Pentrun = | A| < |B| = m, algorit-mul parcurge urmtorii pai: se aplic algoritmul anterior i se
determinSn, d n, vn; pentru valorile j cuprinse ntren + 1
i m avem dacl i0 < 0, atunci se efectueaz urmtoa-rele actualizriSn =Sn + l i0; d i0 = j.
ObservaieSoluia se exprim la fel ca n cazulalgoritmului prezentat anterior (cndmulimile A i Bau acelai numr deelemente).
Pentrun = |B| < | A| = m, algorit-mul parcurge urmtorii pai: se aplic algoritmul anterior i se
determinSn, d n, vn; pentru valorilei cuprinse ntren + 1
im avem dac
l j0 < 0, atunci se efectueaz urmtoa-
rele actualizriSn =Sn + l j0; d v j0 = 0;v j0 = i;d i = j0.
Observaien acest caz, la afiarea vectorului dedecizii ([3]), se poate parcurge irulpe coloane: (v1, 1), ..., (vn, n), sau seselecteaz acele linii, cresctor dupi, pentru cared i > 0.
Algoritmul urmrete la fiecarepask optimizarea funciei obiectivi de aceea putem spune c se nca-
dreaz n strategia generalGreedy.Urmrind etapele prezentate, sepoate demonstra, folosind cunotinede nivelul clasei a XI-a teorema careurmeaz.
TeoremAlgoritmul prezentat determin uncuplaj maxim cu valoare minim.
ExempluLa o secie au fost angajai ase lu-crtori pentru a lucra pe ase maini.
n urma unor probe de lucru s-audeterminat numereleaij care repre-zint riscul pe care i-l asum patro-nul angajnd lucrtoruli pentru alucra pe maina j.
Rezultatele au fost nregistrate nmatricea urmtoare:
Ne propunem s determinmrepartizarea optim a angajailor pecele ase maini astfel nct riscul to-tal s fie minim.
Pentru aceasta vom aplica algo-ritmul prezentat, artnd valorile ob-inute la fiecare pas.
.
501344184425 604036384115
64731861458701612629018132390692429523914274317
=k A
;min ,,10 jv jini j jaal =
{ ;min ,,10 id i jinii aal =
( ) niivv = 1
( ) niid d = 1
.|\|
1,11,1
1,1
1
=+++
++
kkk
kk
k
aa
a A A
.
21
22221
11211
=
kkkk
k
k
k
aaa
aaaaaa
A
L
MOMM
L
L
( ) ( ) ( )nndef
n aaaS ,2,21,1 L=
( ) ( ) m1
( ) ( ) ( ) ( ) ( ),1 ,2,21,1
=nS
nnm
def
aaa A
L
( ) n jiija A = ,1
-
8/12/2019 Cuplaj MAXIM de Valoare Minima Intr-un Graf Bipartit
3/3
G I n f o n r .
1 5 / 3 - m a r t
i e 2 0 0 5
40
f o c u s
Pasul #1
S1 = 17; d 1 = 1; v1 = 1.
Pasul #2
S2 =S1 +a22= 41; d 2 = 2; v2 = 2.
Pasul #3
S3 =S2 +a13+a31- a11= 69; d 1 = 3; v1 = 3; v3 = 1; d 3 = 1.
Pasul #4
S4 =S3 +a14+a43- a13= 62; d 1 = 4; v4 = 1; d 4 = 3; v3 = 4.
Pasul #5
S5 =S4 +a14+a43- a13= 75; d 3 = 5; v5 = 3; d 5 = 1; v1 = 5.
Pasul #6
S6 =S5 +a26+a63- a22- a43+a42= 90;
d 2 = 6; v6 = 2; d 4 = 2; v2 = 4; d 6 = 3; v3 = 6.
Rezultatuln final vom obine:
Aadar, ordinea lucrtorilor pemaini va fi: (1, 4), (2, 6), (3, 5), (4,2), (5, 1),(6, 3).
AplicaieAcest algoritm poate fi utilizat pen-tru a rezolva problemaCulori , pro-pus spre rezolvare la runda #04 aediiei 2004/2005 a concursului deprogramareBursele Agora.
Bibliografie:1.E. Tignescu, D. Mitru, Bazele
cercetrii operaionale, EdituraAcademiei de Studii Economice,Bucureti, 1999;
2.T. H. Cormen, C. E. Leiserson, R.R. Rivest, Introducere n algo-ritmi, Editura Computer LibrisAgora, Cluj-Napoca, 2000;
3.I. Vieru, Rolul deciziei n progra-marea dinamic , GInfo 10/3, Edi-tura Agora Media, Trgu Mure,2000;
4.I. Tomescu, Combinatoric iteoria grafurilor , Editura Universi-tii Bucureti, 1978.
.
5013444425606470
52
40363841791861458
126290182390692939274317
18
13
15
1624
14
= A
;
5013441844256064701352
4036384179181458
126290182390692939274317
156
1624
14
6
= A
;
403638411579181458
161262902390692939274317
6
2414
185
= A
;
1861458126290906929144317
1824
27
4
= A
;62901869292743
2417
3
= A
;242943172 = A
( );171 = A xemplu d e i mplementare
voi d cal cul ( ) {d[1] = 1;v[1] = 1;s = a[1] [ 1] ;
f or ( k = 2; k = a[k ] [k ] ) {s += a[k][ k] ;d[k ] = k;v[k ] = k;
}el se {
s += l i 0;i f ( c0 == j 0) {
d[ i 0] = k;d[k] = c0;v[c0] = k;v[ k] = i 0;
}el se {
d[ i 0] = k;v[ k] = i 0;d[u0] = j 0;v[ j 0] = u0;d[k ] = c0;
v[c0] = k;}}
}
pr i nt f (" S= %d\ n" , s ) ;f or ( i = 1; i