Rettede, ikke-sykliske grafer (DAG) Dersom vi vet at grafen ikke inneholder løkker, kan vi lage en forbedret versjon av Dijkstras algoritme ved å forandre metoden for å velge neste kjente node. Den nye regelen er at vi velger nodene i en topologisk ordning. Nårvivelgerennodev, vet vi at den har riktig korteste avstand: Fordi den topologiske ordningen garanterer at den valgte noden ikke har inngående kanter fra ukjente noder, kan ikke avstanden til denne noden bli forandret senere. Merk at dette gjelder selv om vi tillater negative avstander! Tidsforbruk: O( V + E ) Ark 1 av 8 Forelesning 18.10.2004
Eksempel INF1020 Algoritmer og datastrukturer V 1 1 2 3 V 2 10 3 3 V 3 1 V 7 8 V 4 1 2 4 6 V 8 V 5 4 V 6 v kjent avstand vei v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8??? Hva hvis vi ønsker å ha v 2 som startnode? Forelesning 18.10.2004 Ark 2 av 8
Aktivitetsgrafer En veldig viktig anvendelse av DAG-er er i prosjektplanlegging: Vi har en mengde aktiviteter som hver tar en viss tid å gjennomføre. I tillegg er aktivitetene avhengige av hverandre, på den måten at noen aktiviteter ikke kan startes før visse andre aktiviteter er avsluttet. Eksempel: Husbygging Aktiviteter: Grunnmuren tar 4 dager Veggene tar 5 dager Gulvet tar 4 dager Taket tar 3 dager Vinduene tar 2 dager Det elektrisk anlegget tar 2 dager Vann og kloakk tar 4 dager Takrennene tar 1 dag Avhengigheter: Grunnmuren avhenger av vann og kloakk Veggene avhenger av grunnmuren Gulvet avhenger av grunnmuren Taket avhenger av veggene Vinduene avhenger av veggene El-anlegget avhenger av gulv, vegger og tak Takrennene avhenger av taket Forelesning 18.10.2004 Ark 3 av 8
Disse opplysningene kan overføres til en såkalt aktivitetsgraf: Hver aktivitet blir et nodeobjekt. Aktivitetens varighet (lengde) blir en variabel (vekt) i nodeobjektet. Avhengighetene modelleres ved rettede, uvektede kanter: Det går en kant fra node v til node w dersom aktivitet w er direkte avhengig av aktivitet v. Vann kloakk Grunn mur Vegger 5 d. Gulv Vindu 2 d. Tak 3 d. Takrenner 1 d. Elanlegg 2 d. Forelesning 18.10.2004 Ark 4 av 8
Typiske spørsmål for prosjektplanlegging: Kan prosjektet gjennomføres? Hva er minste totale gjennomførelsestid? Hvilke aktiviteter kan bli forsinket, og med hvor lenge, uten at totaltiden for prosjektet øker? Hvilke aktiveteter er kritiske, i betydningen at de må gjennomføres på fastsatt tid hvis prosjektet skal bli ferdig i tide? I kursets siste obligatoriske oppgave skal dere implementere algoritmer som svarer på disse spørsmålene for en tilfeldig aktivitetsgraf. Vi skal se på en annen metode som går ut på å gjøre om aktivitetsgrafen til en hendelsesgraf. Hovedpoenget er å flytte vektene fra nodene til kantene, slik at vi kan bruke varianter av korteste-vei algoritmen. Forelesning 18.10.2004 Ark 5 av 8
Hendelsesgrafer Hver node i en hendelsesgraf representerer at en aktivetet (og alle dens forgjengere) i aktivitetsgrafen er avsluttet. Hendelser som kan nås fra en node v, kan ikke settes i gang før node v er ferdig. Aktivitetene er nå representert ved kanter i stedet for ved noder. Oversettelsen fra aktivitetsgrafer til hendelsesgrafer kan foregå automatisk eller manuelt (for hånd). Dersom en aktivetet er avhengig av flere andre aktiveteter, kan det være nødvendig å legge til hjelpekanter og hjelpenoder for at grafene skal uttrykke akkurat de samme avhengighetene. Forelesning 18.10.2004 Ark 6 av 8
Eksempel: Husbyggingen Vann kloakk Grunn mur Vegger 5 d. Gulv Vindu 2 d. Tak 3 d. Takrenner 1 d. Elanlegg 2 d. Forelesning 18.10.2004 Ark 7 av 8
For å finne tidligste avslutningstid for prosjektet trenger vi bare å finne den lengste veien fra den første hendelsen. For hver node kan vi også finne tidligste avslutningstid og seneste tidspunkt som en node kan bli ferdig uten at den forsinker prosjektet. Slakken til en kant i hendelsesgrafen forteller hvor mye den tilhørende aktiviteten kan bli forsinket uten av totaltiden til prosjektet øker. Slakk(v,w) = seneste avslutningstid for w tidligste avslutningstid for v kostnaden fra v til w Aktiviteter som har null slakk, er kritiske aktiviteter. Forelesning 18.10.2004 Ark 8 av 8