shortest paths and dijkstra's algorithm

22
Shortest Paths and Dijkstra's Algorithm CS 110: Data Structures and Algorithms First Semester, 2010-2011

Upload: kiara

Post on 20-Feb-2016

167 views

Category:

Documents


7 download

DESCRIPTION

Shortest Paths and Dijkstra's Algorithm. CS 110: Data Structures and Algorithms First Semester, 2010-2011. Single-Source Shortest Paths. Given a weighted graph G and a source vertex v in G, determine the shortest paths from v to all other vertices in G Path length: sum of all edges in path - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Shortest Paths and Dijkstra's Algorithm

Shortest Pathsand

Dijkstra's Algorithm

CS 110: Data Structures and Algorithms

First Semester, 2010-2011

Page 2: Shortest Paths and Dijkstra's Algorithm

Single-Source Shortest Paths

►Given a weighted graph G and a source vertex v in G, determine the shortest paths from v to all other vertices in G►Path length: sum of all edges in path

►Useful in road map applications (e.g., Google maps or map quest) for example

Page 3: Shortest Paths and Dijkstra's Algorithm

Dijkstra’s Algorithm►Solves the single-source shortest

path problem►Involves keeping a table of current

shortest path lengths from a source vertex (initialize to infinity for all vertices except v, which has length 0)

Page 4: Shortest Paths and Dijkstra's Algorithm

Dijkstra’s Algorithm►Repeatedly select the vertex u with

shortest path length, and update other lengths by considering the path that passes through that vertex

►Stop when all vertices have been selected

Page 5: Shortest Paths and Dijkstra's Algorithm

Dijkstra’s Algorithm►Can make use of a priority queue to

facilitate selection of shortest lengths►Need to refine the data structure to

allow the updating of key values►Time complexity: O(n+m) or O(n2 log

n)►O(n2 ) if computation of minimum is

simplified

Page 6: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

Dijkstra’s Algorithm

Page 7: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

∞∞

0

Dijkstra’s Algorithm

Page 8: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

621

∞946

184

0

Dijkstra’s Algorithm

Page 9: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

621

∞946

184

0

Dijkstra’s Algorithm

Page 10: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

∞946

371

184

1575

0

Dijkstra’s Algorithm

Page 11: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

∞946

371

184

1575

0

Dijkstra’s Algorithm

Page 12: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

∞946

371

184

1575

0

Dijkstra’s Algorithm

Page 13: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

∞946

371

184

1575

0

Dijkstra’s Algorithm

Page 14: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

3075

∞946

371

184

1575

0

Dijkstra’s Algorithm

Page 15: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

3075

∞946

371

184

1575

0

Dijkstra’s Algorithm

Page 16: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

2467

∞946

371

184

1423

0

Dijkstra’s Algorithm

Page 17: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

2467

∞946

371

184

1423

0

Dijkstra’s Algorithm

Page 18: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

2467

3288

946

371

184

1423

0

Dijkstra’s Algorithm

Page 19: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

2467

3288

946

371

184

1423

0

Dijkstra’s Algorithm

Page 20: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

2467

3288

946

371

184

1423

0

Dijkstra’s Algorithm

Page 21: Shortest Paths and Dijkstra's Algorithm

MIA

JFK

PVD

BOS

DFW

SFO

LAX

BWI

ORD

2704

1846

337

1235

1464

802621

2342

1391

1121

144

849

740

867

187

946

184

1090

1258

328

621

2467

2658

946

371

184

1423

0

Dijkstra’s Algorithm

Page 22: Shortest Paths and Dijkstra's Algorithm

Pseudo-Code: Dijkstrafunction Dijkstra( Graph g, Vertex source )

for each vertex v in gdist[v] <-- infinityprevious[v] <-- undefined

dist[source] <-- 0Q <-- the set of all nodes in Graphwhile Q is not empty

u <-- vertex in Q with smallest dist[]if dist[u] == infinity

breakremove u from Qfor each neighbor v of u

alt = dist[u] + dist_between( u, v )if alt < dist[v]

dist[v] = altprevious[v] = u

return dist[]