Transcript
Page 1: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 1

4.4 Single-Source Shortest Paths

• Problem Definition

• Shortest paths and Relaxation

• Dijkstra’s algorithm (can be viewed as a greedy algorithm)

Page 2: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 2

Problem Definition:• Real problem: A motorist wishes to find the shortest

possible route from Chicago to Boston.Given a road map of the United States on which the distance between each pair of adjacent intersections is marked, how can we determine this shortest route?

• Formal definition: Given a directed graph G=(V, E, W), where each edge has a weight, find a shortest path from s to v for some interesting vertices s and v.

• s—source

• v—destination.

Page 3: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 3

Find a shortest path from station A to station B.

-need serious thinking to get a correct algorithm.

A

B

Page 4: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 4

Shortest path:• The weight of path p=<v0,v1,…,vk > is the sum of

the weights of its constituent edges:

k

i

ii vvwpw1

1 ),()(

The cost of the shortest path from s to v is denoted as (s, v).

Page 5: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 5

Negative-Weight edges:• Edge weight may be negative. • negative-weight cycles– the total weight in the

cycle (circuit) is negative. • If no negative-weight cycles reachable from the

source s, then for all v V, the shortest-path weight remains well defined,even if it has a negative value.

• If there is a negative-weight cycle on some path from s to v, we define = - .

),( vs

),( vs

Page 6: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 6

Figure1 Negative edge weights in a directed graph.Shown within each vertex is itsshortest-path weight from source s.Because vertices e and f form a negative-weight cycle reachable from s,they have shortest-path weights of - . Because vertex g is reachable from a vertex whose shortest path is - ,it,too,has a shortest-path weightof - .Vertices such as h, i ,and j are not reachable from s,and so their shortest-pathweights are , even though they lie on a negative-weight cycle.

0 115

-13

h i

j

2

3-8

3

5

2

s

-4

4

8

7

a b

c d

e f

g

6

-3

3

-6

Page 7: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 7

Representing shortest paths:

• we maintain for each vertex vV , a predecessor

[ v] that is the vertex in the shortest path

right before v. • With the values of , a backtracking process can

give the shortest path. (We will discuss that after the algorithm is given)

Page 8: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 8

• Observation: (basic)• Suppose that a shortest path p from a source s to a

vertex v can be decomposed into

s u vfor some vertex u and path p’. Then, the

weight of a shortest path from s to v is

'p

),(),(),( vuwusvs We do not know what is u for v, but we know u is in V and we

can try all nodes in V in O(n) time.

Also, if u does not exist, the edge (s, v) is the shortest.

Question: how to find (s, u), the first shortest from s to some node?

Page 9: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 9

Relaxation:

• The process of relaxing an edge (u,v) consists of testing whether we can improve the shortest path to v found so far by going through u and,if so,updating d[v] and [v].

• RELAX(u,v,w)

• if d[v]>d[u]+w(u,v)

• then d[v] d[u]+w(u,v) (based on observation)

• [v] u

Page 10: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 10

Figure2 Relaxation of an edge (u,v).The shortest-path estimate of each vertex is shown within the vertex. (a)Because d[v]>d[u]+w(u,v) prior to relaxation,the value of d[v] decreases. (b)Here, d[v] d[u]+w(u,v) before the relaxation

step,so d[v] is unchanged by relaxation.

5 9

u v

5 7

u v

5 6

u v

5 6

u v

2 2

2 2

(a) (b)

RELAX(u,v) RELAX(u,v)

Page 11: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 11

Initialization:

• For each vertex v V, d[v] denotes an upper bound on the weight of a shortest path from source s to v.

• d[v]– will be (s, v) after the execution of the algorithm.

• initialize d[v] and [v] as follows: .

• INITIALIZE-SINGLE-SOURCE(G,s)

• for each vertex v V[G]

• do d[v]

• [v] NIL

• d[s] 0

Page 12: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 12

Dijkstra’s Algorithm:

• Dijkstra’s algorithm assumes that w(e)0 for each e in the graph.

• maintain a set S of vertices such that– Every vertex v S, d[v]=(s, v), i.e., the shortest-path from s to v

has been found. (Intial values: S=empty, d[s]=0 and d[v]=)

• (a) select the vertex uV-S such that

d[u]=min {d[x]|x V-S}. Set S=S{u}

(b) for each node v adjacent to u do RELAX(u, v, w).

• Repeat step (a) and (b) until S=V.

Page 13: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 13

Continue:

• DIJKSTRA(G,w,s):

• INITIALIZE-SINGLE-SOURCE(G,s)

• S

• Q V[G]

• while Q

• do u EXTRACT -MIN(Q)

• S S {u}

• for each vertex v Adj[u]

• do RELAX(u,v,w)

Page 14: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 14

Implementation:

• a priority queue Q stores vertices in V-S, keyed by their d[] values.

• the graph G is represented by adjacency lists.

Page 15: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 15

0

105

2

1

3 4

2

6

97

s

u v

x y8 8

8 8

(a)

Page 16: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 16

0

5/s

10/s

105

2

1

3 4

2

6

97

s

u v

x y8

8

(b)(s,x) is the shortest path using one edge. It is also the shortest path from s to x.

Page 17: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 17

0

7/x

14/x

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(c)

Page 18: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 18

0

7/x

13/y

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(d)

Page 19: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 19

0

7/x

9/u

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(e)

Page 20: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 20

0

7/x

9/u

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(f)Backtracking: v-u-x-s

Page 21: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 21

Theorem: Consider the set S at any time in the algorithm’s execution. For each vS, the path Pv is a shortest s-v path.

Proof: We prove it by induction on |S|.1. If |S|=1, then the theorem holds. (Because d[s]=0

and S={s}.)

2. Suppose that the theorem is true for |S|=k for some k>0.

3. Now, we grow S to size k+1 by adding the node v.

Page 22: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 22

Proof: (continue)Now, we grow S to size k+1 by adding the node v.

Let (u, v) be the last edge on our s-v path Pv, i.e., d[v]=d[u]+w(u, v).

Consider any other path from P: s,…,x,y, …, v. (red in the Fig.)

Case 1: y is the first node that is not in S and xS.

Since we always select the node with the smallest value d[] in the algorithm, we have d[v]d[y].

Moreover, the length of each edge is 0.

Thus, the length of Pd[y]d[v].

That is, the length of any path d[v].

s

xy

u vSet S

Case 2: such a y does not exist.

d[v]=d[u]+w(u, v)d[x]+w(x, v).

That is, the length of any path d[v].

Page 23: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 23

The algorithm does not work if there are negative weight edges in the graph

.

1

2-10

s v

u

S->v is shorter than s->u, but it is longer than

s->u->v.

Page 24: 2015-5-7chapter251 4.4 Single-Source Shortest Paths Problem Definition Shortest paths and Relaxation Dijkstra’s algorithm (can be viewed as a greedy algorithm)

23/4/18 chapter25 24

Time complexity of Dijkstra’s Algorithm:• Time complexity depends on implementation of the Queue.• Method 1: Use an array to story the Queue• EXTRACT -MIN(Q) --takes O(|V|) time.

– Totally, there are |V| EXTRACT -MIN(Q)’s. – time for |V| EXTRACT -MIN(Q)’s is O(|V|2).

• RELAX(u,v,w) --takes O(1) time. – Totally |E| RELAX(u, v, w)’s are required.– time for |E| RELAX(u,v,w)’s is O(|E|).

• Total time required is O(|V|2+|E|)=O(|V|2)• Backtracking with [] gives the shortest path in inverse

order.• Method 2: The priority queue is implemented as a

adaptable heap. It takes O(log n) time to do EXTRACT-MIN(Q) as well as | RELAX(u,v,w). The total running time is O(|E|log |V| ).


Top Related