1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3,...

56
1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    217
  • download

    1

Transcript of 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3,...

Page 1: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

1

Graphs: shortest paths

15-211 Fundamental Data Structures and Algorithms

Ananda Guna

April 3, 2003

Page 2: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

2

Announcements

Start working on Homework #5.

Quiz #3 will be made available Friday 4/4 for 24 hours.

Page 3: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

Recap

Page 4: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

4

(Undirected)

Graphs — an overview

PIT

BOS

JFK

DTW

LAX

SFO

Vertices (aka nodes)

Edges

1987

2273

3442145

2462

618

211

318

190

Weights

Page 5: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

5

Definitions

Graph G = (V,E) Set V of vertices (nodes) Set E of edges

Elements of E are pair (v,w) where v,w V. An edge (v,v) is a self-loop. (Usually assume no self-loops.)

Weighted graph Elements of E are ((v,w),x) where x is a weight.

Directed graph (digraph) The edge pairs are ordered

Undirected graph The edge pairs are unordered

E is a symmetric relation (v,w) E implies (w,v) E In an undirected graph (v,w) and (w,v) are the same edge

Page 6: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

6

Graph Questions Is (x,y) an edge in the Graph?

Given x in V, does (x,x) in E?

Given x, y in V, what is the closest(cheapest) path from x to y (if any)?

What node v in V has the maximum(minimum) degree?

What is the largest connected sub-graph?

What is the complexity of algorithms for each of the above questions if Graph is stored as an adjacency matrix?

Graph is stored as an adjacency list?

Page 7: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

7

Graph Traversals

One of the fundamental operations in graphs. Find things such as

Count the total edges

Output the content in each vertex

Identify connected components

Before/during the tour - mark vertices

Visited

Not-visited

explored

Page 8: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

8

Graph Traversals using..

Queue - Store the vertices in a first-in, first out (FIFO) queue as follows. Put the starting node in a queue first. Dequeue the first element and add all its neighbors to the queue. Continue to explore the oldest unexplored vertices first. Thus the explorations radiate out slowly from the starting vertex. This describes a traversal technique known as breadth-first search.

Stack - Store vertices in a last-in, first-out (LIFO) stack. Explore vertices by going along a path, always visiting a new neighbor if one is available, and backing up only if all neighbors are discovered vertices. Thus our explorations quickly move away from start. This is called depth-first search.

Page 9: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

Shortest Paths

Page 10: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

10

Airline routes

PVD

BOS

JFK

ORD

LAX

SFO

DFWBWI

MIA

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 11: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

11

Single-source shortest path

Suppose we live in Baltimore (BWI) and want the shortest path to San Francisco (SFO).

One way to solve this is to solve the single-source shortest path problem:

Find the shortest path from BWI to every city.

Page 12: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

12

Single-source shortest path

While we may be interested only in BWI-to-SFO, there are no known algorithms that are asymptotically faster than solving the single-source problem for BWI-to-every-city.

Page 13: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

13

Shortest paths

What do we mean by “shortest path”?

Minimize the number of layovers (i.e., fewest hops).

Unweighted shortest-path problem.

Minimize the total mileage (i.e., fewest frequent-flyer miles ;-).

Weighted shortest-path problem.

Page 14: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

14

Many applications

Shortest paths model many useful real-world problems.

Minimization of latency in the Internet.

Minimization of cost in power delivery.

Job and resource scheduling.

Route planning.

Page 15: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

Unweighted Single-SourceShortest Path Algorithm

Page 16: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

16

Unweighted shortest path

In order to find the unweighted shortest path, we will augment vertices and edges so that:

vertices can be marked with an integer, giving the number of hops from the source node, and

edges can be marked as either explored or unexplored. Initially, all edges are unexplored.

Page 17: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

17

Unweighted shortest path

Algorithm:Set i to 0 and mark source node v with 0.

Put source node v into a queue L0.

While Li is not empty: Create new empty queue Li+1

For each w in Li do:• For each unexplored edge (w,x) do:

– mark (w,x) as explored– if x not marked, mark with i and enqueue x into

Li+1

Increment i.

Page 18: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

18

Breadth-first search

This algorithm is a form of breadth-first search.

Performance: O(|V|+|E|).

Q: Use this algorithm to find the shortest route (in terms of number of hops) from BWI to SFO.

