Problemă de atribuire

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Problemele de atribuire (sau problemele de atribuire ) sunt acele probleme de cercetare operațională în care trebuie să atribuiți diferite sarcini într-un mod optim.

Problema de atribuire este considerată o problemă ușoară, chiar dacă este o problemă combinatorie și, în general, astfel de probleme sunt NP-hard , adică dificil de rezolvat. Cu toate acestea, aceasta este una dintre problemele particulare care se bucură de proprietatea integralității și, de fapt, nu este altceva decât o problemă particulară a fluxului de cost minim .

Aceasta este o problemă de importanță fundamentală în optimizarea combinatorie, deoarece se găsește adesea în structura unor probleme mai complexe: adică problemele de aplicație sunt adesea o problemă de atribuire cu constrângeri suplimentare. În acest fel - prin așa-numitele tehnici de relaxare - algoritmii studiați pentru această problemă pot fi folosiți pentru a rezolva problema inițială.

Formulare

O problemă de atribuire este definită pe un grafic bipartit sau un grafic unde este Și . La fiecare arc este asociat un cost ; doriți să găsiți cel mai mic cost alocat; acesta este întregul astfel încât

,

Și .

Următoarea este una dintre formulările posibile din programarea liniară :

astfel încât:

Prin urmare, problema apare ca o problemă de programare liniară întreagă ; cu toate acestea, poate fi redefinită ca o problemă a fluxului de cost minim (care poate fi rezolvată prin relaxare continuă și, prin urmare, în programarea liniară ). Prin urmare, nu este surprinzător faptul că, deși aceasta este o problemă combinatorie, aceasta poate fi rezolvată în timp polinomial .

Rezoluție tipică

Problema de bază este de a găsi o repartizare între activități (producători) - resurse (clienți) la cel mai mic cost.

Probleme de atribuire a cercetării operaționale.png

Mai întâi trebuie să creăm un tabel care să raporteze costurile între activități și resurse. Indicăm cu A1, A2, A3, A4, ..., activități și cu R1, R2, R3, R4, ..., resurse. În celelalte casete indicăm costul fiecărei misiuni (referitor la o anumită resursă și la o anumită activitate).

A1 A2 A3 A4
R1 5 8 3 4
R2 11 12 18 13
R3 7 7 20 20
R4 10 9 9 8

Primul pas constă în scăderea din fiecare rând a valorii sale minime (numită, de fapt, minimă a rândului). În practică, luând în considerare rândul relativ la R1, căutăm valoarea minimă a acelui rând, adică 3 și o scădem din fiecare casetă întotdeauna relativă la primul rând. La fel se procedează și cu celelalte rânduri, scăzând 11 din al doilea, 7 din al treilea și 8 din ultimul, obținând un nou tabel.

A1 A2 A3 A4
R1 2 5 0 1
R2 0 1 7 2
R3 0 0 13 13
R4 2 1 1 0

Din acest ultim tabel obținut considerăm casetele care conțin valoare (cost) zero și încercăm, pe baza acestora, să atribuim o activitate fiecărei resurse astfel încât costul (raportat la acest ultim tabel) să fie zero.

În cazul nostru putem considera problema încheiată deoarece este posibil să atribuim fiecare coloană A unui rând R păstrând costul relativ zero. Dacă nu ar fi fost cazul, am fi procedat, în mod similar, cu scăderea valorii minime a coloanei (a se vedea exemplul următor). Practic:

Notă: Nu am atribuit A1-R3, altfel nu am mai fi putut atribui A1-R2.

Pentru a găsi costul real legat de această sarcină, trebuie să luăm în considerare și tabelul de pornire cu costurile aferente (păstrând întotdeauna sarcinile tocmai găsite). Prin urmare, obținem:

Evident, costul total al misiunii este dat de suma costurilor parțiale tocmai găsite:

Exemplu rezolvat

Masa de pornire:

A1 A2 A3 A4
R1 4 2 2 3
R2 5 6 4 7
R3 8 11 13 9
R4 1 2 3 4

Al doilea tabel obținut prin scăderea minimului rândului:

A1 A2 A3 A4
R1 2 0 0 1
R2 1 2 0 3
R3 0 3 5 1
R4 0 1 2 3

Cu acest tabel este imposibil să atribuiți o resursă (R) coloanei A4 deoarece nu există valori nule în ea. Apoi continuăm cu o reducere pe coloane.

Al treilea tabel obținut prin scăderea minimului coloanei:

A1 A2 A3 A4
R1 2 0 0 0
R2 1 2 0 2
R3 0 3 5 0
R4 0 1 2 2

Alocarea rezultată:

Prin urmare, costul total al acestei misiuni este .

Controlul autorității LCCN ( EN ) sh00004835