0% found this document useful (0 votes)
55 views16 pages

Introduction To Algorithms CS 445

Uploaded by

harshit008
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views16 pages

Introduction To Algorithms CS 445

Uploaded by

harshit008
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 16

CE806: AAD U. & P. U. Patel Dept.

OF Computer Engineering

Introduction To Algorithms
CS 445

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 1


CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

This Lecture
 Single-source shortest paths in weighted
graphs
 Shortest-Path Problems
 Properties of Shortest Paths, Relaxation
 Dijkstra’s Algorithm
 Bellman-Ford Algorithm

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 2


2
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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
k 1
w( p )   w(vi , vi 1 )
i 1
 Shortest path = a path of the minimum
weight
 Applications
 static/dynamic network routing
 robot motion planning
 map/route generation in traffic
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 3
3
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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.

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 4


4
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 5


5
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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 u v
2 2 Relax (u,v,G)
   
if v.d() > u.d()+G.w(u,v) then
Relax(u,v) Relax(u,v) v.setd(u.d()+G.w(u,v))
 2   2  v.setparent(u)
u v u v
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 6
6
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 7
7
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Dijkstra’s Pseudo Code


 Input: Graph G, start vertex s

Dijkstra(G,s)
01 for each vertex u  G.V()
02 u.setd(
03 u.setparent(NIL)
04 s.setd(0)
05 S // Set S is used to explain the algorithm
06 Q.init(G.V()) // Q is a priority queue ADT
07 while not Q.isEmpty()
08 u  Q.extractMin()
09 S S {u}
10 for each v  u.adjacent() do
11 Relax(u, v, G)
relaxing
12 Q.modifyKey(v) edges

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 8


8
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Dijkstra’s Example
u v
1
Dijkstra(G,s) 10  
01 for each vertex u  G.V() 9
02 u.setd( s  2 3
4 6
03 u.setparent(NIL) 7
04 s.setd(0) 5
05 S 
 2 
06 Q.init(G.V()) x y
07 while not Q.isEmpty()
08 u  Q.extractMin() u v
1
09 S S {u} 10  
10 for each v  u.adjacent() do
9
11 Relax(u, v, G) s  2 3
4 6
12 Q.modifyKey(v) 7
5
 2 
x y
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 9
9
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Dijkstra’s Example (2)


u v
1
Dijkstra(G,s) 10  
01 for each vertex u  G.V() 9
02 u.setd( s  2 3
4 6
03 u.setparent(NIL) 7
5
04 s.setd(0)
 2 
05 S 
06 Q.init(G.V()) x y
07 while not Q.isEmpty()
08 u  Q.extractMin() u v
S S {u}
1
09 10  
10 for each v  u.adjacent() do
9
11 Relax(u, v, G) s  2 3
4 6
12 Q.modifyKey(v) 7
5
 2 
x y
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 10
10
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Dijkstra’s Example (3)


u v
1
Dijkstra(G,s) 10  
01 for each vertex u  G.V() 9
02 u.setd(  2 3
4 6
03 u.setparent(NIL) 7
04 s.setd(0) 5
05 S 
 2 
06 Q.init(G.V()) x y
07 while not Q.isEmpty()
08 u  Q.extractMin() u v
S S {u}
1
09 10  
10 for each v  u.adjacent() do
9
11 Relax(u, v, G)  2 3
4 6
12 Q.modifyKey(v) 7
5
 2 
x y
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 11
11
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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- T(Decrease-Key) Total


Min)
array (V) (1) (V 2)
binary heap (lg V) (lg V) (E lg V)
Fibonacci heap (lg V) (1) (amort.) (V lgV + E)

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 12


12
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

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

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 13


13
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Bellman-Ford Algorithm

Bellman-Ford(G,s)
01 for each vertex u  G.V()
02 u.setd(
03 u.setparent(NIL)
04 s.setd(0)
05 for i  1 to |G.V()|-1 do
06 for each edge (u,v)  G.E() do
07 Relax (u,v,G)
08 for each edge (u,v)  G.E() do
09 if v.d() > u.d() + G.w(u,v) then
10 return false
11 return true

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 14


14
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Bellman-Ford Example
t 5 x t 5 x
-2 -2
6   6  
-3 -3
8  8
s  -4 7 s -4 7
2 2
7 7
 9   9 
y z y z
t 5 x t 5 x
-2 -2
6   6  
-3 -3
s  8 s  8
-4 7 -4 7
2 2
7 7
 9   9 
y z y z
Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 15
15
CE806: AAD U. & P. U. Patel Dept. OF Computer Engineering

Bellman-Ford Example
t 5 x
-2
6  
-3
s  8
-4 7
2
7
 9 
y z

 Bellman-Ford running time:


 (|V|-1)|E| + |E| = (VE)

Classified e-Material ©Copyrights Charotar Institute of Technology, Changa 16


16

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy