shortest paths 1 chapter 7 shortest paths c b a e d f 0 328 58 4 8 71 25 2 39

43
Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 3 2 8 5 8 4 8 7 1 2 5 2 3 9

Upload: brendan-freeman

Post on 04-Jan-2016

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Shortest Paths1

Chapter 7 Shortest Paths

CB

A

E

D

F

0

328

5 8

48

7 1

2 5

2

3 9

Page 2: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Weighted Graphs

Shortest Paths2

In a weighted graph, each edge has an associated numerical value, called the weight of the edge

Edge weights may represent, distances, costs, etc. Example:

In a flight route graph, the weight of an edge represents the distance in miles between the endpoint airports

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

849

802

13871743

1843

10991120

1233337

2555

142

12

05

Page 3: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Shortest Path Problem

Shortest Paths3

Given a weighted graph and two vertices u and v, we want to find a path of minimum total weight between u and v.Length of a path is the sum of the weights of its edges.

Example:Shortest path between Providence and Honolulu

Applications Internet packet routing Flight reservationsDriving directions

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

849

802

13871743

1843

10991120

1233337

2555

142

12

05

Page 4: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Shortest Path Properties

Shortest Paths4

Property 1:A subpath of a shortest path is itself a shortest path

Property 2:There is a tree of shortest paths from a start vertex to all the other vertices

Example:Tree of shortest paths from Providence

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

849

802

13871743

1843

10991120

1233337

2555

142

12

05

Page 5: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Single Source Shortest path Dijkstra’s Algorithm

Shortest Paths5

The distance of a vertex v from a vertex s is the length of a shortest path between s and v

Dijkstra’s algorithm computes the distances of all the vertices from a given start vertex s

Assumptions: the graph is connected the edges are

undirected the edge weights are

nonnegative

We grow a “cloud” of vertices, beginning with s and eventually covering all the vertices

The cloud consists of those nodes whose distance from source is known.

We store with each vertex v a label d(v) representing the distance of v from s

At each stepWe add to the cloud the

vertex u outside the cloud with the smallest distance label, d(u)

We update the labels of the vertices adjacent to u

Page 6: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Edge Relaxation -improvement

Shortest Paths6

• Metaphor for relaxation is a spring which is stretched and then relaxes to its true length

• Cloud is nodes that have best distance known

Consider an edge e (u,z) such that u is the vertex most

recently added to the cloud z is not in the cloud

The relaxation of edge e updates distance d(z) as follows:

d(z) min{d(z),d(u) weight(e)}

d(z) 75

d(u) 5010

zsu

d(z) 60

d(u) 5010

zsu

e

e

Page 7: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Example

Shortest Paths7

CB

A

E

D

F

0

428

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

328

5 11

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

328

5 8

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

Page 8: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Example (cont.)

Shortest Paths8

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

Page 9: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Dijkstra’s Algorithm

Shortest Paths9

A priority queue stores the vertices outside the cloudKey: distanceElement: vertex

Locator-based methods insert(k,e) returns a

locator replaceKey(l,k) changes

the key of an item We store two labels

with each vertex:Distance (d(v) label) locator in priority

queue

Algorithm DijkstraDistances(G, s)Q new heap-based priority queuefor all v G.vertices()

if v ssetDistance(v, 0)

else setDistance(v, )

l Q.insert(getDistance(v), v)setLocator(v,l)

while Q.isEmpty()u Q.removeMin() for all e G.incidentEdges(u)

{ relax edge e }z G.opposite(u,e)r getDistance(u) weight(e)if r getDistance(z)

setDistance(z,r) Q.replaceKey(getLocator(z),r)

Page 10: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Analysis

Shortest Paths10

Graph operations Method incidentEdges is called once for each vertex

Label operations We set/get the distance and locator labels of vertex z O(deg(z))

times Setting/getting a label takes O(1) time

Priority queue operations Each vertex is inserted once into and removed once from the

priority queue, where each insertion or removal takes O(log n) time

