* Hitta det minsta upptäckta elementet (dvs ett element som inte täcks av någon linje).
* Subtrahera detta minsta upptäckta element från alla upptäckta element.
* Lägg till detta minsta upptäckta element till alla element som är i skärningspunkten mellan två linjer.
* Gå tillbaka till steg (d).
f. Optimal uppdrag:
* När du har en kostnadsmatris där minsta antal linjer för att täcka alla nollor är lika med antalet rader (eller kolumner) kan du hitta en optimal uppdrag.
* Leta efter rader och kolumner med enstaka nollor. Tilldela motsvarande resurs till motsvarande uppgift.
* Ta bort raden och kolumnen associerad med den tilldelade noll.
* Upprepa processen tills alla resurser och uppgifter har tilldelats.
Exempel (förenklad):
Anta att du har tre rörmokare (P1, P2, P3) och tre hus (H1, H2, H3). Kostnadsmatrisen är:
| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 10 | 12 | 15 |
| P2 | 8 | 11 | 13 |
| P3 | 9 | 10 | 12 |
Låt oss tillämpa den ungerska algoritmen (förenklad):
1. radminskning:
| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 0 | 2 | 5 |
| P2 | 0 | 3 | 5 |
| P3 | 0 | 1 | 3 |
2. kolonnreduktion:
| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 0 | 1 | 2 |
| P2 | 0 | 2 | 2 |
| P3 | 0 | 0 | 0 |
3. täcker nollor: Du kan täcka alla nollor med två linjer (en horisontellt på rad P3 och en vertikal på kolumn H1). Sedan 2 <3 är lösningen inte optimal.
4. Förbättra matrisen: Det minsta upptäckta elementet är 1.
* Subtrahera 1 från upptäckta element.
* Lägg till 1 i korsningselementen.
| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 0 | 0 | 1 |
| P2 | 0 | 1 | 1 |
| P3 | 1 | 0 | 0 |
5. täcker nollor: Nu kan du täcka alla nollor med tre rader. 3 =3, så lösningen är optimal.
6. Optimal uppdrag:
* P1 kan endast tilldelas H2 (enkel noll).
* P2 kan endast tilldelas H1 (enkel noll).
* P3 kan endast tilldelas H3 (enkel noll).
Därför är den optimala tilldelningen:p1 -> h2, p2 -> h1, p3 -> h3. Den totala kostnaden skulle vara 12 + 8 + 12 =32.
Varför den ungerska algoritmen fungerar:den underliggande principen
Den ungerska algoritmen utnyttjar följande koncept:
* lägga till eller subtrahera en konstant från en rad eller kolumn: Att lägga till eller subtrahera ett konstant värde från alla element i rad eller kolumn ändrar inte den optimala tilldelningen. Detta beror på att de relativa kostnaderna mellan resurserna förblir desamma.
* nollkostnadsuppdrag: Algoritmen syftar till att skapa en kostnadsmatris där optimala tilldelningar har nollkostnad. Detta innebär att du har hittat den bästa kombinationen av resurser och uppgifter baserat på den initiala kostnadsmatrisen.
* Königs teorem: Detta sats hänvisar till det minsta antalet linjer som behövs för att täcka alla nollor i en matris till det maximala antalet oberoende nollor (nollor så att inga två ligger i samma rad eller kolumn). När antalet täckande linjer är lika med storleken på matrisen, kan en maximal uppsättning oberoende nollor hittas, vilket motsvarar en optimal tilldelning.
2. Andra algoritmer och överväganden:
* auktionsalgoritm: Lämplig för storskaliga uppdragsproblem.
* nätverksflödesalgoritmer: Uppdragsproblemet kan modelleras som ett nätverksflödesproblem och lösas med hjälp av algoritmer som Ford-Fulkerson-algoritmen eller Edmonds-Karp-algoritmen.
Hur uppdragsproblemet optimerar effektiviteten:
Uppdragsproblemalgoritmerna optimerar tilldelningen av uppgifter till resurser effektivt av:
* Minimera kostnader/maximera vinsten: De hittar kombinationen av uppdrag som resulterar i den lägsta totala kostnaden eller den högsta totala vinsten.
* Säkerställa en-till-en-uppdrag: Varje resurs tilldelas endast en uppgift och varje uppgift tilldelas endast en resurs. Detta förhindrar överbelastning av resurser eller uppgifter för uppgiften.
* Med tanke på enskilda kapaciteter/kostnader: Kostnadsmatrisen återspeglar de specifika kostnaderna eller vinsterna som är förknippade med varje resursuppgiftskombination. Detta gör att algoritmen kan ta hänsyn till de olika färdigheterna och effektiviteten för varje resurs.
* Hitta den globala optimala lösningen: Algoritmer som den ungerska algoritmen garanterar att hitta den bästa möjliga (optimala) uppdraget.
Applikationer av uppdragsproblemet:
Uppdragsproblemet har ett brett utbud av applikationer inom olika områden, inklusive:
* Operations Research: Optimera resursallokering inom tillverkning, logistik och transport.
* Projektledning: Tilldela teammedlemmar till projiceringsuppgifter.
* Sjukvård: Tilldela sjuksköterskor till patienter på ett sjukhus.
* Sports: Tilldela spelare till positioner i ett lag.
* Maskininlärning: Matchande datapunkter i bildigenkänning eller klusteralgoritmer.
* Transport: Tilldela fordon till rutter i leveranstjänster.
Sammanfattningsvis är uppdragsproblemet ett kraftfullt verktyg för att optimera uppgiftsfördelningen i scenarier där resurser måste tilldelas uppgifter på en-till-en-basis. Algoritmer som den ungerska algoritmen ger effektiva och garanterade optimala lösningar, vilket leder till betydande kostnadsbesparingar och förbättrad effektivitet.