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

Relaterede dokumenter
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. 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. Philip Bille

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

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

Mindste udspændende træ

Mindste udspændende træ

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.

Prioritetskøer og hobe. Philip Bille

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

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

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

Danmarks Tekniske Universitet

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

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

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Minimum udspændende Træer (MST)

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

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

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

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

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

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

Netværksalgoritmer. Netværksalgoritmer. Meddelelses-modellen. Routing

Danmarks Tekniske Universitet

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Dynamisk programmering

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Sammenhængskomponenter i grafer

Minimum udspændende Træer (MST)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Grafer og graf-gennemløb

Dynamisk programmering

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Danmarks Tekniske Universitet

Minimum udspændende Træer (MST)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

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

Grafer og graf-gennemløb

.. 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)}

Reeksamen i Diskret Matematik

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Dynamisk programmering

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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.

DM02 Kogt ned. Kokken. Januar 2006

Introduktion til datastrukturer

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

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

Sommeren 2001, opgave 1

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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. Philip Bille

Netværksalgoritmer 1

Introduktion til datastrukturer. Philip Bille

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

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

Datastrukturer (recap)

Datastrukturer (recap)

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

En karakteristik af de regulære sprog. Ugens emner. FA minimering [ ] MyHill-Nerode-sætningen en algoritme til minimering af FA er

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

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

Sortering. Eksempel: De n tal i sorteret orden

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

Transkript:

Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Philip Bille Introduktion Kortete veje. Givet en orienteret, vægtet graf G og en knude, find kortete vej fra til alle knuder i G. Introduktion Kortete veje. Givet en orienteret, vægtet graf G og en knude, find kortete vej fra til alle knuder i G. 0 0 0

Introduktion Kortete veje. Givet en orienteret, vægtet graf G og en knude, find kortete vej fra til alle knuder i G. Kortete veje træ. Repræentér kortete veje om et træ fra. Anvendeler Google map, bilnavigation, rutning i netværk, kedulering, pipelining, 0 0 Kortete veje egenkaber Kortete veje Simplificerende antagele. Alle knuder kan nå fra. der finde altid (kortete) vej til en knude. Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG

Kortete veje egenkaber Lemma. Enhver delvej af en kortete vej er en kortete vej. Bevi. Modbevi. Kig på en kortete vej p fra til t betående af p, p og p. p p p u v t q Antag q er kortere en delvej p. Da er p, q og p en kortere vej fra til t end p. Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Dijktra algoritme Mål. Givet en orienteret og vægtet graf G med ikke-negative vægte og en knude, beregn kortete vej fra til alle andre knuder. Dijktra algoritme. Vedligeholder aftandetimat d[v] for hver knude v = længde af kortete kendte vej til v fra. Opdaterer aftandetimater ved at afpænde (relax) kanter. Dijktra algoritme Sæt d[] = 0 og d[v] = for alle knuder v V\{}. Opbyg et træ T fra. I hvert kridt, tilføj knude v med mindte aftandetimat til T. Afpænd alle knuder om v peger på. RELAX(u,v) if (d[v] > d[u] + w(u,v)) d[v] = d[u] + w(u,v)

Dijktra algoritme Sæt d[] = 0 og d[v] = for alle knuder v V\{}. 0 0 0 Opbyg et træ T fra. I hvert kridt, tilføj knude v med mindte aftandetimat til T. Afpænd alle knuder om v peger på. Opgave. Håndkør Dijktra algoritme fra knude på følgende graf. 0 Dijktra algoritme Notation. δ(,v) er længden af den kortete vej fra til v. Lemma. Når aftandetimater opdatere med afpænding er d[v] δ(,v) for alle knuder v. Dijktra algoritme Lemma. Dijktra algoritme beregner d[v] = δ(,v) for alle knuder v. Bevi. Modbevi. Lad u være den førte knude valgt af algoritmen å d[u] er forkert. Lad P være den kortete vej fra til u og lad (x,y) være førte kant der forlader S. Kig på tidpunkt hvor algoritmen tilføjer u til S: P Vi har: u. d[u] d[y] (alg. valgte u før d[y]).. d[u] > δ(,u) (u var forkert). x y Vi har: d[u] > δ(,u) = w(p) w(p til x) + w(x,y) ( + def.) (P kåret af) = δ(,x) + w(x,y) (delvej af kortete vej er kortete vej) x S å (x,y) afpændt å: d[y] d[x] + w(x,y) = δ(,x) + w(x,y) (u er førte knude med forkert etimat å d[x] = δ(,x)) d[u] > δ(,x) + w(x,y) d[y] i modtrid med.

