• No results found

1.4 Toewijzingsprobleem

1.4.3 De Hongaarse methode

     0 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1       b.          1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1          1.4.3 De Hongaarse methode

Beschouw het duale probleem (1.9). Bij de Hongaarse methode hebben we in iedere iteratie een (u, v) die toelaatbaar is voor (1.9) en een x die voldoet aan de zgn. complementariteitsrelaties m.b.t. (u, v):

xij· {cij− ui− vj} = 0 voor alle (i, j) (1.10)

Wanneer x nu ook nog toelaatbaar is voor (1.8), dan volgt uit de theorie van de lineaire optimali-sering dat x optimaal is voor (1.8) en (u, v) optimaal is voor (1.9).

Als startoplossing nemen we: (

ui = min1≤j≤n cij voor i = 1, 2, . . . , n; vj = min1≤i≤n {cij− ui} voor j = 1, 2, . . . , n.

Voor iedere (i, j) geldt vj ≤ cij − ui, dus (u, v) is toelaatbaar voor probleem (1.9). We nemen xij = 0 als (i, j) /∈ S, waarbij S = {(i, j) | ui+ vj = cij}. Hoe x op S ook wordt gekozen, op deze wijze is altijd voldaan aan (1.10).

Beschouw de gereduceerde kostenmatrix, waarin iedere cij is vervangen door dij = cij− ui− vj.

De matrix D wordt uit C verkregen door eerst van iedere rij het kleinste element in die rij af te trekken, en vervolgens in de aldus verkregen matrix van iedere kolom het kleinste element in die kolom af te trekken. D heeft dus in iedere rij en in iedere kolom minstens ´e´en 0.

S = {(i, j) | dij = 0}, dus als xij = (

1, (i, j) ∈ S

Veronderstel dat de matrix D n onafhankelijke nullen heeft (d.w.z. nullen die in verschillende rijen en kolommen voorkomen). Door op deze plaatsen xij = 1 te nemen en xij = 0 te stellen op de overige plaatsen krijgen we een x die toelaatbaar is voor (1.8), en dus optimaal is.

Vandaar dat we het maximum aantal onafhankelijke nullen gaan bepalen. Volgens de stelling van K¨onig - Egerv´ary (Stelling 1.17) is dit aantal gelijk aan het minimum aantal strepen door de rijen en kolommen om alle nullen te vangen. Indien we s onafhankelijke nullen kunnen aanwijzen en tevens alle nullen kunnen worden doorgestreept met s strepen, dan is het maximum aantal onafhankelijke nullen gelijk aan s. Er bestaan goede algoritmen om het maximum aantal on-afhankelijke nullen te bepalen; dit kan o.a. via de methode in het bewijs van de Huwelijksstelling om een maximale koppeling in een bipartiete graaf te bepalen.

Voorbeeld 1.6

Op een zondag zijn er vier voetbalwedstrijden in respectievelijk de plaatsen Amsterdam (A), Rotterdam (R), Eindhoven (E) en Groningen (G). Er zijn tevens vier scheidsrechters die deze wedstrijden kunnen leiden. De reisafstand die iedere scheidsrechter heeft tot de plaatsen waar de wedstrijden worden gehouden, staat in de volgende tabel.

A R E G

1 105 45 100 180

2 50 35 120 240

3 90 60 50 200

4 40 40 130 130

De voetbalbond wil de scheidsrechters die wedstrijden laten leiden z´odat de totale reisafstand van de vier scheidsrechters minimaal is. Wat is de oplossing van dit probleem?

We starten met u1 = 45, u2= 35, u3 = 50, u4 = 40, v1 = 0, v2 = 0, v3= 0 en v4 = 90.

We schrijven deze gegevens als volgt in een tableau met linksboven de waarde van de doelfunctie van (1.9): 260 0 0 0 90 45 60 0 55 45 35 15 0 85 115 50 40 10 0 60 40 0 0 90 0

Omdat de 0’en op de plaatsen (2,2), (3,3) en (4,4) onafhankelijk zijn en omdat alle nullen zijn door te strepen met de laatste twee rijen en de tweede kolom, is in het voorbeeld s = 3.

Veronderstel dat we alle nullen hebben gevangen door een minimum aantal rijen/kolommen door te strepen. Laat I de verz. van niet-doorgestreepte rijen, J de verz. van niet-doorgestreepte kolommen en d = min{dij | i ∈ I, j ∈ J}. Merk op dat d positief is.

1.4. TOEWIJZINGSPROBLEEM 27 ui:= ( ui+ d i ∈ I ui i /∈ I ; vj := ( vj j ∈ J vj − d j /∈ J ; dij :=        dij + d i /∈ I, j /∈ J dij − d i ∈ I, j ∈ J dij anders

Het is eenvoudig in te zien dat voor de nieuwe waarden weer geldt: ui+vj ≤ cijen dij = cij−ui−vj voor alle (i, j). Met deze nieuwe (u, v) en D voeren we weer een iteratie uit en we stoppen zodra het maximum aantal onafhankelijke nullen gelijk is aan n (dan hebben we de optimale oplossingen gevonden). In algoritmische vorm ziet de Hongaarse methode voor het toewijzingsprobleem er aldus uit:

Algoritme 1.1 Hongaarse methode voor het toewijzingsprobleem

1. (a) Bepaal het minimale element ui in rij i van C, i = 1, 2, . . . , n, en construeer een nieuwe matrix C door in C van rij i het getal ui af te trekken, i = 1, 2, . . . , n.

(b) Bepaal het minimale element vj in kolom j van C, j = 1, 2, . . . , n, construeer de gereduceerde kostenmatrix D door in C van kolom j het getal vj af te trekken, j = 1, 2, . . . , n.

2. (a) Bepaal in de gereduceerde kostenmatrix D het minimum aantal strepen, zeg s, om alle nullen te vangen en bepaal ook s onafhankelijke nullen.

(b) Als s = n: ga naar stap 4; anders: ga naar stap 3.

3. (a) Bepaal het kleinste niet-nul element in de gereduceerde kostenmatrix dat niet is doorge-streept door de in stap 2 gevonden strepen en noem de waarde van dit element d. (b) Verhoog een ui met d als de desbetreffende rij niet is doorgestreept en verlaag vj met

d als de desbetreffende kolom wel is doorgestreept; de waarde van de doelfunctie stijgt met (n − s) × d.

(c) Trek d af van alle elementen van de gereduceerde kosten matrix die niet zijn doorge-streept en tel d op bij alle elementen die zowel door een horizontale als een vertikale lijn zijn doorgestreept.

(d) Ga naar stap 2.

4. Neem xij = 1 als het bijbehorende element van de gereduceerde kostenmatrix een on-afhankelijke nul is; neem anders xij = 0. Deze x is een optimale oplossing van het toewij-zingsprobleem.

Voorbeeld 1.6 (vervolg)

Passen we Algoritme 1.1 toe, dan krijgen we (de 0’s geven de s onafhankelijke nullen aan en een u

i of v

260 0 0 0 90 45 60 0 55 45 35 15 0 85 115 50 40 10 0 60 40 0 0 90 0 s = 3; d = 15. 275 0 -15 0 90 60 45 0 40 30 50 0 0 70 100 50 40 25 0 60 40 0 15 90 0 s = 4; optimaal

De optimale oplossing luidt: x12= x21= x33= x44= 1 (de overige variabele zijn 0) met waarde 275.

Eindigheid

Omdat de oplossing (u, v) tijdens het algoritme steeds toelaatbaar is voor probleem (1.9), dat een eindige oplossing bezit, is het voldoende om aan te tonen dat de waarde van de doelfunctie van (1.9) in iedere iteratie stap met minstens 1 toeneemt.

Beschouw een bepaalde iteratiestap. Laat r het aantal rijen zijn dat is doorgestreept en k het aantal kolommen (dus r + k = s < n). Laat (u0, v0) de waarden van de duale variabelen zijn verkregen uit een tableau behorende bij (u, v), dan geldt:

waarde doelfunctie (1.9) in nieuw tableau =Pni=1u0

i+Pnj=1v0

j =Pni=1ui+Pnj=1vj + d · {(n − r) − k} = waarde doelfunctie (1.9) in oud tableau + d · (n − s).

Dus de toename van de doelfunctie is d · (n − s) ≥ d ≥ 1, waarmee de eindigheid bewezen is.

Gevoeligheidsanalyse

We kunnen ook voor het toewijzingsprobleem gevoeligheidsanalyse uitvoeren. Beschouw nu plaats (i, j) van een optimaal tableau. We onderscheiden: a. In de optimale oplossing is xij = 1:

Als cij kleiner wordt, dan zal deze toewijzing zeker nog worden gekozen.

Als cij groter wordt, zeg met λ toeneemt, dan blijft de huidige oplossing in ieder geval optimaal zolang λ ≤ som van de kleinste elementen in de i-de rij en j-de kolom van het tableau, element (i, j) uitgezonderd (waarom?).

b. In de optimale oplossing is xij = 0:

Als cij groter wordt, dan zal deze toewijzing zeker nog steeds niet worden gekozen. Als cij kleiner wordt, zeg met λ afneemt, dan is de huidige oplossing nog steeds niet optimaal zolang λ ≤ dij.

Voorbeeld 1.6 (vervolg)

Neem (i, j) = (1, 2): de huidige oplossing is in ieder geval optimaal als c12≤ 45 + 30 + 0 = 75. Neem (i, j) = (1, 1): de huidige oplossing is in ieder geval optimaal als c11≥ 105 − 45 = 60.