Q: What kind of structure is formed by the edges marked as explored?

Page 19: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

19

Use of a queue

It is very common to use a queue to keep track of:nodes to be visited next, or

nodes that we have already visited.

Typically, use of a queue leads to a breadth-first visit order.

Breadth-first visit order is “cautious” in the sense that it examines every path of length i before going on to paths of length i+1.

Page 20: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

Weighted Single-SourceShortest Path Algorithm

(Dijkstra’s Algorithm)

Page 21: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

21

Weighted shortest path

Now suppose we want to minimize the total mileage.

Breadth-first search does not work!

Minimum number of hops does not mean minimum distance.

Consider, for example, BWI-to-DFW:

Page 22: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

22

Three 2-hop routes to DFW

PVD

BOS

JFK

ORD

LAX

SFO

DFWBWI

MIA

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 23: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

23

A greedy algorithm

Assume that every city is infinitely far away.I.e., every city is miles away from BWI

(except BWI, which is 0 miles away).

Now perform something similar to breadth-first search, and optimistically guess that we have found the best path to each city as we encounter it.

If we later discover we are wrong and find a better path to a particular city, then update the distance to that city.

Page 24: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

24

Intuition behind Dijkstra’s alg.

For our airline-mileage problem, we can start by guessing that every city is miles away.Mark each city with this guess.

Find all cities one hop away from BWI, and check whether the mileage is less than what is currently marked for that city.If so, then revise the guess.

Continue for 2 hops, 3 hops, etc.

Page 25: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

25

Dijkstra’s algorithm

Algorithm initialization:

Label each node with the distance , except start node, which is labeled with distance 0.

D[v] is the distance label for v.

Put all nodes into a priority queue Q, using the distances as labels.

Page 26: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

26

Dijkstra’s algorithm, cont’d

While Q is not empty do:

u = Q.removeMin

for each node z one hop away from u do:

if D[u] + miles(u,z) < D[z] then• D[z] = D[u] + miles(u,z)• change key of z in Q to D[z]

Note use of priority queue allows “finished” nodes to be found quickly (in O(log N) time).

Page 27: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

27

Shortest mileage from BWI

PVD

BOS

JFK

ORD

LAX

SFO

DFW

BWI0

MIA

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 28: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

28

Shortest mileage from BWI

PVD

BOS

JFK184

ORD621

LAX

SFO

DFW

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 29: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

29

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX

SFO

DFW1575

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 30: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

30

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX

SFO

DFW1575

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 31: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

31

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX

SFO3075

DFW1575

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 32: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

32

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX

SFO2467

DFW1423

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 33: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

33

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX3288

SFO2467

DFW1423

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 34: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

34

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX2658

SFO2467

DFW1423

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 35: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

35

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX2658

SFO2467

DFW1423

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 36: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

36

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX2658

SFO2467

DFW1423

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 37: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

37

Shortest mileage from BWI

PVD328

BOS371

JFK184

ORD621

LAX2658

SFO2467

DFW1423

BWI0

MIA946

337

2704

1846

1464

1235

2342

802

867

849

740

187

144

1391

184

1121946

1090

1258621

Page 38: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

38

Dijkstra’s algorithm, recap

While Q is not empty do:

u = Q.removeMin

for each node z one hop away from u do:

if D[u] + miles(u,z) < D[z] then• D[z] = D[u] + miles(u,z)• change key of z in Q to D[z]

Page 39: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

39

Quiz break

Would it be better to use an adjacency list or an adjacency matrix for Dijkstra’s algorithm?

What is the running time of Dijkstra’s algorithm, in terms of |V| and |E|?

Page 40: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

40

Complexity of Dijkstra

Adjacency matrix version Dijkstra finds shortest path from one vertex to all others in O(|V|2) time

If |E| is small compared to |V|2, use a priority queue to organize the vertices in V-S, where V is the set of all vertices and S is the set that has already been explored

So total of |E| updates each at a cost of O(log |V|)

So total time is O(|E| log|V|)

Page 41: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

The All PairsShortest Path Algorithm

(Floyd’s Algorithm)

Page 42: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

42

Finding all pairs shortest paths

Assume G=(V,E) is a graph such that c[v,w] 0, where C is the matrix of edge costs.

Find for each pair (v,w), the shortest path from v to w. That is, find the matrix of shortest paths

Certainly this is generalization of Dijkstra’s.

Note: For later discussions assume |V| = n and |E| = m

Page 43: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

43

Floyd’s Algorithm

A[i][j] = C(i,j) if there is an edge (i,j)

A[i][j] = infinity(inf) if there is no edge (i,j)

Graph

“adjacency” matrix

A is the shortest path matrix that uses 1 or fewer edges

Page 44: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

44

Floyd ctd..

To find shortest paths that uses 2 or fewer edges find A2, where multiplication defined as min of sums instead sum of products

That is (A2)ij = min{ Aik + Akj | k =1..n}

This operation is O(n3)

Using A2 you can find A4 and then A8 and so on

Therefore to find An we need log n operations

Therefore this algorithm is O(log n* n3)

We will consider another algorithm next

Page 45: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

45

Floyd-Warshall Algorithm

This algorithm uses nxn matrix A to compute the lengths of the shortest paths using a dynamic programming technique.

Let A[i,j] = c[i,j] for all i,j & ij

If (i,j) is not an edge, set A[i,j]=infinity and A[i,i]=0

Ak[i,j] =

min (Ak-1[i,j] , Ak-1[i,k]+ Ak-1[k,j])

Page 46: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

46

Example – Floyd’s Algorithm

1 2 3

8 2

3

5

Find the all pairs shortest path matrix

Ak[i,j] =

min (Ak-1[i,j] , Ak-1[i,k]+ Ak-1[k,j])

Page 47: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

47

Floyd-Warshall Implementation

initialize A[i,j] = C[i,j]

initialize all A[i,i] = 0

for k from 1 to n

for i from 1 to n

for j from 1 to n

if (A[i,j] > A[i,k]+A[k,j])

A[i,j] = A[i,k]+A[k,j];

The complexity of this algorithm is O(n3)

Page 48: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

Negative Weighted Single-SourceShortest Path Algorithm

(Bellman-Ford Algorithm)

Page 49: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

49

Bellman-Ford Algorithm

Definition: An efficient algorithm to find the shortest paths from a single source vertex to all other vertices in a weighted, directed graph. Weights may be negative. The algorithm initializes the distance to the source vertex to 0 and all other vertices to . It then does V-1 passes (V is the number of vertices) over all edges relaxing, or updating, the distance to the destination of each edge. Finally it checks each edge again to detect negative weight cycles, in which case it returns false. The time complexity is O(VE), where E is the number of edges.

Source: NIST

Page 50: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

50

Bellman-Ford Shortest Paths

We want to compute the shortest path from the start to every node in the graph. As usual with DP, let's first just worry about finding the LENGTH of the shortest path. We can later worry about actually outputting the path.

To apply the DP approach, we need to break the problem down into sub-problems. We will do that by imagining that we want the shortest path out of all those that use i or fewer edges. We'll start with i=0, then use this to compute for i=1, 2, 3, ....

Page 51: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

51

Example

For each edge (u,v), let's denote its length by C(u,v))

Let d[i][v] = distance from start to v using the shortest path out of all those that use i or fewer edges, or infinity if you can't get there with <= i edges.

Page 52: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

52

Example ctd..

How can we fill out the rows?

0 1 2 3 4 5

0 0 1 0 50 15 2 0 50 80 15 45

V

i

Page 53: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

53

Example ctd..

Can we get ith row from i-1th row?

for v != start,

d[v][i] = MIN d[x][i-1] + len(x,v)

x->v

We know minimum path to come to x using < i nodes.So for all x that can reach v, find the minimum such sum (in blue) among all x

Assume d[start][i] = 0 for all i

Page 54: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

54

Completing the table

0 1 2 3 4 5

0 0 1 0 50 15 2 0 50 80 15 45 3 0

4 0

5 0

d[v][i] = MIN d[x][i-1] + len(x,v)

x->v

Page 55: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

55

Questions

Question: How large does i ever have to be? (Remember, there are no negative-weight cycles)

Question: what is the total running time in terms of |V| and |E|?

Page 56: 1 Graphs: shortest paths 15-211 Fundamental Data Structures and Algorithms Ananda Guna April 3, 2003.

56

Next Week

Work on Homework #5

We will talk more about graph traversals and topological sorting

We will discuss Minimum Spanning Trees (Prim’s Algorithm)

Read Chapter 14