Dijktra algoritme Implementation. Hvordan implementerer vi Dijktra algoritme? Udfordring. Find knude med mindte aftandetimat. Dijktra algoritme Implementation. Vedligehold knuder med aftandetimat i prioritetkø. Nøgle af knude v = d[v]. I hvert kridt: Find knude u med mindte aftandtandetimat = EXTRACT-MIN Afpænd knuder om u peger på med DECREASE-KEY. Dijktra algoritme DIJKSTRA(G, ) for alle knuder v V d[v] = π[v] = null INSERT(P,v) DECREASE-KEY(P,,0) while (P ) u = EXTRACT-MIN(P) for alle v om u peger på RELAX(u,v) Tid. n EXTRACT-MIN n INSERT O(m) DECREASE-KEY Samlet tid med min-hob. O(m log n) RELAX(u,v) if (d[v] > d[u] + w(u,v)) d[v] = d[u] + w(u,v) DECREASE-KEY(P,v,d[v]) π[v] = u Dijktra algoritme Theorem. Dijktra algoritme implementeret med en min-hob beregner kortete veje i O(m log n) tid. Grådighed. Dijktra algoritme er ekempel på en grådig algoritme.

Dijktra algoritme Edger W. Dijktra Prioritetkøer og Dijktra. Komplekitet af Dijktra algoritme afhænger af prioritetkø: n INSERT n EXTRACT-MIN m DECREASE-KEY Edger Wybe Dijktra (0-00) Prioritetkø INSERT EXTRACT-MIN DECREASE-KEY tabel O() O(n) O() binær hob O(log n) O(log n) O(log n) O(m log n) Fibonacci hob O() O(log n) O() O(m + n log n) = amortieret køretid Total O(n Dijktra algoritme. "A note on two problem in connexion with graph". Numeriche Mathematik,. Andre bidrag. Grundlæggende reultater i programmering, ditribueret beregning, algoritmer, verifikation. Citater. Object-oriented programming i an exceptionally bad idea which could only have originated in California. The ue of COBOL cripple the mind; it teaching hould, therefore, be regarded a a criminal offence. APL i a mitake, carried through to perfection. It i the language of the future for the programming technique of the pat: it create a new generation of coding bum. Kortete veje på DAG Udfordring. Er det nemmere at beregne kortete veje på DAG? Kortete veje DAG kortete veje algoritme. Behandl knuder i topologik orden. For hver knude v, afpænd alle kanter fra v. Virker ogå for negative kanter. Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG

Kortete veje på DAG Lemma. Algoritme beregner d[v] = δ(,v) for alle knuder v. Bevi. Induktion over topologik ortering af knuder v, v,, vn Bai. d[v] = 0 = δ(v,v). Induktionkridt. vi for i >. d[vi] = min(d[vj] + w(vj, vi)) hvor (vj, vi) er kant i G å j < i. = min(δ(, vj) + w(vj, vi)) (pga. induktionhypotee) = δ(, vi) (ingen veje til vi via enere knuder i topologik orden) Kortete veje på DAG Implementation. Sorter knuder i topologik rækkefølge. Afpænd kanter ud af hver knude. Samlet tid. O(m + n). Theorem. Vi kan beregne kortete veje i DAG i O(m + n) tid. Kortete veje på DAG Theorem. Vi kan beregne kortete veje i DAG i O(m + n) tid. Kortete veje varianter Knuder. Enkelt kilde (ingle-ource): fra til alle andre knuder. Enkelt kilde, enkelt dræn (ingle-ource ingle-target): fra til t. Alle par (all pair): mellem alle par af knuder. Begrænninger på kantvægte. Ikke-negative vægte. Vilkårlige vægte. Euklidike vægte. Krede. Ingen krede. Ingen negative krede.

Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG