Optimalisatie in Netwerken∗

58
Optimalisatie in Netwerken * professor Henk Tijms Afdeling Econometrie & Operationele Research Vrije Universiteit, Amsterdam Versie, september 2008 * Deze Wiskunde-D module is een bewerking van materiaal uit de hoofdstukken 2 en 3 van het boek H.C. Tijms, Operationele Analyse, 2de druk, Uitgeverij Epsilon, 2004. Suggesties ter verbetering zijn welkom bij de auteur op [email protected].

Transcript of Optimalisatie in Netwerken∗

Page 1: Optimalisatie in Netwerken∗

Optimalisatie in Netwerken∗

professor Henk Tijms

Afdeling Econometrie & Operationele Research

Vrije Universiteit, Amsterdam

Versie, september 2008

∗Deze Wiskunde-D module is een bewerking van materiaal uit de hoofdstukken 2 en 3 vanhet boek H.C. Tijms, Operationele Analyse, 2de druk, Uitgeverij Epsilon, 2004. Suggestiester verbetering zijn welkom bij de auteur op [email protected].

Page 2: Optimalisatie in Netwerken∗
Page 3: Optimalisatie in Netwerken∗

Voorwoord

Deze wiskunde-D module is een avontuurlijke reis langs niet-aangeharkte padendoor het gebied van de optimalisering in netwerken en richt zich op leerlingen in5 en 6 VWO. De module bevat uitdagende stof voor zowel leerling als leraar enlaat zien welke boeiende toepassingen de wiskunde in de praktijk heeft, waarbijwe tegelijkertijd een beeld hopen te geven hoe toegepaste wiskunde in het hogeronderwijs bedreven wordt. Vele praktische problemen in uiteenlopende gebiedenkunnen worden geformuleerd als een optimaliseringsprobleem op een netwerk:kortste-pad probleem, handelsreizigersprobleem, routeringsproblemen, etc.

Hoewel voor vele optimaliseringsproblemen in netwerken de algemeen toepas-bare rekenmethode van lineaire programmering gebruikt kan worden, wordenoptimaliseringsproblemen in netwerken meestal opgelost met algoritmes die toe-gesneden zijn op de specifieke structuur van het betreffende optimaliseringspro-bleem en daardoor in het algemeen veel minder rekentijd vergen dan een alge-meen toepasbaar algoritme als lineaire programmering. Het begrip algoritme iseen kernbegrip in de toegepaste wiskunde. In de wiskunde verstaan we ondereen algoritme (van het Arabische woord algawarizmiat) een lijst van welgedefi-nieerde instructies om vanuit bepaalde begintoestand tot het gezochte doel tekomen. Algoritmen zijn essentieel voor de manier waarop computers informatieverwerken, omdat een computerprogramma een algoritme is dat de computervertelt specifieke stappen in een specifieke volgorde uit te voeren om een be-paald eindresultaat te bereiken. Voor het numeriek oplossen van de optimalise-ringsproblemen in netwerken is de computer onmisbaar wanneer de problemeneen realistische omvang hebben. In deze Wiskunde-D module behandelen weeen aantal van de belangrijkste wiskundige modellen uit de netwerkoptimalisa-tie. We zullen laten zien hoe concrete problemen inzichtelijk kunnen wordengemaakt door het aanbrengen van (abstracte) wiskundige structuur. Doorzieje eenmaal de wiskundige structuur van een klasse van problemen, dan kunje veel makkelijker allerlei concrete problemen uit het dagelijks leven aanpak-ken. In hoofdstuk 1 wordt het kortste-pad probleem beschouwd. Het algoritmevan Dijkstra wordt besproken om het kortste pad te berekenen tussen knoop-punten in een netwerk met niet-negatieve afstanden. In hoofdstuk 2 wordthet minimale-opspannende boomprobleem besproken. Het algoritme van Primwordt gegeven, waarmee berekend kan worden hoe een gegeven aantal knoop-punten tegen minimale kosten onderling met elkaar verbonden kunnen worden

Page 4: Optimalisatie in Netwerken∗

door een opspannende boom. Verder wordt kort ingegaan op het gerelateerdeSteiner probleem. In hoofdstuk 3 bespreken wij het tweezijdige toewijzingspro-bleem waarin een aantal taken en een aantal personen gegeven zijn en het doelis de personen zodanig aan de taken toe te wijzen zodat de totale toewijzings-kosten minimaal zijn. Voor dit probleem dat vele toepassingen kent, geven wede fraaie Hongaarse oplosmethode die zich voor kleinere problemen heel goedvoor handmatige berekeningen leent.In het hoofdstuk 4 gaan we in op een vande beroemdste problemen uit de toegepaste wiskunde en wel het zogenoemdehandelsreizigersprobleem waarin een kortst mogelijke rondreis langs een gegevenaantal steden gezocht wordt onder de eis dat elke stad precies een keer aange-daan moet worden. De eenvoud van dit probleem en de moeilijkheid om hetprobleem exact op te lossen, heeft vele wiskundigen uitgedaagd. Het probleemis nog steeds onderwerp van onderzoekingen en is een ideaal platform om ideeenen nieuwe methoden te ontwikkelen die ook toepasbaar zijn voor andere com-binatorische optimaliseringsproblemen. In hoofdstuk 5 bespreken we een in depraktijk veelvuldig optredend routeringsprobleem waarbij vanuit een centraaldepot een aantal klanten beleverd moet worden door vrachtwagens met als doelhet totale aantal te rijden kilometers te minimaliseren. Hoofdstuk 6 behandelthet Euler-circuit probleem waarbij in een ongerichte graaf een pad wordt ge-zocht dat elke kant van de graaf precies eenmaal aandoet en dat eindigt in hetstartpunt van het pad. Het beroemde Konigsberg brugprobleem ligt ten grond-slag aan dit graaftheoretische probleem dat zowel de schoonheid als de krachtvan de wiskunde laat zien. In het laatste hoofdstuk wordt ook het zogenoemdeChinese postbodeprobleem besproken. In dit probleem worden kosten gemaaktvoor het doorlopen van een kant van de graaf en is het doel om tegen minima-le kosten een rondreis te maken waarbij elke kant van de graaf tenminste eenkeer wordt aangedaan. Tenslotte vermelden we dat bij elk hoofdstuk opgavenzijn toegevoegd. Docentenmateriaal met de uitwerkingen van de opgaven is invoorbereiding.

Page 5: Optimalisatie in Netwerken∗

Inhoudsopgave

1 Kortste-padprobleem 1

1.1 Probleembeschrijving . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Het algoritme van Dijkstra . . . . . . . . . . . . . . . . . . . . . 2

1.3 Meest betrouwbare pad . . . . . . . . . . . . . . . . . . . . . . . 7

1.4 Uitbreiding kortste-padprobleem . . . . . . . . . . . . . . . . . . 9

1.5 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 De minimale-opspannende boom 15

2.1 Probleembeschrijving . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2 Het algoritme van Prim . . . . . . . . . . . . . . . . . . . . . . . 17

2.3 Minmax padprobleem . . . . . . . . . . . . . . . . . . . . . . . . 19

2.4 Steiner-probleem . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.5 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3 Het toewijzingsprobleem 25

3.1 Probleembeschrijving . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2 Hongaarse methode . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.3 Het niet-tweezijdige koppelingsprobleem . . . . . . . . . . . . . . 27

3.4 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4 Handelsreizigersprobleem 31

4.1 Probleem beschrijving . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2 Heuristische oplosmethoden . . . . . . . . . . . . . . . . . . . . . 34

4.3 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5 Het vrachtwagen routeringsprobleem 39

5.1 Probleem beschrijving . . . . . . . . . . . . . . . . . . . . . . . . 39

Page 6: Optimalisatie in Netwerken∗

5.2 Heuristiek van Clarke en Wright . . . . . . . . . . . . . . . . . . 40

5.3 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6 Euler en het Chinese postbodeprobleem 45

6.1 Probleem beschrijving . . . . . . . . . . . . . . . . . . . . . . . . 45

6.2 Euler circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6.3 Chinese postbodeprobleem. . . . . . . . . . . . . . . . . . . . . . 48

6.4 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Page 7: Optimalisatie in Netwerken∗

Hoofdstuk 1

Kortste-padprobleem

1.1 Probleembeschrijving

Kortste-padproblemen vormen het hart van netwerkproblemen. Ze treden veel-vuldig op in de praktijk. In vele uiteenlopende toepassingen wil je materiaalzo snel mogelijk, zo goedkoop mogelijk of zo betrouwbaar mogelijk versturentussen twee punten in een netwerk. Daarnaast is het oplossen van een kortste-padprobleem vaak een onderdeel van het oplossingsproces van meer ingewikkel-de netwerkproblemen. Kortste-padproblemen kunnen bijzonder efficient wordenopgelost, ook problemen met honderdduizenden of miljoenen knooppunten.

Eerst enige terminologie die we in dit hoofdstuk en volgende hoofdstukken zullengebruiken. Een netwerk bestaat uit knooppunten en lijnstukken (vaak kantenof takken genoemd). Elk lijnstuk verbindt twee knooppunten van het netwerk.Een netwerk heet gericht als alle verbindingen in slechts een richting doorlopenkunnen worden. In een ongericht netwerk mag elke verbindingslijn in beiderichtingen doorlopen worden. Een pad is een reeks van kanten die op elkaaraansluiten.

We veronderstellen een gericht netwerk met niet-negatieve afstanden (kosten),zoals getoond in figuur 1. Dit netwerk bestaat uit de knooppunten N1, . . . , N7.Bepaalde paren van deze knooppunten zijn verbonden door gerichte lijnstukken(pijlen genaamd). Het getal dat hoort bij een pijl (Ni, Nj) staat voor de afstandvan knooppunt Ni naar knooppunt Nj . Stel dat we het kortste pad willen vindenvan knooppunt N1 naar knooppunt N7. Een pad is een reeks lijnstukken dieop elkaar aansluiten. We bespreken een uiterst efficient algoritme dat berekent.Dit algoritme is het beroemde algoritme van Edsger Dijkstra dat onder meer debasis is voor de berekening van snelste routes door routeplanners.

1

Page 8: Optimalisatie in Netwerken∗

2 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

Figuur 1 Een kortste-padvoorbeeld

1.2 Het algoritme van Dijkstra

Het kortste-padprobleem komt niet alleen als zelfstandig probleem voor, maartreedt soms ook op als subprobleem in meer ingewikkelde optimaliseringspro-blemen. In sommige situaties moeten grootschalige kortste-padproblemen methonderdduizenden of miljoenen knooppunten worden opgelost, terwijl in ande-re situaties een kortste-padprobleem een groot aantal malen achter elkaar moetworden doorgerekend. De rekentijd wordt in die situaties te groot als er geen ge-bruik gemaakt wordt van speciale algoritmes voor het kortste-padprobleem. Eenefficient algoritme om het kortste pad van een gegeven startpunt (zeg, knoop-punt N1) naar een ander knooppunt te bepalen is het algoritme van Dijkstra.Dit algoritme vereist dat elke pijl een niet-negatieve ( ≥ 0) lengte heeft en bere-kent niet alleen het kortste pad van het startpunt N1 naar een gegeven eindpuntmaar geeft gelijktijdig het kortste pad van N1 naar elk ander knooppunt. Hetalgoritme van Dijkstra is een iteratieve procedure, waarbij stapsgewijs ‘voorlo-pige’ paden worden verbeterd en in elke stap het definitieve kortste pad van N1

naar een van de knooppunten wordt gevonden. Het algoritme maakt gebruikvan een slimme labelprocedure. Het label van een knooppunt geeft een boven-grens op de lengte van het kortste pad van knooppunt N1 naar het betreffendeknooppunt (een bovengrens op een gezochte waarde is een getal dat groter danof gelijk aan de gezochte waarde is). De bovengrens is de lengte van een tijdelijkgeconstrueerd pad van startpunt N1 naar het betreffende knooppunt. De labelsworden stapsgewijs aangepast. Na elke iteratiestap van het algoritme wordt eenvan de labels permanent. We zullen zo zien dat als een knooppunt een perma-nent label krijgt, het (definitieve) kortste pad naar dat punt gevonden is. Hetalgoritme kan het best uitgelegd worden aan de hand van een voorbeeld. In ta-bel 1 worden de iteratiestappen getoond die horen bij het kortste-padprobleem

Page 9: Optimalisatie in Netwerken∗

1.2. HET ALGORITME VAN DIJKSTRA 3

van figuur 1. In deze figuur bestaat niet tussen elk tweetal knooppunten eenverbindingslijn. Daar waar tussen twee knooppunten een verbindingslijn nietbestaat, nemen we een fictieve verbindingslijn met een zeer grote lengte zodatdeze nooit in de optimale route gebruikt wordt. Een zeer grote lengte noterenwe met het wiskundige symbool ‘∞′ voor oneindig groot.

Tabel 1 De iteraties voor het kortste-padprobleem

it. 1 it. 2 it. 3 it. 4 it. 5 it. 6

N1 – – – – – –N2 (7, N1) (7, N1) (6, N3)∗ – – –N3 (4, N1) (4, N1)∗ – – – –N4 (3, N1)∗ – – – – –N5 (∞, N1) (3 + 5, N4) (8, N4) (8, N4)∗ – –N6 (∞, N1) (∞, N1) (4 + 8, N3) (6 + 3, N2) (9, N2)∗ –N7 (∞, N1) (3 + 12, N4) (15, N4) (15, N4) (8 + 4, N5) (12, N5)∗

Voor de uitleg van de berekeningen in de tabel, merken we eerst op dat hetkortste pad van knooppunt N1 naar zichzelf het pad N1 → N1 is en dus lengte0 heeft. Immers, volgens de aanname heeft elke pijl een niet-negatieve lengte,zodat ieder ander pad van N1 naar N1 een lengte groter dan of gelijk aan 0zal hebben en derhalve niet korter kan zijn. Omdat het optimale pad van N1

naar N1 op voorhand dus al bekend is, kan het algoritme gestart worden doorN1 een permanent label te geven. Vervolgens leggen we uit hoe de eerste tweekolommen van de tabel tot stand gekomen zijn. De andere kolommen sprekendan voor zichzelf.

• De eerste kolom van de tabel geeft voor elk ander knooppunt Ni eenbovengrens op de lengte van het kortste pad van N1 naar Ni door de lengtete nemen van de pijl (N1, Ni) (als een dergelijke pijl bestaat). De kleinstebovengrens in kolom 1 is 3 bij knooppunt N4. Deze kleinste bovengrens 3geeft de definitieve waarde van de kortste afstand van beginpunt N1 naarknooppunt N4. Elk ander pad van N1 naar N4 heeft een lengte groter dan3: zo’n pad moet namelijk via een ander punt gaan, maar een pad vanN1 naar een ander punt dan N4 heeft al een lengte groter dan 3 en elkvervolgpad van het andere punt naar N4 heeft een niet-negatieve lengte.Knooppunt N4 krijgt daarom een permanent label, aangegeven met een ∗.

• Om de tweede kolom te verkrijgen beschouwen we alle tijdelijk gelabel-de knooppunten Ni waarvoor een pijl (N4, Ni) bestaat. Dit zijn Ni =N3, Ni = N5 en Ni = N7. We kunnen nu de lengte berekenen van het paddat bestaat uit het kortste pad van N1 naar N4 plus de pijl (N4, Ni). Delengte van dit pad is 3 + 9 = 12 voor Ni = N3, is 3 + 5 = 8 voor Ni = N5

