Single source stortest path bellman ford and dijkstra

17
Analysis and Design of Algorithm B. Tech. (CSE), VII Semester Roshan Tailor Amity University Rajasthan

description

Analysis and Design of Algorithm

Transcript of Single source stortest path bellman ford and dijkstra

Page 1: Single source stortest path bellman ford and dijkstra

Analysis and Design of Algorithm

B. Tech. (CSE), VII Semester

Roshan Tailor

Amity University Rajasthan

Page 2: Single source stortest path bellman ford and dijkstra

2

This Lecture

• Single-source shortest paths in weighted graphs– Shortest-Path Problems– Properties of Shortest Paths, Relaxation– Dijkstra’s Algorithm– Bellman-Ford Algorithm

Page 3: Single source stortest path bellman ford and dijkstra

3

Shortest Path

• Generalize distance to weighted setting• Digraph G = (V,E) with weight function W: E R

(assigning real values to edges)• Weight of path p = v1 v2 … vk is

• Shortest path = a path of the minimum weight• Applications

– static/dynamic network routing– robot motion planning– map/route generation in traffic

1

11

( ) ( , )k

i ii

w p w v v

Page 4: Single source stortest path bellman ford and dijkstra

4

Shortest-Path Problems

• Shortest-Path problems– Single-source (single-destination). Find a shortest

path from a given source (vertex s) to each of the vertices.

– Single-pair. Given two vertices, find a shortest path between them. Solution to single-source problem solves this problem efficiently, too.

– All-pairs. Find shortest-paths for every pair of vertices. Dynamic programming algorithm.

Page 5: Single source stortest path bellman ford and dijkstra

5

Negative Weights and Cycles?

• Negative edges are OK, as long as there are no negative weight cycles (otherwise paths with arbitrary small “lengths” would be possible)

• Shortest-paths can have no cycles (otherwise we could improve them by removing cycles)– Any shortest-path in graph G can be no longer than

n – 1 edges, where n is the number of vertices

Page 6: Single source stortest path bellman ford and dijkstra

6

Relaxation

• For each vertex v in the graph, we maintain v.d(), the estimate of the shortest path from s, initialized to at the start

• Relaxing an edge (u,v) means testing whether we can improve the shortest path to v found so far by going through u

u v

vu

2

2

Relax(u,v)

u v

vu

2

2

Relax(u,v)

Relax (u,v,G)if v.d > u.d()+ w(u,v) then

v.d = (u.d()+ w(u,v))

v.setparent = u

Page 7: Single source stortest path bellman ford and dijkstra

7

Dijkstra's Algorithm

• Non-negative edge weights• Greedy, similar to Prim's algorithm for MST• Like breadth-first search (if all weights = 1, one

can simply use BFS)• Use Q, a priority queue ADT keyed by v.d()

(BFS used FIFO queue, here we use a PQ, which is re-organized whenever some d decreases)

• Basic idea– maintain a set S of solved vertices– at each step select "closest" vertex u, add it to S, and

relax all edges from u

Page 8: Single source stortest path bellman ford and dijkstra

8

Dijkstra’s Pseudo Code

Page 9: Single source stortest path bellman ford and dijkstra

9

Dijkstra’s Example

s

u v

yx

10

5

1

2 39

4 67

2

s

u v

yx

10

5

1

2 39

4 67

2

Page 10: Single source stortest path bellman ford and dijkstra

10

Dijkstra’s Example (2)

u v

s

yx

10

5

1

2 39

4 67

2

s

u v

yx

10

5

1

2 39

4 67

2

Page 11: Single source stortest path bellman ford and dijkstra

11

Dijkstra’s Example (3)

u v

yx

10

5

1

2 39

4 67

2

u v

yx

10

5

1

2 39

4 67

2

Page 12: Single source stortest path bellman ford and dijkstra

12

Dijkstra’s Running Time

• Extract-Min executed |V| time• Decrease-Key executed |E| time• Time = |V| TExtract-Min + |E| TDecrease-Key

• T depends on different Q implementations

Q T(Extract-Min)

T(Decrease-Key) Total

array (V) (1) (V 2)

binary heap (lg V) (lg V) (E lg V)

Fibonacci heap (lg V) (1) (amort.) (V lgV + E)

Page 13: Single source stortest path bellman ford and dijkstra

13

Bellman-Ford Algorithm

• Dijkstra’s doesn’t work when there are negative edges:– Intuition – we can not be greedy any more on the

assumption that the lengths of paths will only increase in the future

• Bellman-Ford algorithm detects negative cycles (returns false) or returns the shortest path-tree

Page 14: Single source stortest path bellman ford and dijkstra

14

Bellman-Ford Algorithm

Page 15: Single source stortest path bellman ford and dijkstra

15

Bellman-Ford Example

5

s

zy

6

7

8-3

72

9

-2xt

-4

s

zy

6

7

8-3

72

9

-2xt

-4

5

s

zy

6

7

8-3

72

9

-2xt

-4

5

s

zy

6

7

8-3

72

9

-2xt

-4

5

Page 16: Single source stortest path bellman ford and dijkstra

16

Bellman-Ford Example

s

zy

6

7

8-3

72

9

-2xt

-4

• Bellman-Ford running time:– (|V|-1)|E| + |E| = (VE)

5

Page 17: Single source stortest path bellman ford and dijkstra

Bellman-Ford Example

17