The key of a vertex in the priority queue is modified at most deg(w) times, where each key change takes O(log n) time

Dijkstra’s algorithm runs in O((n m) log n) time provided the graph is represented by the adjacency list structure Recall that v deg(v) 2m

The running time can also be expressed as O(m log n) since the graph is connected

Page 11: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Why Dijkstra’s Algorithm Works

Shortest Paths11

Dijkstra’s algorithm is based on the greedy method. It adds vertices by increasing distance.

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

Suppose it didn’t find all shortest distances. Let F be the first wrong vertex the algorithm processed.

When the previous node, D, on the true shortest path was considered, its distance was correct.

But the edge (D,F) was relaxed at that time!

Thus, so long as d(F)>d(D), F’s distance cannot be wrong. That is, there is no wrong vertex.

Page 12: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Why It Doesn’t Work for Negative-Weight Edges

Shortest Paths12

If a node with a negative incident edge were to be added late to the cloud, it could mess up distances for vertices already in the cloud.

CB

A

E

D

F

0

457

5 9

48

7 1

2 5

6

0 -8

Dijkstra’s algorithm is based on the greedy method. It adds vertices by increasing distance.

C’s true distance is 1, but it is already in the

cloud with d(C)=5!

Page 13: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Bellman-Ford AlgorithmSingle Source shortest Path

Shortest Paths13

Works even with negative-weight edges

Must assume directed edges (for otherwise we would have negative-weight cycles)

Iteration i finds all shortest paths that use i edges.

Running time: O(nm). Can be extended to

detect a negative-weight cycle if it exists How?

Algorithm BellmanFord(G, s)for all v G.vertices()

if v ssetDistance(v, 0)

else setDistance(v, )

for i 1 to n-1 do // paths of length nfor each e G.edges() //consider all edges

{ relax edge e }u G.origin(e)z G.opposite(u,e)r getDistance(u) weight(e)if r getDistance(z)

setDistance(z,r)If no more updates, distances are correctOtherwise, there is a negative weight cycle

Page 14: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Bellman-Ford Example

Shortest Paths14

-2

0

48

7 1

-2 5

-2

3 9

0

48

7 1

-2 53 9

Nodes are labeled with their d(v) values

-2

-28

0

4

9

48

7 1

-2 53 9

8 -2 4

-15 -25

0

3

-1

9

48

7 1

-2 5

-2

3 9

Page 15: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Bellman-Ford Example

Shortest Paths15

-25

0

-1

9

48

7 1

-2 5

-2

3 9

Nodes are labeled with their d(v) values

-25

0

1

-1

9

48

7 1

-2 5

-2

3 9

31

4

Next iteration of arcs

Page 16: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

DAG-based AlgorithmSingle Source shortest path

Shortest Paths16

Works even with negative-weight edges

Uses topological order Doesn’t use any fancy

data structures Is much faster than

Dijkstra’s algorithm Running time: O(n+m).

Algorithm DagDistances(G, s)for all v G.vertices()

if v ssetDistance(v, 0)

else setDistance(v, )

Perform a topological sort of the verticesfor u 1 to n do //in topological order

for each e G.outEdges(u) //consider only the successors of u

z G.opposite(u,e)r getDistance(u) weight(e)if r getDistance(z)

setDistance(z,r)

Page 17: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

DAG Example

Shortest Paths17

-2

0

48

7 1

-5 5

-2

3 9

0

48

7 1

-5 53 9

Nodes are labeled with their d(v) values

-2

-28

0

4

48

7 1

-5 53 9

-2 4

-1

1 7

-25

0

1

-1

7

48

7 1

-5 5

-2

3 9 4

1

1

2 43

6 5

1

2 43

6 5

8

1

2 43

6 5

1

2 43

6 5

5

0

(two steps)

Page 18: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

All-Pairs Shortest Paths

Shortest Paths18

Find the distance between every pair of vertices in a weighted directed graph G.