en is 3 + 12 = 15 voor Ni = N7. Voor de knooppunten N5 en N7 is delengte van dit pad kleiner dan de huidige bovengrens voor de lengte vanhet kortste pad. We veranderen daarom de bovengrens voor deze tweeknooppunten. De tweede component van het label van de knooppunten

Page 10: Optimalisatie in Netwerken∗

4 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

N5 en N7 wordt veranderd in N4. Deze tweede component geeft aan watde directe voorganger is van het knooppunt op het beste tot dan gecon-strueerde pad van N1 naar het betreffende knooppunt. Knooppunt N3

heeft nu de kleinste bovengrens in kolom 2. Deze bovengrens van 4 geeftde lengte van het kortste pad van N1 naar N3.

• Het feit dat het kortste pad van N1 naar N3 gevonden is, beargumenteerje als volgt. Stel dat er een ander pad P is van N1 naar N3 met een lengtedie kleiner is dan 4. Dit pad moet dan als tussenliggend knooppunt eenknooppunt met tijdelijk label hebben (in dit geval een van de knooppuntenN2, N5, N6 of N7). Het deel van het pad P van N1 tot het eerste knooppuntmet een tijdelijk label heeft een lengte van tenminste 4 vanwege het feitdat de laagste bovengrens bij de tijdelijke gelabelde knooppunten 4 is.Dit betekent dat de totale lengte van het pad P groter dan of gelijk aan4 is omdat de pijllengtes niet-negatief zijn. Dit is in tegenspraak met deaanname dat het pad P een lengte kleiner dan 4 heeft. Dus de tweedeiteratie geeft het kortste pad van N1 naar N3.

Het zal nu duidelijk zijn hoe we het algoritme voortzetten. In de derde iteratie-stap proberen we het label aan te passen van alle tijdelijk gelabelde knooppuntenNi die direct bereikbaar zijn vanuit het knooppunt N3 dat zojuist een permanentlabel heeft gekregen, etc. In elke iteratiestap geldt dat het definitieve kortstepad gevonden is voor het punt dat een permanent label krijgt in de betreffendeiteratiestap. Om de correctheid van deze bewering aan te tonen, pas je hetzelfdeargument toe als hiervoor gegeven is voor de tweede iteratiestap (waarbij je dusgebruik maakt van het feit dat op elk ‘tijdelijk’ pad de tussenliggende knooppun-ten een permanent label hebben). Controleer de berekeningen van tabel 1 omte kijken of je de essentie van het algoritme goed begrepen hebt: in elke iteratievergelijk je voor ieder tijdelijk gelabeld knooppunt de huidige schatting van dekortste afstand naar dit knooppunt met de som van de lengte van het optimalepad naar het zojuist permanent gelabelde knooppunt en de directe afstand vandit permanent gelabelde knooppunt naar het tijdelijk gelabelde knooppunt.

Elk optimaal pad kan gemakkelijk teruggelezen worden uit tabel 1 omdat wein de berekeningen de directe voorgangers van de knooppunten bijgehoudenhebben. Stel dat we het optimale pad willen weten van N1 naar N7. Daartoezoek je in de tabel de iteratiestap waarin knooppunt N7 een permanent labelkreeg. Het permanente label van N7 is (12, N5). Dit betekent dat het kortstepad van startpunt N1 naar N7 bestaat uit het kortste pad van N1 naar N5 plusde directe verbinding (N5, N7). Vervolgens zoek je het permanente label van N5

op, etc. Zo vind je op dit optimale pad van N1 naar N7 dat knooppunt N5 devoorganger van knooppunt N7 is, knooppunt N4 de voorganger van knooppuntN5 en knooppunt N1 de voorganger van knooppunt N4. Het optimale pad isdus N1 → N4 → N5 → N7 met een totale lengte van 12.

Algemene formulering

Het is inzichtelijk om het algoritme te geven voor het algemene geval. We be-

Page 11: Optimalisatie in Netwerken∗

1.2. HET ALGORITME VAN DIJKSTRA 5

schouwen een gericht netwerk met n knooppunten N1, . . . Nn, waarbij de lengtevan een bestaande pijl (Ni, Nj) wordt weergegeven met cij . Het algoritme kantevens toegepast worden op een ongericht netwerk. Vervang simpelweg elkelijn tussen twee knooppunten door twee pijlen met tegengestelde richting diedezelfde lengte hebben. We nemen aan dat

cij ≥ 0 voor alle pijlen (Ni, Nj).

Deze aanname van niet-negatieve afstanden is essentieel voor het algoritme vanDijkstra. Stel dat we het kortste pad willen berekenen van een specifiek start-punt Ns naar een of meerdere andere knooppunten. In het algoritme gebruikenwe een label (αi, βi) voor elk knooppunt Ni, waarbij αi de huidige beste schat-ting is voor de lengte van een kortste pad van Ns naar Ni en βi aangeeft watde directe voorganger van Ni is in tot nu toe de beste schatting van het kortstepad van Ns naar Ni.

Algoritme

Initialisatie. Het knooppunt Ns wordt permanent gelabeld. Geef elk knoop-punt Ni met i 6= s de tijdelijke labels

αi := csi en βi := Ns,

met csi een heel groot getal als de pijl (Ns, Ni) niet bestaat.

Stap 1. Zoek onder de tijdelijk gelabelde knooppunten Ni het knooppuntwaarvoor αi het kleinst is.∗ Stel dat het geval is voor knooppunt Nk. Merk danhet label van knooppunt Nk als permanent en laat p:=k.

Stap 2. Voor elk tijdelijk gelabeld knooppunt Ni waarvoor de pijl (Np, Ni)bestaat en αp + cpi < αi is, pas de labels αi en βi aan volgens:

αi := αp + cpi en βi := Np.

Stap 3. Herhaal stap 1 totdat alle knooppunten een permanent label hebben.

Rekenlast van het algoritme

Het algoritme vereist de meeste rekentijd als alle n knooppunten onderling ver-bonden zijn. Laten we voor dit geval het aantal rekentechnische bewerkingenbepalen voor het geval dat een directe verbinding tussen elk tweetal knooppun-ten bestaat. In de eerste iteratie van het algoritme moeten n − 1 optellingenuitgevoerd worden en moet, 2(n − 1) keer het minimum van twee getallen be-paald worden. In de kde iteratie zijn deze aantallen bewerkingen gelijk aan n−k,respectievelijk 2(n − k). Dus het bovenbeschreven algoritme vereist in totaal∑n

k=1(n− k) = 12n(n− 1) optellingen en n(n− 1) keer het bepalen van het mi-

nimum van twee getallen. Anders gesteld, de totale rekentijd van het algoritme∗Als αi minimaal is voor meerdere knooppunten kies dan willekeurig een van deze knoop-

punten (per iteratie mag slechts een knooppunt een permanent label krijgen).

Page 12: Optimalisatie in Netwerken∗

6 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

is evenredig met n2, waarbij n het aantal knooppunten is. Opmerking : Aan-passingen van basisalgoritme van Dijkstra zijn ontworpen waarvoor het aantalrekenbewerkingen veel geringer is en dus het algoritme enorm versneld wordt(het zogenoemde A∗-algoritme).

Wiskundig bewijs van correctheid

Figuur 3 Iteratiestap van Dijkstra

*

Hierboven hebben we met een omhaal van woorden beargumenteerd dat hetDijkstra algoritme leidt tot de kortste paden. In de prachtige taal van de wis-kunde kan veel korter en eleganter de correctheid van het Dijkstra algoritmebewezen worden. Daarvoor hebben we enige wiskundige notatie nodig. Voor denotationele overzichtelijkheid geven we de knooppunten aan met letters zoalss, x en y in plaats van Ns, Ni en Nj , waarbij we met s het startknooppuntbedoelen. Noteer met L∗pq de lengte van het allerkortste pad van knooppunt pnaar knooppunt q. Noteer met S de verzameling van knooppunten met een per-manent label: in de eerste stap van het algoritme beginnen we met S bestaandeuit alleen het startknooppunt s en in elke volgende stap wordt S met precieseen knooppunt uitgebreid. Noteer met α(p) de meest recente schatting uit hetalgoritme voor de lengte van het kortste pad van startpunt s naar knooppunt p.Met deze notatie gewapend, kunnen we een elegant wiskundig bewijs gegeven.Dit bewijs berust op de zogenoemde wiskundige methode van volledige induc-tie. Voor de eerste stap van het algoritme is de correctheid van het algoritmetriviaal (het kortste pad van s naar zichzelf heeft lengte 0). Stel nu dat vooreen aantal opeenvolgende stappen van het algoritme de correctheid bewezen is,dan bewijzen we als volgt de correctheid voor de volgende stap:

• Stel dat Dijkstra’s algoritme in deze stap knooppunt v wil toevoegen aande huidige verzameling S.

• Veronderstel nu eens dat het allerkortste pad P ∗ van s naar v een lengtekleiner dan α(v) heeft. Het pad P ∗ moet een verbindingslijn bevattenwaarin de huidige verzameling S wordt verlaten, zeg de verbindingslijn(x, y) met x in S en y buiten S, zie figuur 3.

Page 13: Optimalisatie in Netwerken∗

1.3. MEEST BETROUWBARE PAD 7

• Onder bovenstaande veronderstelling en het feit dat de afstanden niet-negatief zijn, vinden we:

α(v) > L∗sv = L∗sx + cxy + L∗yv

≥ L∗sx + cxy = π(x) + cxy

= α(y).

• De bevinding α(v) > α(y) is in tegenspraak met het feit dat in de huidigestap van Dijkstra α(w) voor de knooppunten w buiten S het kleinst isvoor w = v. De gemaakte veronderstelling dat α(v) > L∗sv kan dus nietjuist kan zijn. Dit betekent dat α(v) = L∗sv, waarmee de correctheid vanDijkstra ook voor elke volgende stap na de triviale eerste stap bewezen is.

1.3 Meest betrouwbare pad

Tot dusver namen we aan dat de getallen die behoren bij de pijlen lengtes(kosten) zijn en dat de lengte (kosten) van een pad gelijk is aan de som vande lengtes (kosten) van de pijlen die samen het pad vormen. Stel nu dat weeen gericht netwerk hebben waarin een getal pij met 0 < pij < 1 hoort bijelke bestaande pijl (Ni, Nj), waarbij het getal pij staat voor de kans dat eenboodschap verloren gaat als deze door de pijl (Ni, Nj) wordt gezonden. Wijnemen aan dat storingen in de verschillende pijlen onafhankelijk van elkaaroptreden. Wat is het meest betrouwbare pad van een gegeven startpunt Ns

naar een eindpunt Nt, oftewel wat is het pad waarin met de grootst mogelijkekans de boodschap niet verloren gaat?

Dit probleem kan eenvoudig worden omgezet in een standaard kortste-pad-probleem. Daartoe werken we met de zogenoemde complementaire kansen1 − pij , waarbij dus 1 − pij de kans is dat een boodschap niet verloren gaattijdens een passage langs pijl (Ni, Nj). Een boodschap die verstuurd wordtlangs een pad P gaat niet verloren ergens in dit pad alleen dan als de bood-schap ongestoord elke pijl van het pad doorloopt. Noteer met α(P) de kans datde boodschap niet verloren gaat op een pad P van knooppunt Ns naar knoop-punt Nt. Onder de veronderstelling dat storingen in de pijlen onafhankelijk vanelkaar optreden, volgt dat de kans α(P) gegeven wordt door het product van dekansen op geen storing in elk van de afzonderlijke pijlen van het pad. Met dewiskundige notatie

∏ni=1 ai voor het product a1 × a2 × · · · × an volgt dan dat

α(P) =∏

(i,j)

(1− pij),

waarbij het product wordt genomen over alle combinatie (i, j) waarvoor (Ni, Nj)een element is van het pad P. Het meest betrouwbare pad van s naar t wordtdus gevonden door α(P) te maximaliseren over alle mogelijke paden P van Ns

naar Nt. Het maximaliseren van α(P) over P geeft dezelfde maximaliserende

Page 14: Optimalisatie in Netwerken∗

8 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

P als het maximaliseren van log α(P) over P: immers α(P1) ≤ α(P2) dan enslechts dan als log α(P1) ≤ log α(P2). Op grond van het feit dat

log(ab) = log(a) + log(b) voor alle a, b > 0,

kan het oorspronkelijke probleem dus worden teruggebracht tot het probleemvan het maximaliseren van

log α(P) =∑

(i,j)

log(1− pij).

Dit oplossing van dit probleem vind je weer door het minimaliseren van

−∑

(i,j)

log(1− pij)

over alle mogelijke paden P (bedenk het punt waarin een functie f(x) het maxi-mum aanneemt is hetzelfde als het punt waarin de functie h(x) = −f(x) hetminimum aanneemt). Het probleem van het vinden van het meest betrouwba-re pad is dus teruggebracht tot een standaard kortste-padprobleem waarin delengtes van de pijlen worden gegeven door

cij = − log(1− pij).

De getallen pij liggen tussen 0 en 1 en dus ook de getallen 1 − pij . Aangeziende functie log(x) negatief is voor 0 < x < 1, volgt dat de getalwaarden cij =− log(1− pij) niet-negatief zijn. Dit betekent dat je het algoritme van Dijkstrakunt toepassen om het meest betrouwbare pad te berekenen.

Illustratie

Ter illustratie beschouw een netwerk met vijf knooppunten waarin een bood-schap van knooppunt N1 naar knooppunt N5 gestuurd moet worden zodat deboodschap met maximale kans veilig aankomt in knooppunt N5. In tabel 2

Tabel 2 De verlieskansen pij

van\naar N1 N2 N3 N4 N5

N1 - 0.03 0.05 0.03 *N2 * - 0.01 0.02 0.035N3 * 0.01 - 0.04 0.05N4 * * 0.02 - 0.04

geven we voor elke directe verbinding (Ni, Nj) de kans pij dat de boodschapverloren gaat bij verzending over deze verbinding (een sterretje geeft aan dater geen directe verbinding is). Om het algoritme van Dijkstra te kunnen toe-passen, geven we eerst in tabel 3 de ‘afstanden’ cij = − log(1 − pij), waarbijwe voor de logaritme de natuurlijke logaritme met grondgetal e = 2.7183 . . .

Page 15: Optimalisatie in Netwerken∗

1.4. UITBREIDING KORTSTE-PADPROBLEEM 9

Tabel 3 De afstanden cij

van\naar N1 N2 N3 N4 N5

N1 - 0.0305 0.0513 0.0305 *N2 * - 0.0101 0.0202 0.0356N3 * 0.0101 - 0.0408 0.0513N4 * * 0.0202 - 0.0408

hebben genomen. De toepassing van Dijkstra’s algoritme op de afstanden cij

uit tabel 3 wordt samengevat in tabel 4. Merk op dat in iteratie 1 de schattingαi voor de kortste afstand minimaal is voor zowel i = 2 en i = 4, en wegekozen hebben om N4 een permanent label te geven. (let op: per iteratie mag

Tabel 4 De iteraties van Dijkstra’s algoritme

iteratie 1 iteratie 2 iteratie 3 iteratie 4

N1 – – – –N2 (0.0305,N1) (0.0305, N1)∗ – –N3 (0.0513, N1) (0.0305 + 0.0202, N4) (0.0305 + 0.0101, N2)∗ –N4 (0.0305, N1)∗ – – –N5 (∞, N1) (0.0305 + 0.0408, N4) (0.0305 + 0.0356, N2) (0.0661, N2)∗

slechts een knooppunt tegelijk een permanent label krijgen). Uit tabel 4 blijktdat onder de afstanden cij het kortste pad van N1 naar N5 gegeven wordt door

