Sunteți pe pagina 1din 6

ALGORITMUL UNGAR (KUHN)

Problemele de repartiie sunt probleme n care se urmrete cuplarea a p subieci cu q subieci, iar rezolvarea unei probleme de repartiie const n determinarea cuplajului maxim care se face cu ajutorul algoritmului ungar. Acesta cuprinde 6 etape: 1) Se formeaz matricea C ptratic de ordinul p dac p > q i de ordinul q dac p < q. 2) Obinerea de zerouri. Se scade minorantul fiecrei linii din toate elementele liniei respective obinnd astfel cel puin cte un 0 pe fiecare linie a matricei C. Dac n urma acestei operaii exist coloane care nu conin 0, se scade minorantul fiecrei coloane n cauz din toate elementele coloanei respective. Se obine astfel cel puin cte un 0 pe fiecare linie i coloan a matricei C. 3) n matricea C1 obinut din matricea C dup parcurgerea etapei a doua se caut un cuplaj maxim prin operaia de ncadrare i barare de zerouri astfel: - se ncadreaz un 0 situat pe linia cu cele mai puine zerouri i se bareaz (taie) toate celelalte zerouri aezate pe linia i coloana zeroului ncadrat; - se repet aceast operaie pn cnd toate zerourile matricei C1 au fost ncadrate sau barate. Dac se obine cte un 0 ncadrat pe fiecare linie i coloan, s -a obinut cuplajul maxim. n caz contrar se trece la etapa urmtoare. 4) Cutarea unui cuplaj maxim printr-o marcare a liniilor i coloanelor astfel: - se marcheaz liniile care nu conin nici un 0 ncadrat; - se marcheaz coloanele care conin zerouri tiate pe liniile deja marcate; - se marcheaz liniile care conin un 0 ncadrat pe coloanele deja marcate; - se repet aceste operaii pn cnd nu mai este posibil s se obin alte linii sau coloane marcate. 5) n matricea C1 se taie toate liniile nemarcate i coloanele marcate. Minorantul elementelor rmase netiate se adaug elementelor dublu tiate, se scade din elementele netiate, lsnd neschimbate elementele simplu tiate. Se obine o nou matrice C2. 6) Pe matricea C2 se repet procedeul de ncadrare i tiere a zerourilor. Se procedeaz n continuare aa cum s-a artat mai sus, pn cnd se obine cte un 0 ncadrat pe fiecare linie i coloan, deci se obine cuplajul maxim. Soluia optim poate s nu fie unic.

Aplicaie 1. Se consider 4 beneficiari care urmeaz s se aprovizioneze cu marf de la 7 centre de distribuie. Distanele de transport (n km) sunt date n tabloul urmtor. S se determine repartiia optim a beneficiarilor pe centre de distribuie creia i corespunde o distan total de transport minim cu condiia ca fiecare beneficiar s aprovizioneze cel puin de la un centru i cel mult de la dou.
Centre Beneficiari

x1 x2 x3 x4

y1 3 4 4 5

y2 5 6 7 8

y3 2 2 3 3

y4 7 6 8 8

y5 4 5 5 5

y6 6 7 8 7

y7 6 8 7 5

Rezolvare: Se formeaz o matrice ptratic adugnd 3 beneficiari fictivi (x5, x6, x7).
Centre Beneficiari

x1 x2 x3 x4 x5 x6 x7

y1 3 4 4 5 0 0 0

y2 5 6 7 8 0 0 0

y3 2 2 3 3 0 0 0

y4 7 6 8 8 0 0 0

y5 4 5 5 5 0 0 0

y6 6 7 8 7 0 0 0

y7 6 8 7 5 0 0 0

Minorantul

2 2 3 3 0 0 0

Se scade pe linie din fiecare element al liniei i se obine matricea C1.


Centre Beneficiari

x1 x2 x3 x4 x5 x6 x7

y1 1 2 1 2 0 0 0

y2 3 4 4 5 0 0 0

y3 0 0 0 0 0 0 0

y4 5 4 5 5 0 0 0

y5 2 3 2 2 0 0 0

y6 4 5 5 4 0 0 0

y7 4 6 4 2 0 0 0

Exist pe fiecare linie i coloan cel puin cte un 0, aa c se poate trece la ncadrarea i tierea zerourilor.

Centre Beneficiari

Y1 1 2 1 2 0 0 0

