Datastrukturer & Algoritmer, Datalogi C

Henning Christiansen 14/10-2001

 

Opgaver til forelæsningen 15/10-2002

 

 

Opgave 14.1 og 14.2 fra bogen side 485

 

Opgave 1

Give eksempler på situationer i virkelighedens verden, hvor der naturligt optræder tætte grafer.  I bogen hævdes det, at algoritmen for at finde korteste vej i en uvægtet graf er O(antal-kanter-i-grafen). Bogens algoritme er konstrueret, så den beregner alle korteste veje fra en given startknude og til alle andre knuder i grafen.

Vi er i denne opgave kun interesseret i at finde veje fra en knude A til en anden knude B, og der er nemt at optimere bogens algoritme til dette tilfælde: Når, blandt de veje algoritmen har konstrueret, der er fundet en vej til B, hopper vi ud.

 

Beskriv tidsforbruget ved store-O for den reviderede algoritmes gennemsnitlige tidsforbrug i tætte og tynde grafer.

 

Opgave 2

Spørgsmål 2.1

Tegn et landkort med højst 10 byer og nogle veje imellem; tag både gamle landeveje, som gå indtil byernes centrum og motorveje som går udenom. Sæt nogle sandsynlige afstande på i km. Skriv disse data op i det format som bogens graf-program forventer, og afprøv programmet med Dijstras algoritme på eksempler for at få udskrevet kilometerafstande.

 

Spørgsmål 2.2

Nu regner vi ikke i kilometer men i køretid. Der regnes med gennemsnitsfart på 100 km/t på motorvej og 60 km/t på landevej. Desuden koster det 10 min ekstra at passere et bycentrum. Skitser hvordan følgende to måder at  tilpasse programmets opførsel til dette vil kunne foretages:

  1. Der ændres ikke i programmet, men der foretages en oversættelse af det oprindelige input, så det afspejler forudsætningerne i dette spørgsmål (dvs. der konstrueres en ny graf, som så gives til programmet). Tænk ikke på, hvordan en sådan oversættelse skal implementeres, kun hvad den skal foretage. Aftest løsningsmetoden på dit landkort fra spørgsmål 2.1 (evt. blot et udsnit).
  2. Antag nu at input og intern repræsentation af grafen er stort set uændret. Hvordan skal algoritmen ændres? Det er nok med en skitse, men afteste gerne hvis du har tid.