N1 → N2 → N5 met lengte 0.0661.

Dit pad geeft ook het meest veilige pad om een boodschap van N1 naar N5

te sturen onder de verlieskansen uit tabel 3.2. De kans dat de boodschap bijverzending langs dit pad veilig aankomt, is te berekenen als 0.97×0.955 = 0.936(de kans is ook te berekenen als e−0.0661 = 0.936).

1.4 Uitbreiding kortste-padprobleem

Het algoritme van Dijkstra kan slechts toegepast worden als de kosten (lengtes)van alle pijlen niet-negatief zijn. In het geval dat de kosten van sommige pijlennegatief zijn, kan het gebeuren dat er geen optimaal pad bestaat. Beschouw terillustratie hiervan figuur 2. In deze figuur heeft het circuit N2 → N3 → N4 → N2

negatieve kosten van −2. Door dit circuit heel vaak te doorlopen vinden we eenpad van knooppunt N1 naar knooppunt N5 waarvan de kosten naar min oneindiggaan.

In de praktijk kunnen toepassingen voorkomen waarin sommige pijlen positievekosten hebben en andere negatieve kosten. In die gevallen is het niet mogelijkom het algoritme van Dijkstra te gebruiken. Je kunt het kortste-padprobleemmet algemene kosten niet terugbrengen tot een kortste-pad probleem met niet-negatieve kosten door bij de kosten van elke pijl eenzelfde groot getal op te

Page 16: Optimalisatie in Netwerken∗

10 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

Figuur 2 Een circuit met negatieve kosten

tellen (waarom niet?). Voor het algemene geval zijn de kortste-pad algoritmengebaseerd op de optimaliseringsmethode van dynamische programmering die wehier niet zullen bespreken.

We besluiten deze paragraaf met het geven van een voorbeeld van een kortste-padprobleem waarin sommige pijlen negatieve kosten hebben. Stel dat weAmerikaanse dollars willen omwisselen in Zwitserse franken. De omwisselingmag verlopen via een aantal andere valuta’s. We nummeren de valuta’s meti = 1, . . . , n, waarbij valuta 1 correspondeert met Amerikaanse dollars en valutan met Zwitserse franken. Laat g(i, j) de wisselkoers zijn voor het omwisselenvan valuta i in valuta j. Hoe moeten we dollars omwisselen in andere valuta’som uiteindelijk een maximaal bedrag aan Zwitserse franken te verkrijgen? Wezien hierbij af van transactiekosten. We kunnen dit probleem formuleren als eenkortste-padprobleem. Laat knooppunt i corresponderen met valuta i en laat depijl (i, j) corresponderen met het omwisselen van valuta i in valuta j. Stel datwe valuta i0 = 1 omwisselen in valuta i1, dan valuta i1 in i2, etc., en tenslottevaluta ik−1 in valuta ik = n voor een of andere k met 1 ≤ k ≤ n. We krijgendan

g(i0, i1)× g(i1, i2)× . . .× g(ik−1, ik)

Zwitserse franken voor elke dollar. We willen een pad P = (i0, i1, . . . , ik) vindenwaarvoor dit product maximaal is. Het maximaliseren van het product is equi-valent aan het maximaliseren van de logaritme van het product. De logaritmevan een product is gelijk aan de som van de logaritmen van de individuele termenvan het product. We zoeken dus naar een pad P = (i0, i1, . . . , ik) waarvoor

k∑m=1

log g(im−1, im)

maximaal is. Dit komt weer neer op het minimaliseren van−∑km=1 log g(im−1, im)

over alle mogelijke paden P. Het valutaprobleem kan dus vertaald worden ineen standaard kortste-padprobleem waarin de kosten

cij = − log g(i, j)

verbonden zijn aan pijl (i, j). Voor de pijlkosten cij geldt

Page 17: Optimalisatie in Netwerken∗

1.5. OPGAVEN 11

cij ={

< 0 als g(i, j) > 1> 0 als g(i, j) < 1.

Dus sommige pijlen hebben negatieve kosten en andere pijlen hebben positievekosten. Het is interessant op te merken dat het bestaan van een circuit metnegatieve kosten duidt op het bestaan van een ‘gat’ in de wisselkoersmarkt. Alsje daar snel gebruik van maakt voordat de markt het gat dicht, kun je veel geldverdienen.

1.5 Opgaven

1.1 In een wijk van een grote stad staat een kazerne. Vanuit deze brand-weerkazerne moet een zevental knooppunten snel bereikt kunnen wor-den. De knooppunten nummeren we als 1 t/m 8, waarbij knooppunt 1 debrandweerkazerne voorstelt. De knooppunten zijn verbonden door stra-ten, waarbij sommige straten eenrichtingsverkeer zijn en andere stratentweerichtingsverkeer. In de straten met tweerichtingsverkeer is de rijtijdin beide richtingen niet even groot. In onderstaande tabel geven we demogelijke routes en de rijtijden aan. Bereken het kortste pad van de brand-weerkazerne naar elk ander knooppunt. Antwoord : de kortste afstandenzijn 4, 13, 2, 14, 5, 7 en 13.

van\naar 2 3 4 5 6 7 81 5 22 9 1 7 103 10 54 2 35 7 4 76 2 97 7 68 1 10

1.2 In de tijd van het Wilde Westen werd gewoonlijk gereisd met de post-koets. Een reis van Santa Fe naar Fort Thomas nam destijds drie dagenin beslag. De mogelijke routes worden in onderstaande figuur weergege-ven. De getallen bij de mogelijke dagtrajecten geven de reisafstand vanhet betreffende traject aan, gemeten in Indiaanse prairiemijlen. De ge-liefde country-zangeres Lilian Song uit Santa Fe moet optreden in FortThomas. Ze vraagt je om haar te helpen om de route te bepalen die depostkoets moet nemen van Sante Fe naar Fort Thomas zodat de totalereisafstand minimaal is.

1.3 In een onherbergzame streek is een grote olievoorraad ontdekt. De olie-maatschappij wil een pijplijn aanleggen van de vindplaats naar een raffi-naderij in een naburig land. De pijplijn moet via een of meerdere van een

Page 18: Optimalisatie in Netwerken∗

12 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

aantal gegeven knooppunten lopen. De knooppunten zijn genummerd als1 t/m 7, waarbij knooppunt 1 de vindplaats van olie voorstelt en knoop-punt 7 de raffinaderij is. In onderstaande tabel geven wij voor de mogelijkeroutes de afstanden in tientallen kilometers tussen de knooppunten en dekosten in duizenden euro’s per tien km. pijplijn tussen de knooppunten (dekosten worden tussen haakjes gegeven). Verder moet in elk knooppunt datgebruikt wordt een pompstation gebouwd worden (behalve in eindpunt 7).De kosten van een pompstation zijn 25 000 euro in de knooppunten 2, 4,6 en 45 000 euro in de knooppunten 1, 3 en 5. Voor welk pijplijnnetwerkzijn de totale kosten minimaal? Stel daartoe een gericht netwerk op metde getalwaarden voor de ‘afstanden’ cij en pas het Dijkstra algoritme toe.Antwoord : de minimale totale kosten zijn 331 duizend euro,

van\naar 2 3 4 5 6 71 20(5) 15(4)2 7(8) 2(5) 15(6)3 7(5) 6(7)4 10(5) 14(9)5 11(3)6 12(4)

1.4 Beschouw opnieuw het postkoetsprobleem uit opgave 1.2. Het reizen perpostkoets was destijds in het Wilde Westen een riskante aangelegenheid.Veronderstel nu dat de getallen bij de dagtrajecten de kansen in procentenaangeven dat de postkoets overvallen zal worden op het betreffende dag-traject. Bereken nu voor Lilian de meest veilige route voor de postkoetsvan Santa Fe naar Fort Thomas.

1.5 Het studentencafe ‘Reintje de Vos’ heeft een speciale aanbieding voor dekomende vrijdagavond. Je kunt zoveel bier gratis drinken als je wilt mitsje het bier wel drinkt in porties van 0.4 liter. Je krijgt een volle bierpul van

Page 19: Optimalisatie in Netwerken∗

1.5. OPGAVEN 13

0.8 liter en daarnaast een lege bierpul van 0.3 liter en een lege bierpul van0.5 liter. Dit zijn de enige hulpmiddelen waarmee je het bier in twee gelijkeporties van elk precies 0.4 liter mag verdelen. Is dit mogelijk en zo ja, hoekun je dit doen in een minimaal aantal schenkingen? Modelleer dit als eenkortste-pad probleem en omschrijf de betekenis van de knooppunten en depijlen. Bepaal echter de optimale oplossing van dit kortste-pad probleemniet met Dijkstra (met de hand erg veel rekenwerk) maar door creatief nate denken.

1.6 Een groep van vier personen staat op de zuidelijke oever van een rivier.De groep moet de brug oversteken om naar de overkant te komen. Hetis echter pikkedonker. De groep heeft slechts een zaklantaarn bij zich.De zaklantaarn is onmisbaar om de nogal gammele brug over te steken.Niet meer dan twee personen tegelijk kunnen de brug over. Dit betekentdat verschillende oversteken nodig zijn. Niet elk van de vier personen kaneven snel de brug oversteken: persoon 1 heeft 1 minuut nodig, persoon2 heeft 2 minuten nodig, persoon 3 heeft 5 minuten nodig en persoon4 heeft 10 minuten nodig. Uiteraard is de oversteektijd bij een groepbestaande uit twee personen gelijk aan de tijd van de langzaamste vandie twee personen. Hoe moet de oversteek plaatsvinden zodat de tijd totiedereen op de noordelijke oever van de rivier staat zo klein mogelijk is(gebruik het vanzelfsprekende feit dat na een oversteek de snelste persoonuit de groep op de noordelijke oever teruggaat naar de andere oever alsdaar nog personen staan)? Modelleer dit als een kortste-pad probleem enomschrijf de betekenis van de knooppunten en de pijlen. Bepaal echter deoptimale oplossing van dit kortste-pad probleem niet met Dijkstra (metde hand erg veel rekenwerk) maar door creatief na te denken.

1.7 Beschouw een gericht netwerk met vijf knooppunten N1, . . . , N5. Eenboodschap moet worden gezonden van knooppunt N1 naar knooppunt N5.De tabel geeft voor elke pijl de kans dat de boodschap verloren gaat alsde boodschap door die verbinding wordt gezonden (een sterretje betekentdat er geen pijl is tussen de twee betreffende knooppunten). Hoe moetenwe de boodschap verzenden zodat met maximale kans de boodschap vei-lig aankomt bij knooppunt N5? Antwoord : de maximale kans op veiligeaankomst in eindpunt is 0.8742.

Van\Naar N1 N2 N3 N4 N5

N1 – 0.06 0.10 0.06 ∗N2 ∗ – 0.02 0.04 0.07N3 ∗ 0.02 – 0.08 0.10N4 ∗ ∗ 0.02 – 0.08

1.8 Vloeistof moet via een of meer tanks overgepompt worden van tank Anaar tank D. Bij het overpompen van de vloeistof van de ene tank naarde andere treedt verlies van vloeistof op. Bij overpompen van A naar

Page 20: Optimalisatie in Netwerken∗

14 HOOFDSTUK 1. KORTSTE-PADPROBLEEM

B, C en D zijn de respectievelijke verliespercentages 1%, 3% en 4%, bijoverpompen van B naar A, C en D zijn de verliespercentages 2%, 2% en3%, en bij overpompen van C naar A, B en D zijn de verliespercentages4%, 3% en 2%. Hoe wordt de vloeistof met het geringste verlies van tankA naar tank D overgepompt? Antwoord : in de optimale oplossing komt96.06% van de vloeistof over.

Page 21: Optimalisatie in Netwerken∗

Hoofdstuk 2

De minimale-opspannendeboom

2.1 Probleembeschrijving

Stel dat we een gegeven verzameling knooppunten hebben en dat voor elk tweetalknooppunten gegeven is wat de kosten zijn voor het aanleggen van een directeverbinding tussen de twee knooppunten Hoe kunnen we tegen minimale kosteneen netwerk van verbindingen construeren zodanig dat elk tweetal knooppuntenvia een pad met elkaar verbonden is? Dit is het minimale-opspannende boomprobleem voor een ongericht netwerk.

Het probleem van de minimale-opspannende boom komt naar voren bij de con-structie van telefoon- en pijpleidingnetwerken om een gegeven aantal plaatsenmet elkaar te verbinden. Beschouw ter illustratie het voorbeeld van een olie-maatschappij die een netwerk van pijpleidingen wil construeren om vijf oliewin-plaatsen te verbinden met een oliehaven. Elke winplaats moet direct of indirectmet de haven verbonden zijn. Tabel 5 geeft de afstanden tussen de winplaatsenonderling en de afstanden tussen de winplaatsen en de haven. De vijf winplaat-sen worden genoteerd met N1, . . . , N5 en de haven met N0. Hoe verbinden wede winplaatsen en de haven zodanig dat de totale lengte van de pijpleidingenminimaal is?

We hebben het concept van een opspannende boom nodig om het probleem op telossen. Een opspannende boom is een netwerk waarin elk tweetal knooppuntendoor een pad met elkaar in verbinding staan en waarin geen circuits voorkomen.(een circuit is een pad waarvan het begin- en eindpunt samenvallen). In eenopspannende boom is er tussen elk tweetal knooppunten een uniek pad (ga ditresultaat zelf na door een zogenoemd bewijs uit het ongerijmde: verondersteldat er twee punten zijn waartussen twee verschillende paden bestaan en leiddan een tegenspraak af). Ga ook zelf na dat een opspannende boom n − 1

15

Page 22: Optimalisatie in Netwerken∗

16 HOOFDSTUK 2. DE MINIMALE-OPSPANNENDE BOOM

Tabel 5 De afstandentabel

N0 N1 N2 N3 N4 N5

N0 – 21 13 45 47 53N1 – 7 53 69 71N2 – 43 57 67N3 – 9 39N4 – 37

verbindingsstukken heeft als er n knooppunten zijn. Figuur 4 geeft voor hetolievoorbeeld twee voorbeelden van een opspannende boom. Deze opspannendebomen hebben de respectievelijke lengtes 171 en 143.

Figuur 4 Twee opspannende bomen

Een minimale-opspannende boom is een opspannende boom met minimale kosten(lengte). Het algoritme van Prim construeert een minimale-opspannende boomdoor stapsgewijs een deelboom steeds meer uit te bouwen.

Algoritme van Prim

Stap 1. Begin met de triviale deelboom enkel bestaande uit een willekeuriggekozen knooppunt.

Stap 2. Bepaal het niet-verbonden knooppunt waarvoor de kosten het kleinstzijn om deze rechtstreeks met een knooppunt van de huidige deelboom te ver-binden. Breid de deelboom uit met dit knooppunt.

Stap 3. Stop als alle knooppunten onderling verbonden zijn; ga anders terugnaar stap 2 met de nieuwe deelboom.

Dit algoritme noemen we een ‘gretig’ algoritme aangezien het in elk stadiumhandelt alsof het de laatste mogelijkheid is om een verbinding toe te voegen.Het probleem van de minimale-opspannende boom is een van de uitzonderingenwaarvoor een gretig algoritme een optimale oplossing levert.

We passen het algoritme toe op de data in tabel 5.

Stap 1. Begin met de triviale deelboom bestaande uit knooppunt N0.

Stap 2. Het knooppunt N2 ligt het dichtst bij knooppunt N0. Verbind dezetwee knooppunten met elkaar.

Page 23: Optimalisatie in Netwerken∗

2.2. HET ALGORITME VAN PRIM 17

Stap 2. Het niet-verbonden knooppunt dat het dichtst bij knooppunt N0 ofknooppunt N2 ligt is knooppunt N1. Knooppunt N1 ligt het dichtst bij knoop-punt N2. Verbind deze twee knooppunten met elkaar.

Stap 2. Het niet-verbonden knooppunt dat het dichtst ligt bij de knooppuntenN0, N1 of N2 is knooppunt N3. Knooppunt N3 ligt het dichtst bij knooppuntN2. Verbind deze twee knooppunten met elkaar.

Stap 2. Het niet-verbonden knooppunt dat het dichtst ligt bij de knooppuntenN0, N1, N2 of N3 is knooppunt N4. Knooppunt N4 ligt het dichtst bij knooppuntN3. Verbind deze twee knooppunten met elkaar.

Stap 2. Het enig overgebleven niet-verbonden knooppunt is knooppunt N5.Knooppunt N5 ligt het dichtst bij knooppunt N4. Verbind deze twee knooppun-ten met elkaar.

Figuur 5 De minimale-opspannende boom

De minimale-opspannende boom voor het olievoorbeeld is gegeven in figuur 5.De totale lengte van de pijpleidingen is 109.

2.2 Het algoritme van Prim

Het is belangrijk om een efficiente implementatie te hebben van de procedurevoor het vinden van het niet-verbonden knooppunt dat het dichtst ligt bij dehuidige verzameling verbonden knooppunten. We formuleren nu in algemenetermen het algoritme van Prim voor het vinden van een minimale-opspannendeboom voor een ongericht netwerk met n knooppunten N1, . . . , Nn, waarbij cij

de lengte (kosten) is van een directe verbinding tussen de knooppunten Ni enNj . Het algoritme houdt de verzameling Sv van verbonden knooppunten bijen past in elke stap de labels van de niet-verbonden knooppunten aan. Elkniet-verbonden knooppunt Nj heeft twee labels αj en βj , waarbij αj de kleinsteafstand is tussen knooppunt Nj en de huidige deelboom, en βj het knooppuntuit de huidige deelboom is dat het dichtst bij Nj ligt.

Page 24: Optimalisatie in Netwerken∗

18 HOOFDSTUK 2. DE MINIMALE-OPSPANNENDE BOOM

Initialisatie. Kies willekeurig een knooppunt Ns. Laat in eerste instantiede verzameling Sv van knooppunten alleen Ns bevatten en de verzameling Tv

van verbindingslijnen leeg zijn. Voor elk knooppunt Nj ongelijk aan Ns, stelαj := csj en βj := Ns.

Stap 1. Bepaal het knooppunt Nj buiten Sv waarvoor αj het kleinst is, steldit is het geval voor knooppunt Nk.

Stap 2. Breid Sv uit met het knooppunt Nk en breid Tv uit met de verbindings-lijn (βk, Nk). Voor elk knooppunt Nj dat nog niet tot Sv behoort en waarvoorckj < αj , worden de labels aangepast als

αj := ckj en βj := Nk.

Stap 3. Herhaal stap 1 totdat alle knooppunten verbonden zijn.

De rekenlast van het algoritme is laag. Ga na dat het totale aantal bewerkingenin het algoritme van de orde n2 is als n het aantal knooppunten is en tussenelk tweetal knooppunten een verbindingslijn mogelijk is. Het is belangrijk omeen snel algoritme te hebben voor het vinden van een minimale-opspannendeboom. Voor menig ingewikkeld combinatorisch optimaliseringsprobleem vereistde oplosmethode dat een groot aantal malen een minimale-opspannende boomprobleem als deelprobleem wordt opgelost.

Naast de eerder genoemde toepassing bij telefoon- en pijplijnnetwerken kande methode van de minimale-opspannende boom ook gebruikt worden bij dezogenoemde clusteranalyse. Stel bijvoorbeeld dat je een aantal punten in hetplatte vlak wilt samenbundelen in vier groepjes. Je zou dan met het algorirmevan Prim een minimale-opspannende boom kunnen berekenen (met als kostende Euclidische afstanden tussen de punten, d.w.z. de afstanden gemeten ineen rechte lijn). Laat je vervolgens in de minimale-opspannende boom de drielangste verbindingslijnen weg, dan krijg je vier groepjes met gebundelde punten.

Bewijs van optimaliteit

Het is niet moeilijk om te laten zien dat het gretige algoritme van Prim eenminimale-opspannende boom genereert. Laat Tk de deelboom zijn die is gecon-strueerd in de kde iteratie van het algoritme (k = 1, . . . , n). In het bijzonder,T1 = {Ns} en Tn is een opspannende boom voor het netwerk. Stel nu dat Tn

geen minimale-opspannende boom is. Dan moet er een eerste index k (≥ 2) zijnzodat de deelboom Tk geen deel is van een minimale-opspannende boom. LaatT ∗ een minimale-opspannende boom zijn die de deelboom Tk−1 bevat. Stel datTk geconstrueerd werd door Nw te verbinden met Nv ∈ Tk−1. In de opspannen-de boom T ∗ zijn de knooppunten Nv en Nw verbonden door een pad. Dit padmoet gebruik maken van een verbinding {Ng, Nh} met knooppunt Ng ∈ Tk−1 enNh 6∈ Tk−1, zie figuur 6 (in deze figuur behoren de doorgetrokken verbindingentot Tk−1 en T ∗, terwijl de gestippelde verbindingen tot T ∗ behoren maar niet totTk−1). Vanwege de keuze {Nv, Nw} in de kde iteratie geldt dat cvw ≤ cgh. Ver-wijdering van de verbinding {Ng, Nh} uit T ∗ en vervanging door de verbinding

Page 25: Optimalisatie in Netwerken∗

2.3. MINMAX PADPROBLEEM 19

{Nv, Nw} geeft een opspannende boom waarvan de lengte kleiner is dan of gelijkaan die van de minimale-opspannende boom T ∗. Dit is in tegenspraak met deaanname dat de deelboom Tk geen deel uitmaakt van een minimale-opspannendeboom. Het algoritme van Prim levert dus een minimale-opspannende boom.

Figuur 6 De optimale boom T ∗ en de deelboom Tk−1

Overigens de algoritme van Prim is onafhankelijk van hem bedacht door onzelandgenoot Dijkstra. Het verhaal gaat dat Dijkstra op het idee kwam eind jarenvijftig van de vorige eeuw toen hij op een terras aan het Damrak in Amsterdamzat, iemand een kopje koffie omgooide en Dijkstra zag hoe de plas koffie zichlangzaam over het tafeltje uitbreidde. Een treffend beeld van de werking vande algoritme (prive communicatie met J.K. Lenstra). Een ander algoritme omeen minimale-opspannende boom te construeren is Kruskal’s algoritme. Dit al-goritme sorteert eerst de verbindingslijnen op toenemende kosten en bouwt danstapsgewijs een verzameling verbindingslijnen op. Het algoritme begint met deverbindingslijn met de laagste kosten en voegt dan in elke stap de eerste nog nietonderzochte verbindingslijn van de gesorteerde lijst toe die geen circuit vormtmet de reeds gekozen verbindingslijnen. Het algoritme stopt zodra de gecon-strueerde verzameling bestaat uit n − 1 verbindingslijnen. Deze verzamelingvormt dan de minimale-opspannende boom.

2.3 Minmax padprobleem

Stel je hebt een ongericht netwerk met n knooppunten N1, .., Nn en kosten cij

voor een directe verbinding tussen knooppunt Ni en knooppunt Nj . Hoe tusseneen tweetal gegeven knooppunten een pad te vinden waarvan de grootste vande individuele kosten van de verbindingslijnen in het pad zo klein mogelijkis? Dit heet het minmax padprobleem. Als toepassing kun je denken aan hetbepalen van een route van een stad naar een andere stad in een onherbergzamestreek zodat de grootste marsafstand per dag zo klein mogelijk is. Het minmaxprobleem wordt opgelost door het volgende algoritme.

1. Bepaal de minimale-opspannende boom voor het netwerk.

2. Voor een elk gegeven tweetal knooppunten Nk en N` is het unieke padtussen Nk en N` in de minimale- opspannende boom het pad tussen Nk en N`

Page 26: Optimalisatie in Netwerken∗

20 HOOFDSTUK 2. DE MINIMALE-OPSPANNENDE BOOM

waarvan de grootste van de individuele kosten van de verbindingslijnen in hetpad minimaal is.

Het bewijs dat dit algoritme werkt is niet moeilijk. Laat P ∗ het unieke pad tus-sen Nk en N` zijn in de minimale- opspannende boom T ∗ en stel dat in dit padde verbindingslijn (Na, Nb) de grootste kosten heeft, oftewel het pad P ∗ heeftcriteriumwaarde cab. Als je de verbindingslijn (Na, Nb) weglaat in de minimale-opspannende boom dan wordt de verzameling van alle knooppunten opgedeeld intwee disjuncte verzamelingen S en S, waarbij S bestaat uit de knooppunten dieverbonden blijven met knooppunt Nk in de verbroken minimale-opspannendeboom en S bestaat uit de resterende knooppunten die verbonden blijven metN`. Voor elke verbindingslijn (Ni, Nj) met Ni ∈ S en Nj ∈ S geldt cab ≤ cij .Immers als dit niet het geval zou zijn, dan zou je een opspannende boom metlagere kosten krijgen dan de minimale-opspannende boom T ∗ door verbindings-lijn (Na, Nb) te vervangen door een andere verbindingslijn (Ni, Nj). Beschouwnu een willekeurig pad P tussen Nk en N`. Dit pad moet een verbindingslijn(Ni, Nj) met Ni ∈ S en Nj ∈ S bevatten. Dit betekent dat de criteriumwaardevan het pad tenminste cij is en dus tenminste zo groot is als de criteriumwaardecab van het pad P ∗. Hiermee is bewezen dat P ∗ een pad tussen Nk en N` is metminimale criteriumwaarde.

Een aardig voorbeeld is het volgende. Een woestijnreiziger wil een tocht makenvan beginpunt A naar eindpunt G. De mogelijke dagtrippen zijn A−B, A−C,A−D met afstanden 26, 21, 32, B−E, B−F , C−E, C−F , D−E, D−F metafstanden 10, 12, 17, 21, 7, 8 en E−G, F −G met afstanden 20, 22. Voor welkeroute is de grootste afstand die op een dag wordt afgelegd zo klein mogelijk? Deminimale-opspannende boom voor het netwerk wordt gegeven in onderstaandefiguur (ga na!). In deze opspannende boom wordt het unieke pad van A naarG gegeven door A− C − E −G. Dit is het gezochte pad waarvoor de grootsteafstand op een dag afgelegd minimaal is en de waarde 21 heeft.

2.4 Steiner-probleem

Dit fascinerende probleem is nauw verbonden met het minimale-opspannendeboomprobleem, maar is een stuk moeilijker op te lossen. In het Steiner-probleem

Page 27: Optimalisatie in Netwerken∗

2.4. STEINER-PROBLEEM 21

wordt ook gezocht naar het kortste (goedkoopste) netwerk dat een gegeven aan-tal knooppunten met elkaar verbindt, maar het probleem laat toe dat daarbijhulppunten (Steiner-punten) worden gebruikt. Deze Steiner-punten dienen alsextra steunpunt in het netwerk van verbindingen. Dit probleem heeft belang-rijke toepassingen in de praktijk, denk bijvoorbeeld aan het aanleggen van eenkabelnetwerk om dorpen onderling te verbinden in een gebied met bergen enrivieren. In zo’n situatie kan het sterk kostenbesparend zijn om Steiner-puntente gebruiken en dus in plaats van een minimale-opspannende boom met alleende dorpen als knooppunten een minimale-opspannende boom te bepalen metals knooppunten de dorpen en zorgvuldig gekozen steunpunten buiten de dor-pen. Telefoonmaatschappijen in de USA hebben met Steiner-boom constructiesmiljoenen dollars kunnen besparen bij het aanleggen van een netwerk van ver-bindingen in onherbergzame gebieden. Het moeilijke van het Steiner probleemis hoeveel Steiner-punten te kiezen en waar deze punten te plaatsen. Als deSteiner-punten eenmaal vastgelegd zijn, dan is het vraagstuk teruggebracht tothet eenvoudige probleem van het vinden van een minimale-opspannende boomvoor de oorspronkelijke knooppunten en de Steiner-punten.

Het Steiner-probleem gaat terug naar de 19de-eeuwse wiskundige Jacob Steiner,die de vraag stelde hoe een aantal verzameling punten in het platte vlak door eenlijnenstelsel met elkaar verbonden moet worden opdat de totale lengte van hetlijnenstelsel minimaal is. Dit probleem wordt het Euclidische Steiner-probleemgenoemd, als de afstanden tussen de punten Euclidische afstanden zijn, d.w.z.afstanden gemeten in een rechte lijn. Voor drie knooppunten die een gelijkzijdigedriehoek vormen, geven we in figuur 7 zowel de minimale-opspannende boom opde drie punten als de Steiner boom, waarbij het duidelijk zal zijn dat het Steiner-punt gegeven wordt door het zwaartepunt van de driehoek is. Ga zelf na datde reductie in de benodigde lijnlengte gelijk is aan

(1− 1

2

√3)× 100% = 13.4%.

In figuur 8 geven we de optimale Steiner-boom voor een simpel vierpuntspro-bleem met A, B, C en D als oorspronkelijke punten, waarbij het optimaal isom twee Steiner-punten P1 en P2 te gebruiken. Het kan bewezen worden datvoor het Euclidische Steiner probleem de optimale Steiner-boom de volgendeeigenschappen heeft:

• De hoek tussen twee aanliggende verbindingslijnen van een Steiner-puntis gelijk aan 120 graden en precies drie verbindingslijnen komen samen ineen Steiner-punt.

• Het aantal Steiner-punten is ten hoogste n − 2 als n het oorspronkelijkeaantal knooppunten is.

• Voor de lengte LStein van de beste Steiner-boom en de lengte Lboom vande minimale-opspannende boom (zonder hulppunten) geldt:

0 ≤ Lboom − LStein ≤ 12

√3Lboom.

Page 28: Optimalisatie in Netwerken∗

22 HOOFDSTUK 2. DE MINIMALE-OPSPANNENDE BOOM

Figuur 7 Een driepunts Steiner-probleem

Figuur 8 Een vierpunts Steiner-probleem

Deze eigenschappen zijn algemeen geldig voor het Euclidische Steiner-probleem.De laatste eigenschap zegt ons dat de lengte van een minimale-opspannendeboom ten hoogste teruggebracht kan worden met

(1− 1

2

√3) × 100% = 13.4%

door het toevoegen van Steiner-punten. De maximale reductie van 13.4% wordtbereikt voor het geval van drie gegeven punten die samen een gelijkzijdige drie-hoek vormen, zie figuur 7. In praktische problemen is de reductie een stukkleiner en typisch in de orde van 3 a 4%.

Tot slot van deze paragraaf bespreken we een interessante geometrische pro-cedure om de kortste Steiner-boom te vinden voor het speciale geval van eendriepunts Euclidisch Steiner-probleem. Beschouw drie gegeven punten A, B enC. Laat de driehoek ABC zijn grootste hoek hebben bij punt C. Stel dat hoekC kleiner is dan 120 graden (anders is in te zien dat de kortste Steiner-boomgegeven wordt door de minimale-opspannende boom). De procedure is als volgt:

1. Teken een gelijkzijdige driehoek ABZ op de zijde AB zodat het punt Ztegenover het punt C ligt aan de andere kant van de zijde AB.

2. Construeer een cirkel door de drie punten A, B en Z van de gelijkzijdigedriehoek. Trek een lijn van punt C naar punt Z. Het Steiner-punt P ishet snijpunt van deze lijn en de cirkel.

Deze geometrische procedure wordt geıllustreerd in figuur 9. De kortste Steiner-boom wordt gegeven door de lijnstukken AP,BP en CP . Voor het vierpunts Eu-

Page 29: Optimalisatie in Netwerken∗

2.5. OPGAVEN 23

Figuur 9 De constructie van een Steiner-punt

clidisch Steiner-probleem is ook een elegante, geometrische constructie bekend.Deze oplossing is de basis voor een oplosmethode voor het Euclidisch Steiner-probleem met meer dan vier punten. Voor het Steiner-probleem moet men inhet algemeen volstaan met rekenmethoden die een goede maar net noodzake-lijke oplossing, aangezien rekenmethoden voor een optimale oplossing praktischonuitvoerbaar zijn bij grotere problemen vanwege snel exploderende rekentijden.

2.5 Opgaven

2.1 De baggermaatschappij ”Ballast Saddam”staat voor de taak een netwerkvan oliepijpleidingen aan te leggen in een olieland aan de Perzische Golf.Vijf belangrijke vindplaatsen V1, V2, V3, V4, V5 moeten onderling en met dehavenstad H bereikbaar zijn via een nog aan te leggen stelsel van pijp-leidingen. De kosten van het aanleggen van directe pijplijnverbindingentussen de vindplaatsen onderling en tussen de vindplaatsen en de havenworden in onderstaande tabel gegeven, waarin een streepje betekent dat dedesbetreffende directe verbinding niet in aanmerking komt voor de aanlegvan een pijplijn. Bereken het goedkoopste pijplijnnetwerk.

H V1 V2 V3 V4 V5H – 200 750 – 500 –V1 200 – 900 350 – 1100V2 750 900 – – – 1200V3 – 350 – – 450 1500V4 500 – – 450 – 1150V5 – 1100 1200 1500 1150 –

Page 30: Optimalisatie in Netwerken∗

24 HOOFDSTUK 2. DE MINIMALE-OPSPANNENDE BOOM

2.2 Nadat je de minimale-opspannende boom heb berekend voor een net-werk met niet-negatieve kostengetallen cij , blijkt dat de kostengetallenniet cij maar cij

√cij hadden moeten zijn. Verklaar waarom de minimale-

opspannende boom hetzelfde blijft en de berekeningen dus niet opnieuwgedaan hoeven te worden.

2.3 Een vertrouwelijke boodschap moet door vijf mensen gelezen worden. Deboodschap wordt onderschept met kans pik als deze rechtstreeks door per-soon i aan persoon k wordt doorgegeven. Dezelfde kans pik is van toepas-sing als de boodschap rechtstreeks door persoon k aan persoon i wordtdoorgegeven (pik = pki). Deze kansen zijn gegeven in de tabel. Hoelaten we de boodschap circuleren onder deze vijf mensen zodat de kansop onderschepping zo klein mogelijk is? Bereken dit met een minimale-opspannende boom. Aanwijzing : op dezelfde wijze als in paragraaf 1.3voor het kortste-padprobleem, breng het maximaliseren van een productvan kansen terug de standaardvorm van het minimale-opspannende boomprobleem waarin de som van de kosten van de aangebrachte verbindings-lijnen wordt geminimaliseerd.

1 2 3 4 5

1 – 0.05 0.07 0.03 0.082 – 0.09 0.04 0.053 – 0.07 0.044 – 0.06

2.4 Voor de kust van Dubai zijn door Ballast-Saddam in de zee 5 kunstma-tige eilandjes genummerd als i = 1, . . . , 5 opgespoten. Deze eilanden wilmen nu verbinden door een zo veilig mogelijk dijkenstelsel zodat elk ei-land vanuit ieder ander eiland bereikbaar is. Een dijk tussen het eilandjei en eilandje j bezwijkt bij een wervelstorm met een gegeven kans pij .De kansen worden in onderstaande tabel gegeven. Bepaal het dijkenstel-sel waarvoor de kans dat tijdens een wervelstorm een of meer dijken hetbegeeft minimaal is.

1 2 3 4 5

1 – 0.03 0.02 0.03 0.072 – 0.05 0.02 0.033 – 0.05 0.024 – 0.03

2.5 Beschouw opnieuw het postkoetsprobleem uit opgave 1.2. Veronderstel nudat Lilian met haar tere gestel je vraagt een route te bepalen van SantaFe naar Fort Thomas waarvoor de grootste afstand die op een dag wordtafgelegd zo klein mogelijk is. Bereken zo’n route met behulp van eenminimale-opspannende boom.

Page 31: Optimalisatie in Netwerken∗

Hoofdstuk 3

Het toewijzingsprobleem

3.1 Probleembeschrijving

Het toewijzingsprobleem is een van de meest beroemde problemen in de gra-fentheorie en de combinatorische optimalisering. algemeen geformuleerd, luidthet probleem als volgt. Je hebt een aantal taken en een aantal personen, zeg staken en s personen. Aan elke taak moet precies een persoon worden toegewe-zen en aan een persoon kan niet meer dan een taak worden toegewezen. Voorde situatie dat er kosten cij zijn om persoon i de taak j te laten uitvoeren, isde vraag een toewijzing te bepalen waarvoor de totale kosten minimaal zijn. Inmeer wiskundige termen, je hebt een s bij s matrix C met het element cij ophet snijpunt van de ide rij en jde kolom en je wilt s elementen van de matrixC kiezen waarvoor er precies een element is in elke rij en precies een element inelke kolom zodat de som van de gekozen elementen minimaal is. Toewijzings-problemen komen in de praktijk vaak voor. Bijvoorbeeld, het toewijzen vanvertegenwoordigers aan regio’s, het toewijzen van vakken aan docenten, etc.

3.2 Hongaarse methode

De Hongaarse methode is een klassieke methode -met name voor berekeningenmet de hand- om een optimale toewijzing te berekenen. In de methode wordtverondersteld dat cij ≥ 0 voor alle i, j = 1, 2, . . . , s. Dit is geen beperking omdatde optimale oplossing niet verandert als je bij elke cij eenzelfde getal optelt. Demethode gaat als volgt.

Stap 1. Stel een vierkante s bij s kostenmatrix op met als elementen de kostenvan de mogelijke toewijzingen van de personen aan de opdrachten.

25

Page 32: Optimalisatie in Netwerken∗

26 HOOFDSTUK 3. HET TOEWIJZINGSPROBLEEM

Stap 2. Trek eerst van elke kolom het minimum element in de kolom van elkander element in de kolom af. Trek daarna van elke rij het minimumelement in de rij van elk ander element in de rij af.

Stap 3. In de gereduceerde matrix bepaal een minimum aantal horizontale enverticale lijnen om alle 0’en in de rijen en de kolommen te overdekken.Zodra het aantal overdekkende lijnen gelijk is aan de dimensie s van dekostenmatrix, ga naar stap 5. Anders, ga naar stap 4.

Stap 4. Reduceer de matrix verder door het kleinste niet-overdekte element inde gereduceerde matrix af te trekken van elk niet-overdekt element en ditkleinste element op te tellen bij elk element dat op de intersectie van tweelijnen ligt. Ga terug naar stap 3.

Stap 5. Een optimale toewijzing ontstaat door aan elke rij een kolom toe tewijzen zodanig dat de kolom een nul heeft in de betreffende rij en elkekolom slechts een keer wordt toegewezen.

Ter illustratie, beschouw het getallenvoorbeeld

persoon\opdracht 1 2 31 150 150 752 80 115 903 125 140 80

De uitvoering van de stappen 2 en 3 leidt tot

persoon\opdracht 1 2 31 70 35 02 0 0 153 45 25 5

persoon\opdracht 1 2 31 70 35 02 0 0 153 40 20 0

Uitvoering van de stappen 4 en 3 geeft

persoon\opdracht 1 2 31 50 15 02 0 0 353 20 0 0

persoon\opdracht 1 2 31 50 15 02 0 0 353 20 0 0

De overdekte kolommen en de overdekte rijen zijn aangegeven door de vetge-drukte getallen. De optimale toewijzing is persoon 1 aan opdracht 3, persoon 2aan opdracht 1 en persoon 3 aan opdracht 2. De totale kosten zijn 295.

Het bewijs van de optimaliteit van de Hongaarse methode is simpel en berustop het principe:

‘de optimale oplossing blijft hetzelfde als in de matrix van kostencoefficienten bijelk element van een specifieke rij of specifieke kolom eenzelfde constante wordtafgetrokken’.

Page 33: Optimalisatie in Netwerken∗

3.3. HET NIET-TWEEZIJDIGE KOPPELINGSPROBLEEM 27

In stap 2 van het algoritme wordt dit principe toegepast, terwijl in stap 4het principe herhaald wordt toegepast: als a > 0 het kleinste niet overdektegetal is, dan is het resultaat van stap 4 hetzelfde als wanneer in elke niet-volledig overdekte kolom het getal a afgetrokken van elk element in die kolomen daarna van elke volledig overdekte rij het getal a wordt opgeteld bij elkelement in die rij. Verder geldt het volgende. Als voor toepassing van stap 4 hetaantal overdekkende horizontale lijnen gelijk aan h is en het aantal overdekkendeverticale lijnen gelijk aan v is met h + v < s ( met s de dimensie van dekostenmatrix), dan wordt door toepassing van stap 4 de som van de elementenin de gereduceerde kostenmatrix met een positief bedrag verminderd terwijl alleelementen niet-negatief blijven (dit positieve bedrag is as(s− h− v), immers erzijn hv dubbel overdekte elementen en s2−s(h−v)+hv niet-bedekte elementenzodat de afname in de matrix is a[s2−s(h+v)+hv]−a(hv) = as[s−(h+v)]). Ditbetekent dat na een eindig aantal stappen het algoritme convergeert waarbij hetaantal overdekkende lijnen dan gelijk is aan de dimensie s van de kostenmatrix.

3.3 Het niet-tweezijdige koppelingsprobleem

Het toewijzingsprobleem wordt ook wel het ‘tweezijdige koppelingsprobleem’genoemd. Een verwant maar veel moeilijker oplosbaar probleem is het ‘niet-tweezijdige koppelingsprobleem’ (minimum-matching probleem). Dit is een net-werkprobleem met een even aantal knooppunten waarin je tegen minimale kos-ten een koppeling tot stand wilt brengen waarbij elk knooppunt aan precies eenander knooppunt wordt gekoppeld en kosten cij worden gemaakt als de tweeknooppunten Ni en Nj aan elkaar gekoppeld worden. Een interessante toe-passing van het niet-tweezijdige koppelingsprobleem is het volgende probleem:stel je hebt 2m punten (xi, yi) in het platte vlak. Hoe moet je deze puntenpaarsgewijs koppelen zodat de gemiddelde paarsgewijze afstand tussen de tweepunten in de koppels minimaal is? In deze vraagstelling worden de constantencij gegeven door de Euclidische afstand (Pythagoras):

cij =1m

√(xi − xj)2 + (yi − yj)2.

Dit probleem kwam naar voren toen paleontologen in 1995 in Montana eenvrijwel intact nest met 22 dinosaurus eieren ontdekten. De ligging van de eierendeed de vraag rijzen of de dinosaurussen 80 miljoen jaar terug elke keer 2 eierentegelijk legden. Om deze vraag te beantwoorden, werd een computersimulatieuitgevoerd waarbij een groot aantal malen 22 punten random werden gekozen ineen twee-dimensionaal gebied met de vorm van het nest. Voor elke simulatierunwerd de gemiddelde paarsgewijze afstand bepaald voor de 22 random gekozenpunten. Door een groot aantal simulatieruns te doen kon zo de empirischekansverdeling van de gemiddelde paarsgewijze afstand worden bepaald bij hetrandom kiezen van 22 punten. Het bleek dat de gemiddelde afstand voor hetnest met de 22 eieren zodanig in de linkerstaart van de kansverdeling viel datde hypothese van in paren gelegde eieren werd ondersteund.

Page 34: Optimalisatie in Netwerken∗

28 HOOFDSTUK 3. HET TOEWIJZINGSPROBLEEM

Hoe het niet-tweezijdige gewogen koppelingsprobleem op te lossen? Hiervooris een grafentheoretische oplossingsmethode bekend die in een ‘acceptabele’rekentijd (op de computer!) tot een optimale oplossing leidt. Op dit exac-te algoritme gaan we niet nader in. Een benaderingsaanpak is om een aan-tal toegelaten koppelingen te genereren en elk van deze koppelingen vervol-gens te verbeteren met een zogenoemde 2-opt verwisselingsheuristiek waarvanhet principe besproken zal worden bij het handelsreizigersprobleem in para-graaf 3 van hoofdstuk 4. Neem vervolgens de beste van de gevonden kop-pelingen. Een ‘slimme’ manier om twee acceptabele koppelingen te constru-eren is door eerst een handelsreizigersprobleem op te lossen voor de 2n pun-ten die gekoppeld moeten worden. In het handelsreizigersprobleem wordt dande afstand tussen twee punten gelijk gekozen aan de kosten om deze pun-ten te koppelen en vervolgens wordt een rondreis bepaald waarvoor elk puntprecies een keer wordt aangedaan, zie hoofdstuk 4. Neem als heuristischeoplossing voor het koppelingsprobleem elkaar afwisselende lijnstukken uit degevonden rondreis. Je krijgt hiermee twee mogelijke koppelingen. Bijvoor-beeld, de rondreis P1 → P3 → P5 → P8 → P6 → P2 → P4 → P7 → P1

leidt tot de twee mogelijke koppelingen {(P1, P3) , (P5, P8) , (P6, P2) , (P4, P7)}en {(P3, P5) , (P8, P6) , (P2, P4) , (P7, P1)}.

3.4 Opgaven

3.1 Voor een viertal vakken zijn een vijftal docenten ter beschikking. Elkedocent kan slechts een van deze vier vakken tegelijk geven. In het verledenheeft elk van de docenten ieder vak meerdere malen gegeven. Op grondvan de resultaten van enquetes onder studenten is voor elke combinatie vandocent en vak een waarderingscijfer vastgesteld. Deze waarderingscijfersworden in onderstaande tabel gegeven. Aan welke vier docenten moetende vakken worden toegewezen opdat het gemiddelde waarderingscijfer zohoog mogelijk is? Formuleer dit probleem als een toewijzingsprobleem enlos het op met de Hongaarse methode.

docent\vak 1 2 3 4

1 6.5 6.0 7.8 7.02 8.0 7.5 8.2 8.23 8.5 6.5 8.4 7.64 8.1 7.3 7.0 6.95 8.2 7.1 8.2 7.3

3.2 Voor de Nederlandse clubkampioenschappen moet een zwemcoach een es-tafetteploeg voor de 4 × 100 meter wisselslag samenstellen. Na selectie-wedstrijden komen nog vijf zwemmers in aanmerking voor de estafette-ploeg. De beste tijden van de vijf zwemmers op de verschillende zwem-

Page 35: Optimalisatie in Netwerken∗

3.4. OPGAVEN 29

nummers worden in onderstaande tabel gegeven. Los het probleem op metde Hongaarse methode.

zwemmer 1 2 3 4 5rugslag 59.2 55.3 57.9 59.8 55.7schoolslag 64.9 64.5 66.8 63.4 65.9vlinderslag 57.3 54.2 55.7 56.2 55.8vrije slag 51.3 49.3 50.2 51.9 50.8

3.3 Beschouw de maximalisatie versie van het toewijzingsprobleem waarbijeen winst wij wordt gemaakt als persoon i aan taak j wordt toegewezenen het doel is de totale winst te maximaliseren. Beargumenteer dat dittoewijzingsprobleem met maximalisatie kan worden teruggebracht tot hetstandaard toewijzingsprobleem met minimalisatie door cij gelijk −wij+Mte nemen, waarbij het getal M de grootste waarde geeft van alle wij ’s.

Page 36: Optimalisatie in Netwerken∗

30 HOOFDSTUK 3. HET TOEWIJZINGSPROBLEEM

Page 37: Optimalisatie in Netwerken∗

Hoofdstuk 4

Handelsreizigersprobleem

4.1 Probleem beschrijving

Het handelsreizigersprobleem is een klassiek probleem uit de combinatorischeoptimalisering. Hoewel het probleem eenvoudig te formuleren is, is het bijzon-der moeilijk op te lossen. Een handelsreiziger moet elke stad in zijn verkoopge-bied precies een keer bezoeken en vervolgens terugkeren naar zijn vertrekplaats.Voor elk tweetal steden i en j is de afstand van stad i naar stad j gegeven.Wij spreken van een symmetrisch handelsreizigersprobleem als voor elk twee-tal steden i en j de afstand cij van stad i naar stad j gelijk is aan de afstandcji van stad j naar stad i. Wat is de kortste rondreis? Het probleem is nietalleen interessant, maar heeft ook veel praktische toepassingen buiten de con-text van een handelsreiziger die zijn reistijd wil minimaliseren. Een belangrijketoepassing is een routeringsprobleem, waarbij een vrachtwagen goederen moetleveren aan een aantal klanten en een er route moet worden uitgestippeld diebegint en eindigt bij een centraal depot en de totale kosten van de rondreis mi-nimaal is. Andere toepassingen zijn het verzamelen van post uit brievenbussen,het optimaal plannen van een productievolgorde van verschillende producten opeen enkele machine met omschakeltijden, de bepaling van de optimale volgor-de waarin een laserstraal montagepuntjes op een chip aanbrengt uitgaande vaneen vaste startpositie, etc. Deze toepassingen kunnen als een handelsreizigers-probleem worden gemodelleerd door een ‘creatieve’ keuze van de steden en deafstanden tussen de steden. Een aardige toepassing van het handelsreizigers-probleem is ook het volgende probleem. Is het mogelijk met een paard alle 64velden van het schaakbord te bezoeken en na 64 zetten op het vertrekveld terugte zijn. Het antwoord is ja. Het probleem is een handelsreizigersprobleem metde velden van het schaakbord als de steden en als afstand tussen twee stedenhet aantal paardensprongen dat nodig is om van het ene veld naar het anderete komen. De rondreis van het paard over het schaakbord wordt in figuur 10gegeven. Dit schaakprobleem werd reeds in de negende eeuw in de Arabische

31

Page 38: Optimalisatie in Netwerken∗

32 HOOFDSTUK 4. HANDELSREIZIGERSPROBLEEM

Figuur 10 Rondreis van een paard over het schaakbord

literatuur bestudeerd. In hoofdstuk 1 van het fascinerende boek van David Ap-plegate e.a, The Traveling Salesman Problem, Princeton University Press, 2007worden interessante historische toepassingen van het handelsreizigersprobleembeschreven.∗

De rekenkundige moeilijkheid van het handelsreizigersprobleem is immens groot.Stel dat er n steden zijn. Het aantal mogelijke rondreizen is dan gelijk aan(n− 1)× (n− 2)× · · · × 1 = (n− 1)!. De wiskundige notatie voor het product1×2×· · ·×k is k!. Voor het symmetrische handelsreizigersprobleem met n stedenis het aantal mogelijke rondreizen uiteraard gelijk aan 1

2 (n − 1)!. Voor n = 15is het aantal mogelijke reizen ongeveer gelijk aan 87 miljard en voor n = 25is het aantal mogelijke rondreizen ongeveer 620 triljard. Het aantal mogelijkerondreizen schiet dus als een raket omhoog als het aantal steden toeneemt. Ditkun je goed zien aan Stirling’s beroemde benaderingsformule√

2πk (k/e)k

voor k! wanneer k voldoende groot is (zeg, k ≥ 10), waarbij e = 2.7183 . . ..De term (k/e)k verklaart de explosieve stijging van k! als k toeneemt. Je zietdus dat het al snel praktisch onmogelijk is om de optimale rondreis te vindendoor alle verschillende routes apart langs te gaan. Wiskundigen hebben heelveel onderzoek gedaan naar snelle algoritmes voor het handelsreizigersprobleem.Echter het is vrijwel zeker dat een ‘snel’ algoritme dat altijd leidt tot een kortste∗Van http://press.princeton.edu/chapters/s8451.pdf kan hoofdstuk 1 van dit boek gedown-

load worden. Een schitterende historische noot in dit hoofdstuk betreft de prijsvraag dieProcter & Gamble in 1962 uitschreef voor het publiek om voor vertegenwoordigers van dezefirma de kortst mogelijke rondreis door 33 steden in de USA te vinden. Deze prijsvraag meteen hoofdprijs van $10 000 trok ook de aandacht van toegepast wiskundigen en leidde tot deeerste oplosmethoden voor het handelsreizigersprobleem. Het beroemde ‘branch-and-bound’principe in deterministische optimalisering stamt ook uit de jaren zestig van de vorige eeuw.

Page 39: Optimalisatie in Netwerken∗

4.1. PROBLEEM BESCHRIJVING 33

rondreis niet bestaat.† Dit betekent dat in de praktijk vaak rekenmethodesgebruikt worden die tot een goede maar niet noodzakelijke optimale rondreisleiden.

Een van de grootste handelsreizigersproblemen waarvan de optimale rondreis in1998 gevonden is , wordt in figuur 11 gegeven. Deze figuur betreft de kortsterondreis door 13509 steden in de USA. Een nog groter handelsreizigersprobleemdat in 2004 exact werd opgelost betreft een kortste rondreis over alle 24978 ste-den in Zweden. Het grootste handelsreizigersprobleem tot nu toe exact opgelostis, heeft 85900 steden en deze oplossing werd in 2006 verkregen. Je kunt je af-vragen wat het praktische nut is om handelsreizigersproblemen met een steedsgroter aantal steden op te lossen. Het antwoord is dat de hieraan verbondenuitdaging vaak leidt tot nieuwe ideeen en methodes die ook voor geheel anderegrootschalige optimaliseringsproblemen uit de praktijk toepasbaar zijn.

Figuur 11 Een kortste rondreis door 13509 steden in de USA

†In theoretische zin spreekt men in de literatuur van een ‘goed’ algoritme als voor con-stantes c en K het aantal rekenbewerkingen niet sneller oploopt dan Knc bij toenemendeprobleemgrootte n. Voor veel combinatorische optimaliseringsproblemen, waaronder het han-delsreizigersprobleem, bestaat vrijwel zeker geen ‘goed’ algoritme in deze theoretische zin. Ditbelet echter niet de ontwikkeling van praktische algoritmes die ‘gemiddeld’ genomen bevredi-gend werken.

Page 40: Optimalisatie in Netwerken∗

34 HOOFDSTUK 4. HANDELSREIZIGERSPROBLEEM

4.2 Heuristische oplosmethoden

Om het handelsreizigersprobleem door te rekenen zijn twee wezenlijk verschil-lende methoden beschikbaar. Exacte methodes en zogenoemde heuristische me-thoden. Zoals in de meeste combinatorische optimaliseringsproblemen is hetpraktisch onmogelijk om een optimale geheeltallige oplossing te vinden als hetprobleem heel groot wordt. In dergelijke situaties vallen we terug op metho-den die zich beperken tot het vinden van een redelijk goede oplossing binneneen aanvaardbare hoeveelheid rekentijd. Dergelijke methoden worden heuris-tieken genoemd. Vaak kan je verschillende heuristieken ontwikkelen voor eenbepaalde probleemklasse. Bij het ontwerpen van een heuristiek moet altijd eenafweging gemaakt worden tussen de rekentijd en de kwaliteit van de berekendeoplossing. In het ideale geval levert een heuristiek een bijna-optimale oplossingbinnen een relatief geringe rekentijd. Een goede heuristiek behoort de volgendeeigenschappen te bezitten:

• intuıtief aansprekend

• eenvoudig toe te passen

• goede oplossing in een relatief geringe rekentijd.

Het ontwerpen van een heuristiek is in grote mate een kunst die vooral creativi-teit van de ontwerper vereist. Hoe een heuristiek er precies uitziet, hangt sterkaf van het specifieke probleem.

In de rest van deze paragraaf bespreken we verschillende heuristieken voor hethandelsreizigersprobleem. Deze heuristieken zijn eenvoudig te gebruiken envergen relatief weinig rekentijd. De heuristieken zijn geımplementeerd in dehandelsreizigermodule van het educatieve softwarepakket ORSTAT2000 dat ge-download kan worden van http://staff.feweb.vu.nl/tijms.

Naaste-Buur Heuristiek

Deze heuristiek is een ‘bijziende’ procedure die stapsgewijs een rondreis constru-eert. Als de beginstad gekozen is, is de stad die het dichtst bij de beginstad ligtde volgende stad op de route. Zo wordt in elke stap de route uitgebreid met eenstad die het dichtst ligt bij de laatst toegevoegde stad op de route. Het zal jeniet verbazen dat deze heuristiek tot nogal onbevredigende resultaten kan lei-den. Met name de laatste verbindingslijnen op de rondreis kunnen erg lang zijndoor ‘kortzichtigheid’ in het begin. Merk op dat de rondreis die door de heu-ristiek geconstrueerd wordt, afhangt van de gekozen startplaats. Verschillendestartplaatsen zullen in het algemeen verschillende rondreizen opleveren.

Grootste-Hoek Heuristiek

Deze heuristiek veronderstelt een Euclidisch handelsreizigersprobleem. Wij spre-ken van een Euclidisch handelsreizigersprobleem als de afstand tussen twee pun-

Page 41: Optimalisatie in Netwerken∗

4.2. HEURISTISCHE OPLOSMETHODEN 35

Figuur 12 De kleinste opspanning en invoeging

ten (x1, y1) en (x2, y2) in het platte vlak gegeven wordt door de Euclidischeafstand√

(x1 − x2)2 + (y1 − y2)2,

overeenkomstig de stelling van Pythagoras. Het grootste hoek algoritme maaktspecifiek gebruik van de speciale geometrische eigenschappen van het Euclidi-sche handelsreizigersproblemen. Als de steden niet op een lijn liggen, dan kanbewezen worden dat een optimale rondreis zichzelf niet snijdt. Dit is de redendat de eerste stap van de heuristiek als volgt is:

Stap 1. Construeer eerst de kleinste opspanning van steden zodat elke stad opof binnen de opspanning ligt, zie figuur 12.

De kleinste opspanning geeft de eerste deelroute die vervolgens stapsgewijs wordtuitgebreid. De uitbreidingsstap is gebaseerd op een geometrisch argument. Stelje zou slechts nog een stad aan de huidige deelroute mogen toevoegen. Welkestad zou je kiezen? Het antwoord is dat je uiteraard de stad kiest die het dichtstligt bij een van de verbindingslijnen in de huidige route. Bedenk vervolgens datdes te dichter een punt ligt bij een verbindingslijn, des te groter de hoek is diehet punt maakt met de twee eindpunten van de verbindingslijn. Dit leidt totstap 2 van de heuristiek.

Stap 2. Voor een gegeven deelroute, meet de hoeken tussen elk inwendig punten elk tweetal direct verbonden punten op de huidige deelroute. Het in-wendige punt dat de grootste hoek geeft, wordt ingevoegd tussen de be-treffende twee punten van de deelroute, vgl. figuur 11. Herhaal stap 2voor de nieuwe deelroute totdat alle steden zijn ingevoegd.

De grootste hoek heuristiek geeft meestal een verrassend goed resultaat. Degrootste hoek heuristiek is een uitnemend voorbeeld van een heuristiek die in-tuıtief aansprekend is, eenvoudig toe te passen is en een goede oplossing geeftin een relatief geringe rekentijd.

Page 42: Optimalisatie in Netwerken∗

36 HOOFDSTUK 4. HANDELSREIZIGERSPROBLEEM

Invoegingsheuristiek

De vorige heuristiek is een voorbeeld van een invoegingsheuristiek. Een andereinvoegingsheuristiek is de zogenoemde verste invoegingsheuristiek. Je begintmet een subtour (in het Euclidische handelsreizigersprobleem de kleinste op-spanning van de steden). In elke stap voeg je die stad toe waarvoor de kleinsteafstand tot de huidige subtour het grootst is. Het idee achter deze heuristiek isom de grote lijnen van de rondreis al in het begin vast te leggen.

Tenslotte bespreken wij de zogenoemde verwisselingsheuristiek, waarmee uit eengegeven rondreis een verbeterde rondreis geconstrueerd kan worden. Het ideedat ten grondslag ligt aan deze heuristiek is algemeen bruikbaar.

Verwisselingsheuristiek (de 2-opt heuristiek)

Deze heuristiek verwijdert uit een gegeven rondreis een aantal verbindingenen koppelt vervolgens de ontstane brokstukken tot een nieuwe rondreis doorandere verbindingen aan te brengen. Uiteraard is het doel een nieuwe rondreiste construeren die korter is dan de oude rondreis. Dit idee zullen wij uitwerkenvoor het geval dat twee verbindingen verbroken worden (de 2-opt heuristiek).Stel dat wij voor een gegeven rondreis de twee verbindingen (r, s) en (v, w)verbreken, zie het eerste deel van figuur 10. Op slechts een manier kunnenmet twee andere verbindingen de brokstukken aan elkaar gekoppeld worden toteen nieuwe rondreis. Daartoe worden de nieuwe verbindingen (r, v) en (s, w)aangelegd en de rijrichting in het gedeelte tussen s en v omgedraaid, zie hettweede deel van figuur 13. Onder de aanname dat de afstanden tussen de stedensymmetrisch zijn, volgt dat de lengte van de nieuwe rondreis kleiner is dan dievan de oude rondreis alleen dan als

crv + csw < crs + cvw.

Figuur 13 Het vervangen van twee verbindingen

De verwisselingsheuristiek werkt in grote lijnen als volgt.

Stap 1. Kies twee verbindingen (r, s) en (v, w) in de huidige rondreis.

Page 43: Optimalisatie in Netwerken∗

4.3. OPGAVEN 37

Stap 2. Als crv + csw < crs + cvw, construeer dan een nieuwe rondreis als infiguur 2.6.

De stappen 1 en 2 worden herhaald net zo lang tot voor alle paren verbindingengeldt dat verwisseling geen verbetering oplevert. De verwisselingsheuristiek zalin het algemeen stoppen bij een lokaal optimum. De rekentijd van de heuristiekis van de orde n2 als n het aantal steden is. Immers bij een rondreis die bestaatuit n verbindingen zijn er

(n2

)= 1

2n(n−1) mogelijkheden om twee verbindingente kiezen.

Een uitbreiding van de 2-opt heuristiek is uiteraard de 3-opt heuristiek, waarbijdrie verbindingslijnen kunnen worden vervangen. Verreweg de beste verwisse-lingsheuristiek is de heuristiek van Lin en Kernighan (1973). Deze heuristiekprobeert ook een gegeven rondreis te verbeteren. Echter in elke iteratiestapvervangt de heuristiek niet een vast aantal maar een wisselend aantal verbin-dingslijnen. Op de details van deze heuristiek die toepasbaar is op een ruimeklasse van combinatorische optimaliseringsproblemen gaan wij hier niet in. DeLin-Kernighan heuristiek geeft, ook voor problemen met (tien)duizenden ste-den, verbluffend goede resultaten wanneer deze heuristiek wordt toegepast opeen aantal random gekozen rondreizen (bijvoorbeeld 100 begintours) en de bes-te van de verbeterde rondreizen wordt genomen. Deze aanpak werkt vaak ookheel goed wanner de simpele 2-opt heuristiek wordt gebruikt in plaats van denogal ingewikkelde Lin-Kernighan heuristiek. In het algemeen is de kracht vaneen verwisselingsheuristiek, van welk probleem dan ook, dat deze herhaald kanworden toegepast op verschillende startoplossingen waardoor een keuze tussenverschillende ‘goede’ oplossingen mogelijk wordt.

4.3 Opgaven

4.1 Beschouw het handelsreizigersprobleem met de zeven steden A = (10, 23),B = (0, 13), C = (4, 0), D = (21, 2), E = (10, 10), F = (11, 6) enG = (13, 4). De afstanden tussen de steden zijn de Euclidische afstanden.Teken deze zeven steden op papier op precieze schaalgrootte en bepaal metde grootste-hoek heuristiek een rondreis. Probeer vervolgens deze rondreiste verbeteren met de 2-opt verwisselingsheuristiek. Opmerking : de lengtevan de allerkortste rondreis is 73.07.

4.2 Beschouw het handelsreizigersprobleem met 10 steden in het platte vlakwaarvan de coordinaten gegeven worden door (0,0), (5,20), (8,12), (7,4),(10,15), (15,4), (16,18), (18,8), (18,15) en (20,17). De afstanden tussende steden zijn de Euclidische afstanden. Teken deze tien steden op papierop precieze schaalgrootte en bepaal met de grootste-hoek heuristiek eenrondreis. Probeer vervolgens deze rondreis te verbeteren met de 2-optverwisselingsheuristiek. Opmerking : de lengte van de allerkortste rondreisis 71.29.

Page 44: Optimalisatie in Netwerken∗

38 HOOFDSTUK 4. HANDELSREIZIGERSPROBLEEM

4.3 Stel je moet op een machine n verschillende verfsoorten maken. De ma-chine kan slechts een verfsoort tegelijk maken. Omstelkosten Kij wordengemaakt als verfsoort j direct na verfsoort i wordt gemaakt. In welke volg-orde moeten de verfsoorten gemaakt worden zodat de totale omstelkostenminimaal zijn? Formuleer dit als een handelsreizigersprobleem. Aanwij-zing : voer een hulpstad in voor het begin en eind van het productieproces.

Page 45: Optimalisatie in Netwerken∗

Hoofdstuk 5

Het vrachtwagenrouteringsprobleem

5.1 Probleem beschrijving

Vanuit een centraal depot moeten een n-tal klanten i = 1, . . . , n van voorraadworden voorzien. Daartoe zijn in het depot een voldoend aantal vrachtwagensaanwezig. Elke klant mag door slechts een vrachtwagen voorraad toegeleverdkrijgen. Het aantal eenheden dat aan klant i geleverd moet worden is eengegeven waarde qi. Elke vrachtwagen heeft een beperkte capaciteit. Voor hetgemak nemen wij aan dat de vrachtwagens dezelfde capaciteit hebben en wel eencapaciteit van Q eenheden. Verder zijn gegeven de reistijden tussen de klantenen het depot en tussen de klanten onderling, waarbij verondersteld wordt datvoor elke twee punten i en j de reistijd van i naar j gelijk is aan de reistijd vanj naar i. Definieer

c0i = de reistijd tussen het depot en klant i,

cij = de reistijd tussen klant i en klant j.

Tevens wordt geeist dat de totale reistijd van een vrachtwagen niet een gegevenwaarde T mag overschrijden. Elke vrachtwagen begint en eindigt de rit in hetdepot.

De vraagstelling is hoeveel vrachtwagens moeten worden ingezet en wat voorelke ingezette vrachtwagen de te rijden route is opdat de som van de reistijdenvan de ingezette vrachtwagens zo klein mogelijk is.

Bovenstaand probleem dat in feite een handelsreizigersprobleem met meerderehandelsreizigers is, komt in de praktijk in talrijke variaties voor. In praktijk-situaties is de omvang van het probleem vrijwel altijd zodanig dat een exacteoplosmethode niet in aanmerking komt omdat de rekentijden te hoog worden.

39

Page 46: Optimalisatie in Netwerken∗

40 HOOFDSTUK 5. HET VRACHTWAGEN ROUTERINGSPROBLEEM

Vandaar dat in de praktijk getracht wordt een zo goed mogelijke oplossing teconstrueren met behulp van een heuristische aanpak. Een veelgebruikte heu-ristiek is de besparingsheuristiek van Clarke en Wright. Deze heuristiek is nietalleen eenvoudig toepasbaar, maar is ook flexibel genoeg om eventueel rekeningte houden met allerlei andere restricties die in de praktijk kunnen optreden; bij-voorbeeld, bepaalde klanten mogen niet door dezelfde vrachtwagen bevoorraadworden of een bepaalde klant kan alleen maar tijdens een beperkt aantal urenbevoorraad worden.

5.2 Heuristiek van Clarke en Wright

Het basisidee van de heuristiek is bijzonder eenvoudig en zal worden toegelichtaan de hand van de situatie weergegeven in figuur 13. In deze figuur wordteen tweetal ritten gegeven, waarbij de ene vrachtwagen de klanten A, B en Cvoorziet van goederen en de andere vrachtwagen de klanten D, E, F en G.

Figuur 14 Een tweetal ritten

Beschouw nu op elk van de twee routes een klant die rechtstreeks vanuit hetdepot bevoorraad wordt, bijvoorbeeld de klanten A en D. Dan kunnen de ritteneenvoudig gecombineerd worden tot een rit door de klanten A en D met elkaarte verbinden, zie figuur 15. In deze nieuwe rit worden door dezelfde vrachtwagende klanten C, B, A, D, E, F en G bevoorraad. De samenvoeging tot een rit isuiteraard alleen mogelijk als de vrachtwagen voldoende capaciteit heeft om alleklanten op de rit te bevoorraden en de reistijdrestrictie van de vrachtwagen nietgeschonden wordt.

Als de samenvoeging tot een rit mogelijk is, dan is in vergelijking tot de oor-spronkelijke twee ritten de besparing in reistijd gelijk aan

c0A + c0D − cAD.

Het is uiteraard alleen zinvol de samenvoeging tot een rit daadwerkelijk te doenals deze besparing groter dan of gelijk is aan nul. Hiermee hebben wij hetprincipe van de heuristiek beschreven: probeer besparingen in reistijd te ver-krijgen door routes samen te voegen via klanten die op de betreffende routesrechtstreeks vanuit het depot bevoorraad worden.

Page 47: Optimalisatie in Netwerken∗

5.2. HEURISTIEK VAN CLARKE EN WRIGHT 41

Figuur 15 Een gecombineerde rit

De besparingsheuristiek van Clarke en Wright ziet er als volgt uit:

Stap 1. Bereken de besparingsgetallen

sij = c0i + c0j − cij , i, j = 1, . . . , n.

Beschouw alleen de sij ’s die groter dan of gelijk aan nul zijn en orden dezeop afnemende grootte op een besparingslijst.

Stap 2. Wijs als beginoplossing aan elke klant een afzonderlijke vrachtwagentoe.

Stap 3. Neem het eerste getal sij op de besparingslijst en ga na of de klanteni en j op verschillende routes liggen en rechtstreeks vanuit het depot be-voorraad worden. Als dit het geval is, voeg de twee routes waarop i enj liggen samen tot een route mits de capaciteit van de vrachtwagen dittoelaat en de reistijdrestrictie niet geschonden wordt. Herhaal stap 3 voorhet volgende getal op de besparingslijst totdat deze lijst afgewerkt is.

In praktische situaties worden met deze heuristiek veelal zeer bevredigende op-lossingen verkregen. De verkregen oplossing kan mogelijk verder verbeterd wor-den door voor elk van de afzonderlijke routes te proberen de volgorde van de tebevoorraden klanten te verbeteren met behulp van een verwisselingsheuristiekuit paragraaf 2 van hoofdstuk 4.

Getallenvoorbeeld

Veronderstel n = 6 klanten waarbij voor elke klant i het aantal te levereneenheden qi gelijk aan 1 is. Elke vrachtwagen heeft een capaciteit van Q = 4eenheden. Voor elke vrachtwagen geldt een reistijdrestrictie van T = 72. Dereistijden c0i en cij worden in tabel 6 gegeven.

Page 48: Optimalisatie in Netwerken∗

42 HOOFDSTUK 5. HET VRACHTWAGEN ROUTERINGSPROBLEEM

Tabel 6 De reistijden

1 2 3 4 5 6

0 11 21 26 25 21 111 12 21 22 25 222 11 12 23 333 10 9 264 14 205 14

Wij berekenen eerst de besparingslijst

s34 = 41, s35 = 38, s23 = 36, s24 = 34, s45 = 32, s12 = 20,s25 = 19, s56 = 18, s13 = 16, s46 = 16, s14 = 14, s36 = 11,s15 = 7, s16 = 0.

Vervolgens passen wij de iteratieve heuristiek toe. De beginroutes worden inhet eerste deel van figuur 15 gegeven. Het eerste besparingsgetal is s34. Detwee routes waarop de klanten 3 en 4 liggen kunnen gecombineerd worden. Ditgeeft het tweede deel van figuur 16. Het volgende besparingsgetal is s35. Detwee routes waarop de klanten 3 en 5 liggen kunnen samengevoegd worden.De nieuwe situatie wordt weergegeven in het derde deel van figuur 16. Hetvolgende besparingsgetal s23 leidt niet tot een toevoeging omdat klant 3 nietrechtstreeks vanuit het depot bevoorraad wordt. Het besparingsgetal s24 geeftook geen samenvoeging omdat anders de reistijdrestrictie geschonden wordt.Ook het besparingsgetal s45 verandert de situatie niet. Vervolgens leidt hetbesparingsgetal s12 tot een samenvoeging die in het vierde deel van figuur 16wordt gegeven.

Het besparingsgetal s25 leidt niet tot een samenvoeging aangezien anders zowelde reistijdrestrictie als de capaciteitsrestrictie geschonden wordt. De twee routeswaarop de klanten 5 en 6 liggen kunnen samengevoegd worden. De nieuwe situ-atie wordt in het vijfde deel van figuur 16 weergegeven. De besparingsgetallens13 en s46 veranderen de situatie niet. Het besparingsgetal s14 leidt niet tot eensamenvoeging vanwege de reistijdrestrictie en de capaciteitsrestrictie. De bespa-ringsgetallen s36 en s15 laten de situatie eveneens ongewijzigd. Tenslotte leidthet besparingsgetal s16 niet tot een samenvoeging vanwege de reistijdrestrictieen de capaciteitsrestrictie.

De heuristiek van Clarke en Wright geeft dus een oplossing waarbij twee vracht-wagens nodig zijn die de route depot – klant 1 – klant 2 – depot en de routedepot – klant 6 – klant 5 – klant 3 – klant 4 – depot rijden. De totale reistijdis 44 + 69 = 113.

Page 49: Optimalisatie in Netwerken∗

5.2. HEURISTIEK VAN CLARKE EN WRIGHT 43

Figuur 16 De iteratie-stappen

Page 50: Optimalisatie in Netwerken∗

44 HOOFDSTUK 5. HET VRACHTWAGEN ROUTERINGSPROBLEEM

5.3 Opgaven

5.1 Een expeditiebedrijf heeft opdracht gekregen vanuit een centraal depot(O) goederen te leveren aan klanten in zeven steden A tot en met G. Dehoeveelheden die geleverd moeten worden en de reistijden worden in on-derstaande tabel gegeven. De vrachtwagens van het bedrijf hebben elk eencapaciteit van 45 eenheden. Er zijn geen reistijdrestricties gesteld. Bepaalmet de heuristiek van Clarke en Wright een leveringsschema. Antwoord :de Clarke en Wright heuristiek geeft twee routes met een totale reistijdvan 328.

van/naar A B C D E F G levering

O 52 56 47 30 56 12 63A 60 94 38 22 62 87 9B 69 32 44 60 34 12C 62 92 38 52 18D 32 38 52 6E 65 74 3F 62 12G 6

Page 51: Optimalisatie in Netwerken∗

Hoofdstuk 6

Euler en het Chinesepostbodeprobleem

6.1 Probleem beschrijving

Het handelsreizigersprobleem komt neer op het vinden van een minimaal-kostencircuit in een graaf zodat elk punt van de graaf precies een keer aangedaanwordt. Een soort duale van dit probleem is het grafen-probleem waarin gezochtwordt naar een circuit dat elk lijnstuk van de graaf precies een keer gebruikt.Dit probleem staat bekend als het Euler-circuit probleem. Een Euler circuithoeft niet te bestaan. Een uitbreiding van het probleem is dan het Chinesepostbodeprobleem waarin een circuit wordt gezocht dat elk lijnstuk van de graaftenminste een keer aandoet en waarvoor de totale kosten minimaal zijn ingevalkosten verbonden zijn aan het doorlopen van het lijnstuk. Dit probleem heeftbelangrijke toepassingen in de praktijk. Het Chinese postbodeprobleem leidttot een interessante combinatie van standaard algoritmes.

6.2 Euler circuit

Het begrip Euler circuit heeft zijn grondslag in het beroemde Konigsberg brug-probleem (1736). De stad Konigsberg (tegenwoordig: Kaliningrad) is gebouwdop de twee oevers van de rivier de Pregel en op twee eilanden in de rivier. Deoevers en de twee eilanden zijn verbonden door zeven bruggen zoals aangegevenin figuur 16.

De vraag gesteld in 1736 was of het mogelijk is een wandeling te maken waarbijelke brug precies een keer aangedaan wordt en je weer terugkeert in het begin-punt van de wandeling. Op grond van een graaf-representatie van het probleemconcludeerde Euler (1707 - 1783) dat zo’n wandeling niet mogelijk is. Door elke

45

Page 52: Optimalisatie in Netwerken∗

46 HOOFDSTUK 6. EULER EN HET CHINESE POSTBODEPROBLEEM

Figuur 17 Een plattegrond van Konigsberg.

Â

Á

¿

À

'

&

$

%eiland Aeiland B

rivieroever C

rivieroever D

rivierde Pregel

rivieroever en elk eiland te representeren door een punt en elke brug door eenlijnstuk kan de plattegrond uit figuur 17 worden weergegeven door een equiva-lente graaf, zie figuur 18. Dit is een prachtige illustratie hoe concrete problemeninzichtelijk kunnen worden gemaakt door het aanbrengen van abstracte wiskun-dige structuur. De graaf in Figuur 18 is een ongerichte graaf, dat wil zeggen elklijnstuk van de graaf kan in beide richtingen doorlopen worden.

Aan de hand van de graaf in figuur 18 introduceren wij enige begrippen die wijhieronder nodig hebben. Een graaf heetsamenhangendals elk tweetal puntenonderling bereikbaar zijn door een pad in de graaf. De graad van een punt wordtgedefinieerd als het aantal lijnstukken dat in het punt samenkomt. Zo is de graadvan het punt A gelijk aan 3 en de punten B, C en D hebben respectievelijk degraad 5, 3 en 3.

Figuur 18 Equivalente graaf.

©©©©©©©©©©©

HHHHHHHHHHHs

s

s

sB A

D

C

Een Euler circuit is gedefinieerd als een circuit dat elk lijnstuk van de graafprecies een keer doorloopt (een circuit is een pad waarvan het beginpunt en heteindpunt samenvallen). Evenzo wordt een Euler pad gedefinieerd als een paddat elk lijnstuk van de graaf precies een keer gebruikt. Voor een pad mogen hetbeginpunt en het eindpunt verschillend zijn.

Page 53: Optimalisatie in Netwerken∗

6.2. EULER CIRCUIT 47

In het volgende zullen wij ons beperken tot het geval van een ongerichte graaf.De basisstelling voor het Euler probleem is als volgt:

Eigenschap. Een samenhangende ongerichte graaf bevat een Euler circuit(pad) dan en slechts dan als het aantal punten van oneven graad gelijk aan0 (0 of 2) is.

Wij bewijzen deze eigenschap voor het geval van een circuit. Het bewijs voorhet geval van een pad verloopt geheel analoog.

(a) Noodzakelijkheid. Stel dat de graaf een Euler circuit bevat. Aangezien hetEuler circuit elk lijnstuk precies een keer gebruikt, geldt voor elk punt dat hetcircuit een lijnstuk gebruikt om het punt binnen te komen en een ander lijnstukom het punt te verlaten. Dus de graad van het punt is 2 maal het aantal kerendat het Euler circuit het punt binnenkomt en dus de graad is even.

(b) Voldoendheid. Stel dat de graad van elk punt even is. Kies willekeurig eenpunt x0. Construeer een circuit Φ0 van x0 naar x0 zodat elk lijnstuk uit hetcircuit maar een keer gebruikt wordt. De constructie van zo’n circuit is mogelijkop grond van de aanname dat elk punt van even graad is en het feit dat hetaantal punten eindig is. Als het circuit Φ0 alle lijnstukken van de graaf bevat,dan zijn we klaar. Zo niet, dan gaan wij als volgt te werk. Aangezien de graafsamenhangend is, moet op Φ0 een punt x1 liggen waarin een lijnstuk aankomtdat niet in Φ0 zit. Laat nu in de graaf alle lijnstukken uit Φ0 weg. Dan ontstaateen deelgraaf (die mogelijk uit een aantal disjuncte, samenhangende componen-ten bestaat). De graad van elk punt in de deelgraaf blijft even. Construeer nuin de deelgraaf een circuit Φ1 van x1 naar x1, waarbij elk lijnstuk in Φ1 precieseen keer doorlopen wordt. Als Φ1 alle lijnstukken van de deelgraaf bevat, danzijn we klaar. In dit geval wordt het gezochte Euler circuit gevonden door hetdeel van Φ0 van x0 naar x1 te volgen, dan Φ1 te volgen en daarna het resterendedeel van Φ0 van x1 naar x0. Als Φ1 niet alle lijnstukken van de graaf bevat, danbestaat een punt x2 op Φ0 of Φ1 waarin een ongebruikt lijnstuk samenkomt.Laat nu in de deelgraaf alle lijnstukken uit Φ1 weg en herhaal nu bovenstaandprocede met x2, etc . Op deze wijze vinden wij een aantal circuits Φ0, Φ1, ... dieaan elkaar gekoppeld kunnen worden tot een Euler circuit.

Bovenstaand bewijs is een constructief bewijs waarop een algoritme gebaseerdkan worden om een Euler circuit te berekenen. Een geheel ander algoritme dattot een Euler circuit leidt- als zo’n circuit bestaat- is het algoritme van Fleury.

Fleury’s algoritme voor een Euler circuit

Initialisatie Kies willekeurig een knooppunt Ns als startpunt.Stap 1. Vanuit het knooppunt waar je bent, kies een nog niet-gebruikt lijnstukmet inachtneming van de regel dat je niet een ‘brug’ kiest in de gereduceerdedeelgraaf. De gereduceerde deelgraaf is de graaf waaruit de reeds doorlopen lijn-stukken en geısoleerd geraakte knooppunten zijn weggelaten, terwijl een ‘brug’een lijnstuk is dat bij weglating de deelgraaf in twee losse stukken doet uiteen-vallen (geısoleerde punten tellen niet mee).

Page 54: Optimalisatie in Netwerken∗

48 HOOFDSTUK 6. EULER EN HET CHINESE POSTBODEPROBLEEM

Figuur 19 Een scimitar-netwerk

A A

AA

GD

E

B H

I

F

A

C K

J

Stap 2 Doorloop het gekozen lijnstuk naar een volgend knooppunt.Stap 3 Herhaal stappen 1 en 2 totdat alle lijnstukken doorlopen zijn en je weerterug bent in het knooppunt waar gestart werd. ∗

Een bekende puzzel is hoe je in een sciminar-achtig netwerk zoals in Figuur 19 ineen continue beweging met een potlood over alle lijnstukken kunt gaan zonderhet potlood van papier te tillen en wel zo dat elk lijnstuk precies een keer wordtaangedaan en je eindigt in je startpunt. Dit bekent dat je een Euler circuitvoor het netwerk moet vinden. Ga zelf met Fleury’s algoritme na dat een Eulercircuit gegeven wordt door A,B,D, G,H, J, I, H, K, G, F, D,C, B, E, I, F, E, A.

6.3 Chinese postbodeprobleem.

Beschouw opnieuw een samenhangende ongerichte graaf. Stel dat een Eulercircuit niet bestaat. Dan is een natuurlijke vraag hoe een circuit te construerenwaarbij elk lijnstuk van de graaf tenminste een keer doorlopen wordt zo kleinmogelijk is. Algemener, stel dat positieve kosten c(a) gemaakt worden elke keerdat lijnstuk a doorlopen wordt. De vraag is dan hoe tegen minimale kosten eencircuit te construeren zodat elke tak van de graaf tenminste een keer doorlopenwordt. Dit probleem staat bekend als het Chinese postbode probleem, vernoemdnaar de Chinese wiskundige Mei Ko Kuan die het probleem in 1962 als eerstebestudeerde. Het Chinese postbode probleem kent vele praktische toepassingen:

1. Ophalen van huisvuil. Stel dat een vuilniswagen het vuil moet ophalen ineen bepaald district van de stad. De lijnstukken in de graaf representerende straten en de punten corresponderen met kruisingen van straten. Dekosten verbonden aan een lijnstuk zou de straatlengte kunnen zijn.

∗Als je dit algoritme met de hand uitvoert, dan veeg je een doorlopen lijnstuk meteenweg waardoor de gereduceerde graaf en de “bruggen” visueel direct duidelijk zijn. Voor eencomputercode is een niet-triviale procedure vereist om te testen of een lijnstuk een ‘brug’ is.Voor handmatige berekening van een Euler circuit is het aan te bevelen de graaf met potloodop papier te zetten en elke keer een verbindingslijn weg te gummen zodra deze doorlopen is.

Page 55: Optimalisatie in Netwerken∗

6.3. CHINESE POSTBODEPROBLEEM. 49

2. Afleveren van post of een huis-aan-huis krant. Dit is ook typisch eenvoorbeeld van een probleem waarin een route gezocht wordt zodat elkestraat tenminste een keer aangedaan wordt en de totale afgelegde afstandzo klein mogelijk is.

Als de graaf een Euler circuit bevat, dan geeft het Euler circuit een optimaleoplossing voor het Chinese postbode probleem. Stel nu dat de graaf geen Eulercircuit bevat omdat tenminste een punt van de graaf een oneven graad heeft.Als voorbereiding op hoe dan te werk te gaan, definieren wij

X− = de verzameling punten van de graaf die oneven graad hebben.

Eigenschap. Het aantal punten in X− is even.

Het bewijs is als volgt. Voor een willekeurig punt xi van de graaf, definieer hetgetal gi als de graad van punt i. Als m het aantal lijnstukken in de graaf is,dan moet de som van de graden gi over alle punten xi gelijk zijn aan 2m. Dus

xi∈X+

gi +∑

xi∈X−gi = even,

waarbij X+ de verzameling is van punten met even graad. Voor elke xi ∈ X+

is gi een even getal. De som van de even getallen is weer even. Derhalve moetook de som van de gi’s over xi ∈ X− een even getal zijn. Aangezien onevengetallen alleen tot een even getal sommeren als het aantal termen in de someven is, betekent dit dat het aantal punten in X− even is.

Hoe verloopt nu het algoritme voor het Chinese postbode probleem? De eerstestap is om in de oorspronkelijke graaf kortste paden te construeren tussen elktweetal punten in X− . Op basis van de lengtes van deze kortste paden wordtvervolgens elk punt van X− gekoppeld aan precies een ander punt van X− (hiergebruiken wij dus dat het aantal punten in X− even is).

Als eenmaal een koppeling K tussen tweetallen punten uit X− is vastgelegd,dan is de volgende stap de oorspronkelijke graaf uit te breiden met behulp vande kortste paden die aan deze koppeling ten grondslag liggen. Dit wordt gedaandoor de lijnstukken van deze paden als extra hulplijnstukken aan de oorspron-kelijke graaf toe te voegen met dien verstande dat een lijnstuk even vaak alshulplijnstuk wordt toegevoegd als het gebruikt wordt door de paden behorendebij de koppeling K. Op deze wijze construeren wij een uitgebreide graaf G(K)die de eigenschap heeft dat de graad van elk punt even is (ga na!). Derhalve heeftde uitgebreide graaf G(K) een Euler circuit. Dit Euler circuit is een ’algemeen’circuit voor de oorspronkelijke graaf waarbij elk lijnstuk van de oorspronkelijkegraaf tenminste een keer doorlopen wordt. Dit circuit geeft de oplossing vanhet Chinese postbodeprobleem met

∑a n(a) × c(a) als bijbehorende minimale

kosten, waarbij n(a) het aantal keren is dat het lijnstuk a uit de oorspronkelijkegraaf als hulplijnstuk wordt gebruikt in de uitgebreide graaf G(K).

Page 56: Optimalisatie in Netwerken∗

50 HOOFDSTUK 6. EULER EN HET CHINESE POSTBODEPROBLEEM

Algoritme voor het Chinese Postbode Probleem

Stap 1. Bereken voor de oorspronkelijke graaf een kortste pad P ∗ij tussen elktweetal punten xi en xj uit X− wanneer als lengte van elk lijnstuk a dekosten c(a) van dit lijnstuk worden genomen. Laat dij de lengte van hetkortste pad P ∗ij zijn.

Stap 2. Koppel tegen minimale kosten elk punt in X− aan precies een anderpunt in X− wanneer dij kosten is om de punten xi ∈ X− en xj ∈ X− aanelkaar te koppelen. Laat K∗ de resulterende koppeling zijn.

Stap 3. Vorm een uitgebreide graaf G (K∗) door de lijnstukken van de pa-den P ∗ij tussen de gekoppelde puntenparen (xi, xj) als hulpstukken aan deoorspronkelijke graaf toe te voegen, waarbij elk lijnstuk even vaak wordttoegevoegd als het gebruikt wordt in de paden van de koppeling K∗.

Stap 4. Construeer een Euler circuit in de graaf G (K∗) . Dit is het gezochteminimum-kosten circuit voor het oorspronkelijke probleem.

Zoals je ziet, berust de oplossing van het Chinese postbode probleem op eeninteressante combinatie van standaard algoritmes uit de netwerktheorie.

Opmerking. In de optimale oplossing van het Chinese postbode probleem wordtgeen enkel lijnstuk meer dan twee keer doorlopen. De verklaring is eenvoudig.Als in de optimale koppeling de puntenparen (xh, xk) en (xp, xq) gevormd wor-den, dan hebben de bijbehorende paden Phk en Ppq geen enkel lijnstuk gemeen.Stel dat de paden Phk en Ppq een lijnstuk a0 = (i0, j0) gemeen zouden hebben,dan zouden wij aan koppelingskosten een bedrag 2c (a0) kunnen besparen doorxh aan xp te koppelen en xk aan xq te koppelen, zie Figuur 20.

Figuur 20 Niet-optimale koppeling.

r

rr

r r

rr

r rr r

rr

r@

@@©©©@@@

@@@©©©@

@@¡¡

¡¡#

##aaa#

##

i0 j0

xh xk

xp xq

Voorbeeld

Beschouw het netwerk in Figuur 21 waarbij de getallen bij de lijnstukken delengte aangeeft van het betreffende lijnstuk. Het doel is een rondreis te bepalen

Page 57: Optimalisatie in Netwerken∗

6.3. CHINESE POSTBODEPROBLEEM. 51

waarvoor elk lijnstuk tenminste een keer wordt doorlopen en waarvoor de totalelengte minimaal is.

Figuur 21 Voorbeeld van Chinese postbodeprobleem.

Niet alle knooppunten hebben een even graad dus de graaf in figuur 19 heeftgeen Euler circuit waarbij elk lijnstuk precies een keer wordt doorlopen. Hetalgoritme van het Chinese postbodeprobleem hebben we dus nodig. De vierknooppunten B, D, E en F hebben oneven graad. Wij bepalen eerst voor deoorspronkelijke graaf de kortste paden tussen de punten met oneven graad:

• Het kortste pad tussen B en D is B − C −D met lengte 9.

• Het kortste pad tussen E en F is E −D −G− F met lengte 12.

• Het kortste pad tussen B en E is B −A− E met lengte 12.

• Het kortste pad tussen D en F is D −G− F met lengte 7.

• Het kortste pad tussen B en F is B − C −D −G− F met lengte 16.

• Het kortste pad tussen D en E is D − E met lengte 5.

Om de punten met oneven graad paarsgewijs te koppelen zijn er slechts drie kop-pelingen mogelijk zodat we de optimale koppeling door inspectie kunnen vindenen dus geen algoritme nodig daarvoor hebben. Voor de koppeling (BD,EF ) zijnde totale ‘kosten’ gelijk aan 9 + 12 = 21, voor de koppeling de (BE,DF ) zijnde totale ‘kosten’ gelijk aan 12 + 7 = 19 en de voor koppeling (BF, DE) zijn detotale ‘kosten’ gelijk aan 16+5 = 21. De optimale koppeling is dus de koppeling(BE,DF ) met bijbehorende kortste paden B −A−E en D−G−F . In figuur22 wordt de uitgebreide graaf gegeven waarin dus de lijnstukken van deze tweepaden als extra lijnstukken zijn toegevoegd.

Page 58: Optimalisatie in Netwerken∗

52 HOOFDSTUK 6. EULER EN HET CHINESE POSTBODEPROBLEEM

Figuur 22 Uitgebreide graaf voor voorbeeld uit Figuur 20.

In deze graaf heeft ieder punt een even graad en kunnen we dus Fleury’s algo-ritme toepassen om een Euler circuit te vinden. Dit Euler circuit is A − B −C −D − G − F −D − E − A − B −D − G − F − E − A(ga na!). Dit ook degezochte oplossing voor het oorspronkelijke probleem en de totale afstand diemet dit circuit doorlopen wordt is 92.

6.4 Opgaven

6.1 Los het Chinese postbodeprobleem voor onderstaande figuur op.

6.2 Bepaal voor het Konigsberg brugprobleem een rondreis waarbij elke brugtenminste een keer wordt aangedaan en het totale aantal keren dat eenbrug wordt aangedaan minimaal is.