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)

Sammenhængskomponenter i grafer

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

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

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

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

Dynamisk programmering

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

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

Introduktion til datastrukturer

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

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

Introduktion til datastrukturer. Philip Bille

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

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.

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 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. Modtridbevi. Kig på en kortete vej p fra til t betående af p, p og p. Kortete veje 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. 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 v.d 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 = 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å. 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å. 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 Vi har: u.d > δ(,u) = w(p) ( + def.) w(p til x) + w(x,y) (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 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 = v.d. I hvert kridt: Find knude u med mindte aftandtandetimat = EXTRACT-MIN Afpænd kanter om u peger på med DECREASE-KEY. Dijktra algoritme Dijktra algoritme 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 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. Tid. n EXTRACT-MIN n INSERT < m DECREASE-KEY Samlet tid med min-hob. O(m log n)

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 (-) 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 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 v.d = δ(,v) for alle knuder v. 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. 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 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. Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Krede. Ingen krede. Ingen negative krede.