We can make n calls to Dijkstra’s algorithm (if no negative edges), which takes O(nmlog n) time.

Likewise, n calls to Bellman-Ford would take O(n2m) time.

We can achieve O(n3) time using dynamic programming (similar to the Floyd-Warshall algorithm).

Algorithm AllPair(G) {assumes vertices 1,…,n} for all vertex pairs (i,j)

if i jD0[i,i] 0

else if (i,j) is an edge in GD0[i,j] weight of edge (i,j)

elseD0[i,j] +

for k 1 to n do for i 1 to n do for j 1 to n do

Dk[i,j] min{Dk-1[i,j], Dk-1[i,k]+Dk-1[k,j]} return Dn

k

j

i

Uses only verticesnumbered 1,…,k-1 Uses only vertices

numbered 1,…,k-1

Uses only vertices numbered 1,…,k(compute weight of this edge)

Page 19: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Shortest Paths19

Skip section 7.2.2

Page 20: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees20

Minimum Spanning TreeSpanning subgraph

Subgraph of a graph G containing all the vertices of G

Spanning treeSpanning subgraph that is

itself a (free) tree

Minimum spanning tree (MST)Spanning tree of a weighted

graph with minimum total edge weight

ApplicationsCommunications networksTransportation networks

ORD

PIT

ATL

STL

DEN

DFW

DCA

101

9

8

6

3

25

7

4

Page 21: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees21

Cycle PropertyCycle Property: If an edge is

not in the spanning tree, but forms a cycle with T, every edge in that cycle is no greater than e in weight.Let T be a minimum

spanning tree of a weighted graph G

Let e be an edge of G that is not in T and C let be the cycle formed by e with T

For every edge f of C, weight(f) weight(e)

Proof:By contradiction If weight(f) weight(e) we can

get a spanning tree of smaller weight by replacing e with f

84

2 36

7

7

9

8e

C

f

84

2 36

7

7

9

8

C

e

f

Replacing f with e yieldsa better spanning tree

Page 22: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees22

U V

Partition PropertyPartition Property:

Consider a partition of the vertices of G into subsets U and V

Let e be an edge of minimum weight across the partition

There is a minimum spanning tree of G containing edge e

Proof:Let T be an MST of G If T does not contain e, consider

the cycle C formed by e with T and let f be an edge of C across the partition

By the cycle property,weight(f) weight(e)

Thus, weight(f) weight(e)We obtain another MST by

replacing f with e

74

2 85

7

3

9

8 e

f

74

2 85

7

3

9

8 e

f

Replacing f with e yieldsanother MST

U V

Page 23: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees23

Prim-Jarnik’s AlgorithmSimilar to Dijkstra’s algorithm (for a connected

graph) –Only difference is that we put edge weight (not shortest distance from source) on priority queue

We pick an arbitrary vertex s and we grow the MST as a cloud of vertices, starting from s

We store with each vertex v a label d(v) = the smallest weight of an edge connecting v to a vertex in the cloud At each step:

We add to the cloud the vertex u outside the cloud with the smallest edge We update the labels of the vertices adjacent to u

Page 24: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees24

Prim-Jarnik’s Algorithm (cont.)

A priority queue stores the vertices outside the cloud Key: distance Element: vertex

Locator-based methods insert(k,e) returns a

locator replaceKey(l,k) changes

the key of an item We store three labels

with each vertex: Distance Parent edge in MST Locator in priority

queue

Algorithm PrimJarnikMST(G)Q new heap-based priority queues a vertex of Gfor all v G.vertices()

if v ssetDistance(v, 0)

else setDistance(v, )

setParent(v, )l Q.insert(getDistance(v), v)

setLocator(v,l)while Q.isEmpty()

u Q.removeMin() edge to u is part of spanning tree

for all e G.incidentEdges(u)z G.opposite(u,e)r weight(e)if r getDistance(z)

setDistance(z,r)setParent(z,e)

Q.replaceKey(getLocator(z),r)

Page 25: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees25

Example

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

8

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

5

7

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

5

7

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

5 4

7

Page 26: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees26

Example (contd.)

BD

C

A

F

E

74

28

5

7

3

9

8

03

2

5 4

7

BD

C

A

F

E

74

28

5

7

3

9

8

03

2

5 4

7

Page 27: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees27

Analysis Graph operations

Method incidentEdges is called once for each vertex Label operations

We set/get the distance, parent and locator labels of vertex z O(deg(z)) times

Setting/getting a label takes O(1) time Priority queue operations

Each vertex is inserted once into and removed once from the priority queue, where each insertion or removal takes O(log n) time

The key of a vertex w in the priority queue is modified at most deg(w) times, where each key change takes O(log n) time

Prim-Jarnik’s algorithm runs in O((n m) log n) time provided the graph is represented by the adjacency list structureRecall that v deg(v) 2m

The running time is O(m log n) since the graph is connected

Page 28: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees28

Kruskal’s Algorithm We are left with one

cluster that encompasses the MST

A tree T which is our MST

Algorithm KruskalMST(G)for each vertex V in G do

define a Cluster(v) of {v}Sort edges by weightT while T has fewer than n-1 edges do

edge e = next edge in listLet u, v be the endpoints of eif Cluster(v) Cluster(u) then

Add edge e to TMerge Cluster( (v) and Cluster( (u)

return T

Page 29: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees 29

Data Structure for Kruskal AlgortihmThe algorithm maintains a forest of treesAn edge is accepted it if connects distinct treesWe need a data structure that maintains a partition, i.e., a collection of disjoint sets, with the operations:

-find(u): return the set storing u -union(u,v): replace the sets storing u and v

with their union

Page 30: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees 30

Representation of a PartitionEach partition is stored as a tree with members

pointing to their parent.Each element has a reference back to the set

operation find(u) takes O(d) time, (where d is the level of u in the tree) and returns the set of which u is a member.

in operation union(u,v), we do a find on each of u and v and point either u to v or v to u.

the time for operation union(u,v) is max(nu,nv), where nu and nv are the depths of the partitions storing u and v

Whenever an element is processed, if we keep track of sizes of partitions or depth of tree, it goes into a set of size at least double, hence each element is processed at most log n times

This is even better with path compression – almost linear

Page 31: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees31

Kruskal Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 32: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees32

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Example

Page 33: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees33

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 34: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees34

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 35: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees35

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 36: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees36

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 37: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees37

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 38: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees38

Baruvka’s Algorithm Like Kruskal’s Algorithm, Baruvka’s algorithm grows

many “clouds” at once.

Each iteration of the while-loop halves the number of connected components in T.

In ONE traversal, we add multiple edges.The running time is O(m log n). Can be done in parallel.

Algorithm BaruvkaMST(G)T V {just the vertices of G}

while T has fewer than n-1 edges dofor each connected component C in T do

Let edge e be the smallest-weight edge from C to another component in T.if e is not already in T then

Add edge e to Treturn T

Page 39: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees39

Baruvka’s Algorithm For all vertices search the edge with

the smallest weight of this vertex and mark these edges.

Repeat until n-1 edges have been added: Add these edges to the MST. Do a DFS search (using only edges of

MST) to find clusters. Label all nodes reached with the cluster number. Keep track of the smallest edge you encounter (in each cluster) which is not part of the selected edges.

Page 40: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees40

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846621

802

1464

1235

337

Baruvka Example

Page 41: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees41

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846621

802

1464

1235

337

Page 42: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees42

Example

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846621

802

1464

1235

337

Page 43: Shortest Paths 1 Chapter 7 Shortest Paths C B A E D F 0 328 58 4 8 71 25 2 39

Minimum Spanning Trees43

What is complexity?Each pass does a dfs search – O(m+n) =

O(m) since is connectedMake a total of log n passes – as the

number of components decreases by at least half each pass

O(m)log n