Problemă generalizată de atribuire

În matematică aplicată , o problemă de atribuire generalizată este înțeleasă ca o problemă de optimizare combinatorie , care este o generalizare a problemei de atribuire , în care mulțimea de executanți are o dimensiune care nu este neapărat egală cu dimensiunea setului de locuri de muncă. În acest caz, executantul poate fi desemnat să execute orice lucrare (nu neapărat o singură lucrare, ca în problema de atribuire). Atunci când atribuiți un executant să execute lucrări, sunt stabilite două valori - costurile și veniturile. Fiecare interpret are un anumit buget, astfel încât suma tuturor costurilor nu trebuie să depășească acest buget. Este necesar să se găsească o astfel de încadrare a artiștilor executanți pentru a presta munca pentru a maximiza veniturile.

Ocazii speciale

În cazul în care bugetele executanților și toate costurile muncii sunt egale cu 1, problema se transformă în problema de potrivire maximă .

Dacă prețurile și veniturile pentru toate sarcinile sunt egale, problema se reduce la un rucsac multiplicativ .

Dacă există un singur agent, problema se reduce la problema rucsacului .

Definiție

Există n locuri de muncă și m performeri . Fiecare interpret are un buget . Pentru fiecare pereche de interpret și muncă, sunt date venitul și ponderea . Soluția este un subset de locuri de muncă U și o distribuție a locurilor de muncă din U între performeri. Decizia este acceptabilă dacă valoarea costurilor pentru munca atribuită interpretului nu depășește bugetul . Venitul din decizie este suma tuturor veniturilor tuturor repartizărilor de muncă-executor.

Din punct de vedere matematic, problema de atribuire generalizată poate fi formulată după cum urmează:

maximiza supus ; ; ;

Problema generalizată de atribuire este NP-hard și chiar APX-hard .

Fleischer, Gomans, Mirokni și Sviridenko au propus un algoritm de căutare locală combinatorie cu aproximare și un algoritm bazat pe programare liniară cu aproximare [1] .

Aproximarea este cea mai cunoscută aproximare a problemei de atribuire generalizată.

Algoritmul de aproximare Greedy

Folosind problema de atribuire -algoritm de aproximare, se poate crea o ( ) -aproximare pentru problema de atribuire generalizată în maniera unui algoritm lacom folosind conceptul de venit rezidual. Algoritmul creează în mod iterativ o secvență preliminară în care se presupune că trebuie să atribuie lucru executantului la iterație . Alegerea interpretului poate fi modificată ulterior, atunci când atribuiți lucrări altor interpreți. Venitul rămas din muncă pentru executant este , dacă lucrarea nu este dată altui executant și - dacă lucrarea este dată executantului .

Oficial:

Folosiți vector pentru preselecție și în acest vector

înseamnă că trebuie să atribuie un executant lucrării , înseamnă că nimeni nu a fost repartizat la locul de muncă.

Venitul rămas pe iterație este notat cu , unde

dacă nu este selectat niciun loc de muncă (adică ) , dacă lucrarea ar trebui să fie dată interpretului (adică ).

Deci algoritmul arată astfel:

Valori inițiale atribuite pentru toți Pentru toată lumea , faceți: Un algoritm de aproximare este utilizat pentru a obține distribuția muncii pentru antreprenor folosind funcția venit rezidual . Sunt indicate lucrările selectate . Corectat folosind , adică pentru toți . sfârşitul ciclului

Vezi și

Note

  1. L. Fleischer, MX Goemans, VS Mirrokni și M. Sviridenko. Algoritmi strânși de aproximare pentru probleme generale maxime de atribuire. În SODA'06: Proc

Link -uri