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æ. 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

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

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

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

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

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

Grafer og graf-gennemløb

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Sammenhængskomponenter i grafer

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

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

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Grafer og graf-gennemløb

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

Grafer og graf-gennemløb

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

Dynamisk programmering

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Minimum udspændende Træer (MST)

Danmarks Tekniske Universitet

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

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Dynamisk programmering

Danmarks Tekniske Universitet

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.

Datastrukturer (recap)

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

Danmarks Tekniske Universitet

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

DM02 Kogt ned. Kokken. Januar 2006

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

Introduktion til datastrukturer

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

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

Dynamisk programmering

Datastrukturer (recap) Datastruktur = data + operationer herpå

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

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

Danmarks Tekniske Universitet

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

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

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

Introduktion til datastrukturer. Philip Bille

Reeksamen i Diskret Matematik

Datastrukturer (recap)

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

Danmarks Tekniske Universitet

Datastrukturer. Datastruktur = data + operationer herpå

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

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Eksamen i Diskret Matematik

Eksamen i Diskret Matematik

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

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

Introduktion. Philip Bille

Netværksalgoritmer 1

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

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

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

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

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. Kortete veje træ. Repræentér kortete veje om et træ fra.

Anvendeler Google map, bilnavigation, rutning i netværk, kedulering, pipelining, Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Kortete veje egenkaber Simplificerende antagele. Alle knuder kan nå fra. der finde altid (kortete) vej til en knude. Kortete veje egenkaber Lemma. Enhver delvej af en kortete vej er en kortete vej. Bevi. Modtridbevi. 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.

Dijktra algoritme Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG 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 v.d for hver knude v = længde af kortete kendte vej til v fra. Opdaterer aftandetimater ved at afpænde (relax) kanter. RELAX(u,v) if (v.d > u.d + w(u,v)) v.d = u.d + w(u,v) Dijktra algoritme Sæt.d = og v.d = 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 kanter om v peger på.

Dijktra algoritme Sæt.d = og v.d = 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 kanter om v peger på. Opgave. Håndkør Dijktra algoritme fra knude på følgende graf. Dijktra algoritme Notation. δ(,v) er længden af den kortete vej fra til v. Lemma. Når aftandetimater opdatere med afpænding er v.d δ(,v) for alle knuder v. Bevi. Induktion over antallet af afpændinger. Dijktra algoritme Lemma. Dijktra algoritme beregner v.d = δ(,v) for alle knuder v. Bevi. Modtridbevi. Lad u være den førte knude valgt af algoritmen å u.d 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. u.d y.d (alg. valgte u før y).. u.d > δ(,u) (u var forkert). x y Dijktra algoritme Implementation. Hvordan implementerer vi Dijktra algoritme? Udfordring. Find knude med mindte aftandetimat. Vi har: u.d > δ(,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 å: y.d x.d + w(x,y) = δ(,x) + w(x,y) (u er førte knude med forkert etimat å x.d = δ(,x)) u.d > δ(,x) + w(x,y) y.d i modtrid med.

Dijktra algoritme Dijktra algoritme Implementation. Vedligehold knuder med aftandetimat i prioritetkø. Nøgle af knude v = v.d. I hvert kridt: Find knude u med mindte aftandtandetimat = EXTRACT-MIN Afpænd kanter om u peger på med DECREASE-KEY. DIJKSTRA(G, ) for alle knuder v V v.d = v.π = null INSERT(P,v) DECREASE-KEY(P,,) while (P ) u = EXTRACT-MIN(P) for alle v om 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 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) Dijktra algoritme 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. Prioritetkøer og Dijktra. Komplekitet af Dijktra algoritme afhænger af prioritetkø: n INSERT n EXTRACT-MIN < m DECREASE-KEY Prioritetkø INSERT EXTRACT-MIN DECREASE-KEY Total tabel O() O(n) O() O(n ) 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

Edger W. Dijktra Kortete veje Edger Wybe Dijktra (-) Dijktra algoritme. "A note on two problem in connexion with graph". Numeriche Mathematik,. Egenkaber for kortete veje Dijktra algoritme Andre bidrag. Grundlæggende reultater i programmering, ditribueret beregning, algoritmer, verifikation. Kortete veje på DAG 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 Kortete veje på DAG Udfordring. Er det nemmere at beregne kortete veje på DAG? Lemma. Algoritme beregner v.d = δ(,v) for alle knuder v. DAG kortete veje algoritme. Behandl knuder i topologik orden. For hver knude v, afpænd alle kanter fra v. Virker ogå for negative kanter. Bevi. Induktion over topologik ortering af knuder v, v,, vn- Bai. v.d = = δ(v,v). Induktionkridt. Kig på vi for i >. Antag vj.d = δ(, vj) for j < i vi.d = min(vj.d + 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). 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