Sunteți pe pagina 1din 3

CURS 11

Algoritm de repartizare a operaţiilor pe executanţi – Algoritmul Ungar


(Kuhn)

Teorema care stă la baza algoritmului este:


„Ȋntr-o problemă de repartizare sau de alocare, dacă o anumită valoare se adaugă la,
sau se scade dintr-un vector linie sau vector coloană, al unei matrici de eficienţă, atunci
repartizarea care minimizează matricea redusă va constitui soluţie şi pentru matricea iniţială.”
Etape:
1. Se scade cea mai mică valoare a fiecărei linii din toate elementele liniei respective
obţinând astfel cel puţin câte un „0” pe fiecare linie a matricei.
2. Se procedează în mod analog pe fiecare coloană: se scade cea mai mică valoare a
fiecărei coloane din toate elementele coloanei respective. Se obţine astfel cel puţin câte un
„0” pe fiecare linie şi coloană a matricei iniţiale.
3. În matricea obţinută după parcurgerea etapei a doua se aplică operaţia de încadrare
şi barare de zerouri:
- se încadrează un „0” situat pe linia cu cele mai puţine zerouri şi se barează
(taie) toate celelalte zerouri găsite pe linia şi coloana zeroului încadrat;
- se repetă această operaţie până când toate zerourile matricei au fost încadrate
sau barate.
Dacă se obţine câte un „0” încadrat pe fiecare linie şi coloană, problema este
rezolvată. În caz contrar se trece la etapa următoare.
4. Marcarea liniilor şi coloanelor astfel (Algoritmul Ackoff Sasieni):
- se marchează liniile care nu conţin nici un „0” încadrat;
- se marchează coloanele care conţin zerouri tăiate pe liniile deja marcate;
- se marchează liniile care conţin un „0” încadrat pe coloanele deja marcate;
- se repetă aceste operaţii până când nu mai există posibilitstea de a se obţine alte
linii sau coloane marcate.
5. În matrice, se taie toate liniile nemarcate şi coloanele marcate. Cea mai mică
valoare dintre elementele rămase netăiate, se adaugă elementelor coloanelor traversate de linii
şi se scad din elementele liniilor netraversate de linii. Se va obţine o nouă matrice.
6. Ȋn matricea obţinută în etapa a 5-a, se repetă procedeul de încadrare şi barare a
zerourilor. Se reia algoritmul, până când se obţine câte un „0” încadrat pe fiecare linie şi
coloană. Soluţia optimă poate să nu fie unică.

Exemplu de calcul I
Fie 5 muncitori (xi, i= 15) care urmează să fie repartizaţi pe 5 locuri de muncă (yj,
j= 15). Unii dintre aceştia sunt calificaţi pentru mai mult decât unul din posturile vacante,
iar repartizarea se face respectând principiul: „fiecare muncitor trebuie să ocupe un singur
loc de muncă şi numai unul”|.
Fiecărei repartizări (xi, yj) i se asociază o valoare cij0 (i,j = 15) , care reprezintă salariul
corespunzător muncitorului xi în situaţia în care efectuiază operaţia yj. Când muncitorul nu
cunoaşte operaţia, deci repartizarea nu este posibilă cij = .
Matricea costurilor (cij – unităţi monetare/unităţi de timp - eficienţa) este:

y1 y2 y3 y4 y5
x1 7 3 5 7 10
x2 6   8 7
x3 6 5 1 5 
x4 11 4  11 15
x5  4 5 2 10

Să se determine care va fi operaţia care se va repartiza fiecărui executant în condiţii


de eficienţă maximă.

5 executanţi - xi, , 5 locuri de muncă yj

y1 y2 y3 y4 y5
x1 7 3 5 7 10
x2 6 ∞ ∞ 8 7
x3 6 5 1 5 ∞
x4 11 4 ∞ 11 15
x5 ∞ 4 5 2 10
y1 y2 y3 y4 y5 y1 y2 y3 y4 y5
x1 1 0 4 5 3 x1 1 0 4 5 3
x2 0 ∞ ∞ 6 0 x2 0 ∞ ∞ 6 0
x3 0 2 0 3 ∞ x3 0 2 0 3 ∞
x4 5 1 ∞ 9 8 x4 4 0 ∞ 8 7
x5 ∞ 1 4 0 3 x5 ∞ 1 4 0 3

- 1 Col 1, 3, 4, 5
+1 Lin 2, 3, 5

y1 y2 y3 y4 y5 y1 y2 y3 y4 y5
x1 0 0 3 4 2 x1 0 0 3 4 2
x2 0 ∞ ∞ 5 0 x2 0 ∞ ∞ 5 0
x3 0 2 0 2 ∞ x3 0 3 0 3 ∞
x4 3 0 ∞ 7 6 x4 3 0 ∞ 7 6
x5 ∞ 1 3 0 2 x5 ∞ 2 4 0 3

Soluţia:
x1  y1 x2  y5 x3  y3 x4  y2 x5  y4

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