* Zoek het kleinste onbedekte element (dat wil zeggen een element dat door geen enkele lijn wordt bedekt).
* Trek dit kleinste onbedekte element af van alle onbedekte elementen.
* Voeg dit kleinste onbedekte element toe aan alle elementen die zich op het snijpunt van twee lijnen bevinden.
* Ga terug naar stap (d).
f. Optimale toewijzing:
* Zodra u een kostenmatrix heeft waarbij het minimum aantal regels dat allemaal nullen moet bestrijken gelijk is aan het aantal rijen (of kolommen), kunt u een optimale toewijzing vinden.
* Zoek naar rijen en kolommen met enkele nullen. Wijs de corresponderende resource toe aan de corresponderende taak.
* Verwijder de rij en kolom die bij de toegewezen nul horen.
* Herhaal het proces totdat alle bronnen en taken zijn toegewezen.
Voorbeeld (vereenvoudigd):
Stel dat je drie loodgieters hebt (P1, P2, P3) en drie huizen (H1, H2, H3). De kostenmatrix is:
| | H1 | H2 | H3 |
|------|------|------|------|
| P1 | 10 | 12 | 15 |
| P2 | 8 | 11 | 13 |
| P3 | 9 | 10 | 12 |
Laten we het Hongaarse algoritme toepassen (vereenvoudigd):
1. Rijreductie:
| | H1 | H2 | H3 |
|------|------|------|------|
| P1 | 0 | 2 | 5 |
| P2 | 0 | 3 | 5 |
| P3 | 0 | 1 | 3 |
2. Kolomreductie:
| | H1 | H2 | H3 |
|------|------|------|------|
| P1 | 0 | 1 | 2 |
| P2 | 0 | 2 | 2 |
| P3 | 0 | 0 | 0 |
3. Dek nullen af: Je kunt alle nullen bedekken met twee lijnen (één horizontaal in rij P3 en één verticaal in kolom H1). Omdat 2 <3 is de oplossing niet optimaal.
4. Verbeter de matrix: Het kleinste onbedekte element is 1.
* Trek 1 af van onbedekte elementen.
* Voeg 1 toe aan snijpuntelementen.
| | H1 | H2 | H3 |
|------|------|------|------|
| P1 | 0 | 0 | 1 |
| P2 | 0 | 1 | 1 |
| P3 | 1 | 0 | 0 |
5. Dek nullen af: Nu kun je alle nullen bedekken met drie lijnen. 3 =3, dus de oplossing is optimaal.
6. Optimale toewijzing:
* P1 kan alleen worden toegewezen aan H2 (enkele nul).
* P2 kan alleen worden toegewezen aan H1 (enkele nul).
* P3 kan alleen worden toegewezen aan H3 (enkele nul).
Daarom is de optimale toewijzing:P1 -> H2, P2 -> H1, P3 -> H3. De totale kosten zijn 12 + 8 + 12 =32.
Waarom het Hongaarse algoritme werkt:het onderliggende principe
Het Hongaarse algoritme maakt gebruik van de volgende concepten:
* Een constante toevoegen aan of aftrekken van een rij of kolom: Het optellen of aftrekken van een constante waarde van alle elementen in een rij of kolom verandert niets aan de optimale toewijzing. Dit komt omdat de relatieve kosten tussen de hulpbronnen hetzelfde blijven.
* Kosten zonder kosten: Het algoritme heeft tot doel een kostenmatrix te creëren waarbij optimale opdrachten nul kosten hebben. Dit betekent dat u de beste combinatie van resources en taken heeft gevonden op basis van de initiële kostenmatrix.
* Stelling van König: Deze stelling relateert het minimum aantal lijnen dat nodig is om alle nullen in een matrix te bedekken met het maximum aantal onafhankelijke nullen (nullen zodat er geen twee in dezelfde rij of kolom liggen). Wanneer het aantal dekkende lijnen gelijk is aan de grootte van de matrix, kan een maximale set onafhankelijke nullen worden gevonden, wat overeenkomt met een optimale toewijzing.
2. Andere algoritmen en overwegingen:
* Veilingalgoritme: Geschikt voor grootschalige opdrachtproblemen.
* Netwerkstroomalgoritmen: Het toewijzingsprobleem kan worden gemodelleerd als een netwerkstroomprobleem en worden opgelost met behulp van algoritmen zoals het Ford-Fulkerson-algoritme of het Edmonds-Karp-algoritme.
Hoe het toewijzingsprobleem de efficiëntie optimaliseert:
De toewijzingsprobleemalgoritmen optimaliseren de toewijzing van taken aan bronnen efficiënt door:
* Kosten minimaliseren/winst maximaliseren: Zij vinden de combinatie van opdrachten die resulteert in de laagste totale kosten of de hoogste totale winst.
* Een-op-een toewijzing garanderen: Elke resource wordt aan slechts één taak toegewezen, en elke taak wordt aan slechts één resource toegewezen. Dit voorkomt overbelasting van bronnen of duplicatie van taken.
* Rekening houdend met individuele mogelijkheden/kosten: De kostenmatrix weerspiegelt de specifieke kosten of winsten die aan elke resource-taakcombinatie zijn gekoppeld. Hierdoor kan het algoritme rekening houden met de verschillende vaardigheden en efficiëntie van elke resource.
* De wereldwijd optimale oplossing vinden: Algoritmen zoals het Hongaarse Algoritme garanderen het vinden van de best mogelijke (optimale) opdracht.
Toepassingen van het toewijzingsprobleem:
Het toewijzingsprobleem heeft een breed scala aan toepassingen op verschillende gebieden, waaronder:
* Operationeel onderzoek: Optimaliseren van de toewijzing van middelen in productie, logistiek en transport.
* Projectmanagement: Het toewijzen van teamleden aan projecttaken.
* Zorg: Het toewijzen van verpleegkundigen aan patiënten in een ziekenhuis.
* Sport: Spelers toewijzen aan posities in een team.
* Machineleren: Matching van datapunten in beeldherkenning of clusteringalgoritmen.
* Transport: Voertuigen toewijzen aan routes in bezorgdiensten.
Samenvattend is het toewijzingsprobleem een krachtig hulpmiddel voor het optimaliseren van taaktoewijzing in scenario's waarin middelen één-op-één aan taken moeten worden toegewezen. Algoritmen zoals het Hongaarse algoritme bieden efficiënte en gegarandeerd optimale oplossingen, wat leidt tot aanzienlijke kostenbesparingen en verbeterde efficiëntie.