Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)

Liknende presentasjoner


Presentasjon om: "INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)"— Utskrift av presentasjonen:

1 INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)

2 Minimale spenntrær Spenntre for en graf Et tre som inneholder de kantene som er nødvendig for å kople sammen alle nodene i grafen. Skal grafen ha et spenntre på den være connected (sammenknyttet) Det vil som oftest være flere mulige spenntrær Et minimalt spenntre er et spenntre med lavest mulig total kostnad Det kan være flere mulige minimale spenntrær

3

4 Minimale spenntrær Antall kanter |V|-1 Å legge til kant til spenntre gir sykel Sykelen kan fjernes ved å fjerne en annen kant Har den andre kanten høyere pris får vi et "billigere" spenntre Algoritmer som tar billigste brukbare kanter først gir et minimalt spenntre DVS grådige algoritmer fungerer for spenntrær

5 Prims algoritme For hvert trinn, velg den korteste kant som forbinder treet med en node som ikke er i treeet Merk noden som kjent Oppdater avstand til alle ukjente noder som kan nås fra den nytilknyttede noden Kjøretid O(|V| 2 ) uten heap - OK for tette grafer O(|E|log|V|) med heap - Bedre for glisne grafer

6 Tabell for Prims algoritme nodekjentavstandforgjenger

7 Kruskals algoritme Velg alltid korteste kant Godta kanten hvis den ikke lager sykel Kruskals bruker egentlig en samling av trær Starter med |V| en-nodes trær En akseptert kant kopler sammen to trær Vi er ferdig når alle noder er koplet sammen

8 Tabell for Kruskals algoritme KantKostnadResultat

9

10 Kruskals algoritme Avsluttes når nok kanter er akseptert Tre-medlemskap administreres ved hjelp av Disjunkte Mengder union(u,v) for å kople sammen to trær find(u) for å sjekke hvilken mengde noden er i Invariant: to noder er i samme mengde hvis de er koplet sammen (er i samme tre) hvis kantens endenoder er i samme tre, kan kanten ikke aksepteres fordi den danner en sykel Kjøretidsbetraktninger: Kanter i heap er effektivt Worst case: O(|E|log|E|) Mye raskere i praksis

11 Korteste vei algoritner Veid og uveid veilengde Korteste vei fra ett utgangspunkt-problemet Problemet med negative kostnader Negativ kost-syklus gir ubestemmelig korteste vei Mange anvendelser Algoritmer: Ingen eksisterende algoritmer som er raskere på en til en enn på en til alle Fire versjoner av problemet med korteste vei Uvektet graf O(|E|+|V|) Veid graf uten negative kanter O(|E|log|V|) Graf med negative kanter: enkelt, men O(|E|*|V|) Asyklisk graf: O(N)

12

13 Uveid korteste vei Spesialtilfelle av veid graf Algoritme 1. Starte med en node avstand 0 2. Deretter alle naboene avstand 1 3. Så ubesøkte naboer av dem igjen... Bredde først Trenger avstand, forgjenger, behandlet Veien finnes ved å gå tilbake fra enden

14 Algoritme 1

15 Algoritme 2

16 Veid graf uten negative kanter Dijkstras algoritme Samme ide som forrige algoritme Trenger Kjent Tentativ avstand d v : avstand bare via behandlede noder Forgjenger pv: siste node som endrer dv For hvert steg: velg noden v med lavest dv av de som ikke er kjent oppdater avstand hos alle naboer w av denne noden hvis det er kortere å gå via v Dijkstras er en greedy algoritme

17 Greedy algoritmer Greedy algoritmer løser problem trinnvis ved å gjøre det som synes best for hvert trinn Vekslingsalgoritme Kan svikte i noen situasjoner Vekslingsalgoritme

18

19

20

21 Kjøretid for dijkstra Scanne etter korteste dv: O(|E|+|V 2 |) OK for tette grafer der |E|=O(|V 2 |) Tynne (sparse) grafer trenger bedre løsninger priority queue: deleteMin og decreaseKey  O(|E|log|V|+|V|log|V|))=O(|E|log|V|) Eller sette inn i heapen på nytt ved oppdatering  Gir flere forekomster av samme node i heapen  Hoppe over kjente noder  Enkel og rask løsning, men plasskrevende


Laste ned ppt "INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)"

Liknende presentasjoner


Annonser fra Google