Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Relaterede dokumenter
Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Mindste udspændende træ

Prioritetskøer og hobe. Philip Bille

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Grafer og graf-gennemløb

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Grafer og graf-gennemløb

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Grafer og graf-gennemløb

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Sammenhængskomponenter i grafer

Minimum udspændende Træer (MST)

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

DM02 Kogt ned. Kokken. Januar 2006

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Datastrukturer (recap)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Dynamisk programmering

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Dynamisk programmering

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Reeksamen i Diskret Matematik

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Introduktion til datastrukturer

Datastrukturer (recap) Datastruktur = data + operationer herpå

Eksamen i Diskret Matematik

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES

Datastrukturer. Datastruktur = data + operationer herpå

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

Dynamisk programmering

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Datastrukturer. Datastruktur = data + operationer herpå

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

Eksamen i Diskret Matematik

DM507 - Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Plan. Introduktion. Eks: Max i tabel. Algoritmer og datastrukturer. Algoritmer og datastrukturer. Toppunkter. Algoritme 1. Algoritme 2.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

M=3 kunde forbindelse. oprettet lokation Steinerkant

Analyse af algoritmer

Netværksalgoritmer 1

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Introduktion til datastrukturer. Philip Bille

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Datastrukturer (recap)

Eksamen i Diskret Matematik

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Transkript:

Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille

Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Introduktion Korteste veje. Givet en orienteret, vægtet graf G og en knude s, find korteste vej fra s til alle knuder i G. 0 1 17 1 2 s 0 8 12 1 3 8 7 9 9 6 3 6 13 20 1 13 11 9 7 2

Introduktion Korteste veje. Givet en orienteret, vægtet graf G og en knude s, find korteste vej fra s til alle knuder i G. Korteste veje træ. Repræsentér korteste veje som et træ fra s. 0 1 17 1 2 s 0 8 12 1 3 8 7 9 9 6 3 6 13 20 1 13 11 9 7 2

Anvendelser Google maps, bilnavigation, rutning i netværk, skedulering, pipelining,

Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje egenskaber Simplificerende antagelse. Alle knuder kan nås fra s. der findes altid (korteste) vej til en knude.

Korteste veje egenskaber Lemma. Enhver delvej af en korteste vej er en korteste vej. Bevis. Modstridsbevis. Kig på en korteste vej p fra s til t bestående af p1, p2 og p3. p2 s p1 u v t p3 q2 Antag q2 er kortere en delvej p2. Da er p1, q2 og p3 en kortere vej fra s til t end p.

Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Dijkstras algoritme Mål. Givet en orienteret og vægtet graf G med ikke-negative vægte og en knude s, beregn korteste vej fra s til alle andre knuder. Dijkstras algoritme. Vedligeholder afstandsestimat v.d for hver knude v = længde af korteste kendte vej til v fra s. Opdaterer afstandsestimater ved at afspænde (relax) kanter. 9 2 6 2 7 2 6 2 RELAX(u,v) if (v.d > u.d + w(u,v)) v.d = u.d + w(u,v)

Dijkstras algoritme Sæt s.d = 0 og v.d = for alle knuder v V\{s}. Opbyg et træ T fra s. I hvert skridt, tilføj knude v med mindste afstandsestimat til T. Afspænd alle kanter som v peger på. 8 s 16 23

1 8 2 3 6 7 8 9 7 12 1 6 1 20 13 11 3 9 s 0 8 9 0 1 20 17 3 1 1 6 13 29 1 17 2 2 7 26

Dijkstras algoritme Sæt s.d = 0 og v.d = for alle knuder v V\{s}. Opbyg et træ T fra s. I hvert skridt, tilføj knude v med mindste afstandsestimat til T. Afspænd alle kanter som v peger på. Opgave. Håndkør Dijkstras algoritme fra knude 0 på følgende graf. 0 7 1 2 1 1 6 1 3 1 2 3 2 2 1 6 7 7 10 8

Dijkstras algoritme Notation. δ(s,v) er længden af den korteste vej fra s til v. Lemma. Når afstandsestimater opdateres med afspænding er v.d δ(s,v) for alle knuder v. Bevis. Induktion over antallet af afspændinger.

