I tillämpad matematik förstås ett generaliserat uppdragsproblem som ett kombinatoriskt optimeringsproblem , vilket är en generalisering av uppdragsproblemet , där uppsättningen av utförare har en storlek som inte nödvändigtvis är lika med storleken på uppsättningen jobb. I det här fallet kan utföraren få i uppdrag att utföra vilket arbete som helst (inte nödvändigtvis ett verk, som i uppdragsproblemet). När man tilldelar en exekutor att utföra arbete, är två värden uppsatta - kostnader och intäkter. Varje artist har en viss budget, så summan av alla kostnader bör inte överstiga denna budget. Det krävs att hitta ett sådant uppdrag av utförare att utföra arbete för att maximera inkomsten.
I fallet när budgeten för utförare och alla kostnader för arbete är lika med 1, förvandlas problemet till det maximala matchningsproblemet .
Om priser och inkomster för alla arbetsuppgifter är lika, reduceras problemet till en multiplikativ ryggsäck .
Om det bara finns ett medel, reduceras problemet till ryggsäcksproblemet .
Det finns n jobb och m artister . Varje artist har en budget . För varje par av utförare och arbete anges inkomst och vikt . Lösningen är en delmängd av jobb U och en fördelning av jobb från U bland utförare. Beslutet är acceptabelt om kostnadsbeloppet för utförarens tilldelade arbete inte överstiger budgeten . Inkomsten från beslutet är summan av alla inkomster av alla fördelningar av arbetsutförare.
Matematiskt kan det generaliserade uppdragsproblemet formuleras på följande sätt:
maximera föremål för ; ; ;Det generaliserade tilldelningsproblemet är NP-hårt och till och med APX-hårt .
Fleischer, Gomans, Mirokni och Sviridenko föreslog en kombinatorisk lokal sökalgoritm med approximation och en algoritm baserad på linjär programmering med approximation [1] .
Approximationen är den mest kända approximationen av det generaliserade tilldelningsproblemet.
Med hjälp av tilldelningsproblem -approximationsalgoritmen kan man skapa en ( ) -approximation för det generaliserade tilldelningsproblemet på samma sätt som en girig algoritm med hjälp av begreppet restinkomst. Algoritmen skapar iterativt en preliminär sekvens där den är tänkt att tilldela utföraren arbete vid iterationen . Valet för utföraren kan ändras senare vid tilldelning av arbete till andra utförare. Återstående inkomst av verket för den utövande utövaren är , om verket inte ges till en annan utförare, och - om verket ges till den utförare .
Formellt:
Använd vektor för förval och i denna vektor
innebär att det är tänkt att anvisa en utförare till arbetet , innebär att ingen har tilldelats jobbet.Den återstående inkomsten per iteration betecknas med , där
om inget jobb har valts (dvs. ) , om verket är tänkt att ges till utföraren (dvs. ).Så algoritmen ser ut så här:
Tilldelade initiala värden för alla För alla , gör: En approximationsalgoritm används för att erhålla arbetsfördelningen för uppdragstagaren med hjälp av restinkomstfunktionen . Utvalda verk anges . Rättad med , d.v.s. för alla . slutet av cykeln