y2 3 4 4 5 0 0 0

y3 0 0 0 0 0 0 0

y4 5 4 5 5 0 0 0

y5 2 3 2 2 0 0 0

y6 4 5 5 4 0 0 0

y7 4 6 4 2 0 0 0

x1 x2 x3 x4 x5 x6 x7

Pentru c pe liniile 2, 3, 4 i pe coloanele 5, 6, 7 nu se gsete nici un 0 ncadrat, se continu algoritmul cu marcarea liniilor i coloanelor.
Centre Beneficiari

y1 1 2 1 2 0 0 0

y2 3 4 4 5 0 0 0

y3 0 0 0 0 0 0 0

y4 5 4 5 5 0 0 0

y5 2 3 2 2 0 0 0

y6 4 5 5 4 0 0 0

y7 4 6 4 2 0 0 0

x1 x2 x3 x4 x5 x6 x7

Minorantul elementelor rmase netiate este 1. El se adaug elementelor dublu tiate, se scade din elementele netiate, lsnd neschimbate elementele simplu tiate.


Centre Beneficiari

y2 2 3 3 4 0 0 0 y3 0 0 0 0 1 1 1 y4 4 3 4 4 0 0 0 y5 1 2 1 1 0 0 0 y6 3 4 4 3 0 0 0 y7 3 5 3 1 0 0 0

y1 0 1 0 1 0 0 0

x1 x2 x3 x4 x5 x6 x7

Minorantul elementelor rmase netiate este 1. El se adaug elementelor dublu tiate, se scade din elementele netiate, lsnd neschimbate elementele simplu tiate.
Centre Beneficiari

y1 0 1 0 1 1 1 1

y2 1 2 2 3 0 0 0

y3 0 0 0 0 2 2 2

y4 3 2 3 3 0 0 0

y5 0 1 0 0 0 0 0

y6 2 3 3 2 0 0 0

y7 2 4 2 0 0 0 0

x1 x2 x3 x4 x5 x6 x7

n matricea de mai sus pe fiecare linie i pe fiecare coloan exist cte un 0 ncadrat, deci cuplajul este maxim. Soluia optim gsit este: x1 y1 x2 y3 x3 y5 x4 y7 x5 y2 x6 y4 x7 y6 De la centrele y2, y4 i y6 se aprovizioneaz beneficiari fictivi (x5, x6, x7). De la aceste centre va trebui s se aprovizioneze beneficiari reali (x1, x2, x3, x4). Vom forma o matrice ptratic, introducnd un depozit fictiv.

Centre Beneficiari

x1 x2 x3 x4

y2 5 6 7 8

y4 7 6 8 8

y6 6 7 8 7

y8 0 0 0 0

Minorantul fiecrei linii este 0. Pe fiecare linie se gsete cte un 0, ns pe primele 3 coloane nu se gsete nici un 0. Minorantul acestor coloane este, n ordine: 5, 6, 6. Acesta se scade din coloana pe care se afl.
Centre Beneficiari

x1 x2 x3 x4

y2 0 1 2 3

y4 1 0 2 2

y6 0 1 2 1

y8 0 0 0 0

n matricea de mai sus avem pe fiecare linie i coloan cel puin un 0. Se trece la ncadrarea i bararea zerourilor.
Centre Beneficiari

y2 0 1 2 3

y4 1 0 2 2

y6 0 1 2 1

y8 0 0 0 0

x1 x2 x3 x4

Linia a IV-a i coloana a III-a nu conin nici un 0 ncadrat, se trece aadar la marcarea liniilor i coloanelor. y8 0 0 0 0

Centre Beneficiari

y2 0 1 2 3

y4 1 0 2 2

y6 0 1 2 1

x1 x2 x3 x4

Minorantul elementelor rmase netiate este 1. El se adaug elementelor dublu tiate, se scade din elementele netiate, lsnd neschimbate elementele simplu tiate.

Centre Beneficiari

y2 0 1 1 2

y4 1 0 1 1

y6 0 1 1 0

y8 1 1 0 0

x1 x2 x3 x4

Fiecare linie i coloan conine cte un zero ncadrat, deci soluia gsit este optim (avem cuplaj maxim): x1 y2 x2 y4 x3 y8 x4 y6 innd cont i de soluia determinat anterior, soluia problemei este: x1 x1 x1 x1 y1 y2 y3 y4 y5 y6 y7