Dijkstras algoritme Lemma. Dijkstras algoritme beregner v.d = δ(s,v) for alle knuder v. Bevis. Modstridsbevis. Lad u være den første knude valgt af algoritmen så u.d er forkert. Lad P være den korteste vej fra s til u og lad (x,y) være første kant der forlader S. Kig på tidspunkt hvor algoritmen tilføjer u til S: P Vi har: 1. u.d y.d (alg. valgte u før y). 2. u.d > δ(s,u) (u var forkert). Vi har: u.d > δ(s,u) = w(p) w(p til x) + w(x,y) (2 + def.) (P skåret af) = δ(s,x) + w(x,y) (delvej af korteste vej er korteste vej) x S så (x,y) afspændt så: y.d x.d + w(x,y) = δ(s,x) + w(x,y) (u er første knude med forkert estimat så x.d = δ(s,x)) u.d > δ(s,x) + w(x,y) y.d i modstrid med 1. s x y u

Dijkstras algoritme Implementation. Hvordan implementerer vi Dijkstras algoritme? Udfordring. Find knude med mindste afstandsestimat. 8 s 16 23

Dijkstras algoritme Implementation. Vedligehold knuder med afstandsestimat i prioritetskø. Nøgle af knude v = v.d. I hvert skridt: Find knude u med mindste afstandstandestimat = EXTRACT-MIN Afspænd kanter som u peger på med DECREASE-KEY. 8 s 16 23

Dijkstras algoritme DIJKSTRA(G, s) for alle knuder v V v.d = v.π = null INSERT(P,v) DECREASE-KEY(P,s,0) while (P ) u = EXTRACT-MIN(P) for alle v som u peger på RELAX(u,v) RELAX(u,v) if (v.d > u.d + w(u,v)) v.d = u.d + w(u,v) DECREASE-KEY(P,v,v.d) v.π = u 8 Tid. n EXTRACT-MIN n INSERT < m DECREASE-KEY Samlet tid med min-hob. O(n log n + n log n + m log n) = O(m log n) s 16 23

Dijkstras algoritme Theorem. Dijkstra algoritme implementeret med en min-hob beregner korteste veje i O(m log n) tid. Grådighed. Dijkstras algoritme er eksempel på en grådig algoritme.

Dijkstras algoritme Prioritetskøer og Dijkstra. Kompleksitet af Dijkstras algoritme afhænger af prioritetskø: n INSERT n EXTRACT-MIN < m DECREASE-KEY Prioritetskø INSERT EXTRACT-MIN DECREASE-KEY Total tabel O(1) O(n) O(1) O(n 2 ) binær hob O(log n) O(log n) O(log n) O(m log n) Fibonacci hob O(1) O(log n) O(1) O(m + n log n) = amortiseret køretid

Edsger W. Dijkstra Edsger Wybe Dijkstra (1930-2002) Dijkstra algoritme. "A note on two problems in connexion with graphs". Numerische Mathematik 1, 199. Andre bidrag. Grundlæggende resultater i programmering, distribueret beregning, algoritmer, verifikation. Citater. Object-oriented programming is an exceptionally bad idea which could only have originated in California. The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence. APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.

Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje på DAGs Udfordring. Er det nemmere at beregne korteste veje på DAGs? DAG korteste veje algoritme. Behandl knuder i topologisk orden. For hver knude v, afspænd alle kanter fra v. Virker også for negative kanter. s 6 1 0 1 6 3 2

Korteste veje på DAGs Lemma. Algoritme beregner v.d = δ(s,v) for alle knuder v. s 6 1 0 1 6 3 2 Bevis. Induktion over topologisk sortering af knuder v0, v1,, vn-1 Basis. v0.d = 0 = δ(v0,v0). Induktionsskridt. Kig på vi for i > 0. Antag vj.d = δ(s, vj) for j < i vi.d = min(vj.d + w(vj, vi)) hvor (vj, vi) er kant i G så j < i. = min(δ(s, vj) + w(vj, vi)) (pga. induktionshypotese) = δ(s, vi) (ingen veje til vi via senere knuder i topologisk orden)

Korteste veje på DAGs Implementation. Sorter knuder i topologisk rækkefølge. Afspænd kanter ud af hver knude. Samlet tid. O(m + n). s 6 1 0 1 6 3 2

Korteste veje varianter Knuder. Enkelt kilde (single-source): fra s til alle andre knuder. Enkelt kilde, enkelt dræn (single-source single-target): fra s til t. Alle par (all pairs): mellem alle par af knuder. Begrænsninger på kantvægte. Ikke-negative vægte. Vilkårlige vægte. Euklidiske vægte. Kredse. Ingen kredse. Ingen negative kredse.

Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs