oofdstukkortstepaden oofdstukkortstepaden In een gewogen graaf is men soms geïnteresseerd in het kortste pad tussen twee punten: dat is een pad, waarbij de som van de gewichten zo klein mogelijk is..inleiding In een graaf met niet al te veel punten en lijnen is een kortste pad met de hand te bepalen. Rechts is bijvoorbeeld een graaf getekend met vier punten en met vijf lijnen. e meeste lijnen mogen slechts in één richting doorlopen worden. et kortste pad van punt naar punt is het pad - -. e som van de gewichten van dit pad is. 9 Links is een graaf getekend met een groter aantal lijnen en punten. lle lijnen mogen in twee richtingen doorlopen worden. Ook hier is het mogelijk om kortste paden met de hand te bepalen. et kortste pad van punt naar punt is - - -. Som van de gewichten:. Oefening'.' epaal het kortste pad van punt naar punt in de graaf van de figuur hier linksboven. Oefening'.' epaal een graaf die onder andere punten en bevat, met allemaal verschillende gewichten, en waarvoor geldt: er zijn twee kortste paden van punt naar punt. Voor een graaf die niet al te groot is, kan het bepalen van een kortste pad tussen twee punten al lastig worden. Laat staan het bepalen van een kortste pad in grote grafen. r is een algoritme ontwikkeld, om in een gegeven graaf kortste paden te vinden. et heet het algoritme van ijkstra. it algoritme is eenvoudig te implementeren op de computer. dsger ijkstra 90-00 69
oofdstukkortstepaden.lgoritmevanijkstra et algoritme wordt toegelicht aan de hand van een gewogen graaf (zie figuur rechts) met acht punten en twaalf lijnen. en kortste pad van punt naar punt wordt bepaald. Voorbeeld.lgoritmevanijkstra Om de kortste paden te bepalen, worden allereerst de punten achter elkaar in een rij geplaatst. Onder elk punt komt een kolom met labels te staan van de vorm: /. lk label kent twee plaatsen, gescheiden door een schuine streep. Op de linker plaats staat steeds het label van één van de acht punten. Op de rechter plaats staat steeds een som aan gewichten. Kolommen worden stap voor stap opgebouwd. oe als eerste het volgende. Initialisatie / 0 etekenis van voorgaand diagram. Vanuit punt kan via een pad met gewicht 0, het punt bereikt worden. Vandaar de notatie / 0. Onbekend zijn de kortste paden van punt naar de andere punten. e som der gewichten bij een kortste pad is bij deze punten zeker kleiner dan oneindig. Vandaar. Punt in de rij van punten en / 0 zijn onderstreept omdat het kortste pad van punt naar zichzelf is bepaald. at pad heeft lengte 0 en wordt de potentiaal bij punt genoemd. In de graaf (rechts) is deze potentiaal bij punt geplaatst. Punt is daarom klaar. Iteratie Punt is het laatste punt waarvan de potentiaal bekend is. Van buren en is de potentiaal nog niet bepaald. - Punt is te bereiken vanuit punt in eenheden. eef dit aan met /. - Punt is te bereiken vanuit punt in eenheid. eef dit aan met /. 0
oofdstukkortstepaden - ekijk de labels van de nog niet onderstreepte punten. at zijn dus van,,,,, en. ij punt staan de minste eenheden in het onderste label. at is de lengte van de kortste weg van punt naar, ofwel de potentiaal bij punt. Onderstreep in het diagram / en punt (zie hieronder). In de graaf (daaronder) wordt de kortste weg vanuit punt naar punt dik aangegeven. Ook is de potentiaal bij punt aangegeven. Voor punt zijn we nu klaar. / 0 / / Iteratie Punt is het laatste punt waarvan de potentiaal bekend is. Van de buren en is de potentiaal nog onbekend. - Punt is te bereiken via punt in eenheden. eef dit aan met /. - Punt is te bereiken via punt in 8 eenheden. () eef dit aan met / 8. - ekijk de labels van de nog niet onderstreepte punten, dus van,,,, en. ekijk bij deze punten de getallen in de onderste labels. ij punt staat het kleinste getal: eenheden. at is de potentiaal bij punt. Onderstreep punt en / (zie hieronder.) e kortste weg van punt naar punt is aangegeven in de figuur rechts. Ook de potentiaal van punt is aangegeven. () () / 0 / / / / 8
oofdstukkortstepaden Iteratie Punt is het laatste punt waarvan de potentiaal bekend is. Van de buren, en is de potentiaal nog onbekend. - Punt wordt bereikt via in eenheden: /. () () - Punt is te bereiken via punt in eenheden, maar () vanuit punt was korter: eenheden. Vul de kolom onder punt niet verder aan. - Punt wordt bereikt via in 6 eenheden: / 6. Pas het diagram aan. ekijk de onderste labels in de kolommen bij elk van de punten,,, en. et label bij punt bevat het minimum aan eenheden: de potentiaal bij punt is gevonden. Onderstreep punt en / (zoals hieronder gebeurd is) en pas de graaf aan (zie hier rechtsboven). / 0 / / / / 6 / / 8 Iteratie Punt is het laatste punt met bekende potentiaal. uren met nog onbekende potentiaal: en. - Punt wordt via punt bereikt in 9 eenheden. Maar er is al een korter pad gevonden. Vul de kolom onder punt niet verder aan. - Punt wordt bereikt via in 9 eenheden: / 9. () () () () Pas het diagram aan. ekijk de onderste labels in de kolommen bij elk van de punten,, en. e potentiaal bij punt is gevonden. Onderstreep punt en / (zoals in het volgende diagram gebeurd is) en pas de graaf aan (zie hier rechtsboven). / 0 / / / / 6 / / 8 / 9
oofdstukkortstepaden Iteratie Punt is het laatste punt met bekende potentiaal. r is precies één buur met nog onbekende potentiaal:. - Punt wordt bereikt via in eenheden: /. Pas het diagram aan. ekijk de onderste labels in de kolommen bij elk van de punten, en. () () () () () e potentiaal van punt is gevonden. Onderstreep punt en / (zoals hieronder gebeurd is) en pas de graaf aan (zie hier rechtsboven). / 0 / / / / 6 / / 8 / 9 / Iteratie6 Punt is het laatste punt met bekende potentiaal. r is precies één buur met onbekende potentiaal:. - Punt wordt bereikt via in 6 eenheden: / 6. Pas het diagram aan. Uit de onderste labels in de kolommen volgt dat de potentiaal van punt gevonden is. Onderstreep punt en / 6 (zoals hierna gebeurd is) en pas de graaf aan (zie rechts). () () () () () (6) / 0 / / / / 6 / / 8 / 9 / / 6 "
oofdstukkortstepaden Iteratie Vanuit punt dient tenslotte punt te worden bekeken. () () - Punt wordt bereikt via in 8 eenheden: / 8. Pas het diagram aan. Uit de onderste labels in de kolommen volgt dat de potentiaal van punt gevonden is. Onderstreep punt en / 8 (zoals hierna gebeurd is) en pas de graaf aan (zie rechts). () () () (6) (8) / 0 / / / / 6 / / 8 / 9 / / 6 / 8 indealgoritme Nu zijn alle kortste paden vanuit punt bepaald en aangegeven in de graaf (rechts boven). Uit het voorgaande diagram is de kortste weg van punt naar punt af te lezen uit de onderstreepte labels. at gaat van achteren naar voren : Punt wordt bereikt via punt ; Punt wordt bereikt via punt ; Punt wordt bereikt via punt ; Punt wordt bereikt via punt ; Punt wordt bereikt via punt. e kortste weg van punt naar punt is: - - - - - ; lengte: 8 eenheden. Tevens zijn alle andere kortste wegen die beginnen in nu ook af te lezen uit het diagram. Oefening'.' In het voorgaande voorbeeld was het volgende diagram gevonden. / 0 / / / / 6 / / 8 / 9 / / 6 / 8
oofdstukkortstepaden a) Lees uit de tabel het kortste pad af van punt naar punt ; b) eschouw de volgende bewering: et diagram is ook te gebruiken om alle kortste paden vanuit punt te bepalen. Zo is bijvoorbeeld het kortste pad van punt naar punt. Is dit een ware bewering? c) Lees uit de tabel het kortste pad af van punt naar punt, dat via punt gaat. Uit oefening. volgt dat we het algoritme van ijkstra steeds opnieuw moeten uitvoeren wanneer we het startpunt wijzigen. elukkig is dit algoritme door een computer snel uit te voeren. iertoe kan het volgende stroomdiagram worden gebruikt. STRT - onderstreep punt - plaats onder punt : /0 - plaats onder de andere punten: / alle punten onderstreept? - bekijk alle nog niet onderstreepte punten - onderstreep het punt met het kleinste getal ja noteer de kortste weg van punt naar het gewenste punt nee bekijk elke buur X van P die niet onderstreept is, en herlabel eventueel met P /... noem het laatst onderstreepte punt P. KLR
oofdstukkortstepaden..opgaven Opgave'.' epaal voor elk van de volgende grafen een kortste pad van punt naar punt. : 6 8 : 6 6 Opgave'.' epaal het kortste pad van punt naar punt voor graaf ; epaal alle kortste paden van punt naar punt 6 in gerichte graaf ; : : 6 ' 6
oofdstukkortstepaden Opgave'.' en bedrijfspand bevat gescheiden ruimten,,,,,, en. In onderstaande tabel staan brandbare verbindingswanden gegeven, met brandweerstandstijd in minuten. In deze tabel staat bijvoorbeeld een kolom met daarin en 0. etekenis: tussen de ruimten en bevindt zich een wand, die 0 minuten lang brand kan tegen houden. ls ruimte in brand staat, dan duurt het 0 minuten voordat de brand zich naar ruimte uitbreidt via die tussenwand. ls ruimte in brand staat, dan duurt het 0 minuten voordat de brand zich naar ruimte uitbreidt via die tussenwand. Op tijdstip t = 0 minuten breekt brand uit in ruimte. verbindings- wand: brandweerstandstijd (min): 0 0 0 a) Maak de bijbehorende graaf. b) epaal het tijdstip waarop de laatste ruimte in brand vliegt. Opgave'.' Van een graaf met punten,,,,,, en zijn met de computer de kortste paden bepaald van naar. e computer leverde het volgende resultaat: / 0 # # # # # # # / / 8 / 8 / 0 / 6 / / / of of / 8 / / 8 / 6 of of / / 6
oofdstukkortstepaden a) epaal alle kortste wegen van naar. b) Probeer een graaf te tekenen die dit computerresultaat oplevert. Opgave'.' en bedrijf heeft vestigingen in vijf steden,,, en. e kosten voor de directe vluchten tussen deze steden worden door de volgende tabel gegeven: ereken de reiskosten van de goedkoopste routes voor de reizen tussen elk tweetal steden. 8