SlideShare a Scribd company logo
Data Structures and Algorithms
Graphs
Single-Source Shortest Paths
(Dijkstra’s Algorithm)
PLSD210(ii)
Graphs - Shortest Paths
• Application
• In a graph in which edges have costs ..
• Find the shortest path from a source to a destination
• Surprisingly ..
• While finding the shortest path from a source to one
destination,
• we can find the shortest paths to all over destinations
as well!
• Common algorithm for
single-source shortest paths
is due to Edsger Dijkstra
Dijkstra’s Algorithm - Data Structures
• For a graph,
G = ( V, E )
• Dijkstra’s algorithm keeps two sets of vertices:
S Vertices whose shortest paths have already been
determined
V-S Remainder
• Also
d Best estimates of shortest path to each vertex
p Predecessors for each vertex
Predecessor Sub-graph
• Array of vertex indices, p[j], j = 1 .. |V|
• p[j] contains the pre-decessor for node j
• j’s predecessor is in p[p[j]], and so on ....
• The edges in the pre-decessor sub-graph are
( p[j], j )
Dijkstra’s Algorithm - Operation
• Initialise d and p
• For each vertex, j, in V
• dj = 
 pj = nil
• Source distance, ds = 0
• Set S to empty
• While V-S is not empty
• Sort V-S based on d
• Add u, the closest vertex in V-S, to S
• Relax all the vertices still in V-S connected to u
Initial estimates are all 
No connections
Add s first!
Dijkstra’s Algorithm - Operation
• Initialise d and p
• For each vertex, j, in V
• dj = 
 pj = nil
• Source distance, ds = 0
• Set S to empty
• While V-S is not empty
• Sort V-S based on d
• Add u, the closest vertex in V-S, to S
• Relax all the vertices still in V-S connected to u
Initial estimates are all 
No connections
Add s first!
Dijkstra’s Algorithm - Operation
• The Relaxation process
Relax the node v
attached to node u
relax( Node u, Node v, double w[][] )
if d[v] > d[u] + w[u,v] then
d[v] := d[u] + w[u,v]
pi[v] := u
If the current best
estimate to v is
greater than the
path through u ..
Edge cost matrix
Update the
estimate to v
Make v’s predecessor
point to u
Dijkstra’s Algorithm - Full
• The Shortest Paths algorithm
Given a graph, g, and a source, s
shortest_paths( Graph g, Node s )
initialise_single_source( g, s )
S := { 0 } /* Make S empty */
Q := Vertices( g ) /* Put the vertices in a PQ */
while not Empty(Q)
u := ExtractCheapest( Q );
AddNode( S, u ); /* Add u to S */
for each vertex v in Adjacent( u )
relax( u, v, w )
Dijkstra’s Algorithm - Initialise
• The Shortest Paths algorithm
Given a graph, g,
and a source, s
shortest_paths( Graph g, Node s )
initialise_single_source( g, s )
S := { 0 } /* Make S empty */
Q := Vertices( g ) /* Put the vertices in a PQ */
while not Empty(Q)
u := ExtractCheapest( Q );
AddNode( S, u ); /* Add u to S */
for each vertex v in Adjacent( u )
relax( u, v, w )
Initialise d, p, S,
vertex Q
Dijkstra’s Algorithm - Loop
• The Shortest Paths algorithm
Given a graph, g,
and a source, s
shortest_paths( Graph g, Node s )
initialise_single_source( g, s )
S := { 0 } /* Make S empty */
Q := Vertices( g ) /* Put the vertices in a PQ */
while not Empty(Q)
u := ExtractCheapest( Q );
AddNode( S, u ); /* Add u to S */
for each vertex v in Adjacent( u )
relax( u, v, w )
Greedy!
While there are
still nodes in Q
Dijkstra’s Algorithm - Relax neighbours
• The Shortest Paths algorithm
Given a graph, g,
and a source, s
shortest_paths( Graph g, Node s )
initialise_single_source( g, s )
S := { 0 } /* Make S empty */
Q := Vertices( g ) /* Put the vertices in a PQ */
while not Empty(Q)
u := ExtractCheapest( Q );
AddNode( S, u ); /* Add u to S */
for each vertex v in Adjacent( u )
relax( u, v, w )
Greedy!
Update the
estimate of the
shortest paths to
all nodes
attached to u
Dijkstra’s Algorithm - Operation
• Initial Graph
Distance to all
nodes marked 
Source
Mark 0
Dijkstra’s Algorithm - Operation
• Initial Graph
Source
Relax vertices adjacent to
source
Dijkstra’s Algorithm - Operation
• Initial Graph
Source
Red arrows show
pre-decessors
Dijkstra’s Algorithm - Operation
Source is now in S Sort vertices and
choose closest
Dijkstra’s Algorithm - Operation
Source is now in S
Relax u because a
shorter path via x
exists
Relax y because a
shorter path via x
exists
Dijkstra’s Algorithm - Operation
Source is now in S
Change u’s
pre-decessor also
Relax y because a
shorter path via x
exists
Dijkstra’s Algorithm - Operation
S is now { s, x } Sort vertices and
choose closest
Dijkstra’s Algorithm - Operation
S is now { s, x }
Sort vertices and
choose closest
Relax v because a
shorter path via y
exists
Dijkstra’s Algorithm - Operation
S is now { s, x, y } Sort vertices and
choose closest, u
Dijkstra’s Algorithm - Operation
S is now { s, x, y, u } Finally add v
Dijkstra’s Algorithm - Operation
S is now { s, x, y, u } Pre-decessors show
shortest paths sub-graph
Dijkstra’s Algorithm - Proof
• Greedy Algorithm
• Proof by contradiction best
• Lemma 1
• Shortest paths are composed of shortest paths
• Proof
• If there was a shorter path than any sub-path, then
substitution of that path would make the whole path
shorter
Dijkstra’s Algorithm - Proof
• Denote
d(s,v) - the cost of the shortest path from s to v
• Lemma 2
• If s...uv is a shortest path from s to v,
then after u has been added to S and relax(u,v,w) called,
d[v] = d(s,v) and d[v] is not changed thereafter.
• Proof
• Follows from the fact that at all times d[v]  d(s,v)
• See Cormen (or any other text) for the details
Dijkstra’s Algorithm - Proof
• Using Lemma 2
• After running Dijkstra’s algorithm, we assert
d[v] = d(s,v) for all v
• Proof (by contradiction)
• Suppose that u is the first vertex added to S for which
d[u]  d(s,u)
• Note
• v is not s because d[s] = 0
• There must be a path s...u,
otherwise d[u] would be 
• Since there’s a path, there must be a shortest path
Dijkstra’s Algorithm - Proof
• Proof (by contradiction)
• Suppose that u is the first vertex added to S for which
d[u]  d(s,u)
• Let sxyu be the shortest path
su,
where x is in S and y is the
first outside S
• When x was added to S, d[x] = d(s,x)
• Edge xy was relaxed at that time,
so d[y] = d(s,y)
Dijkstra’s Algorithm - Proof
• Proof (by contradiction)
• Edge xy was relaxed at that time,
so d[y] = d(s,y)
 d(s,u)  d[u]
• But, when we chose u,
both u and y where in V-S,
so d[u]  d[y]
(otherwise we would have chosen y)
• Thus the inequalities must be equalities
 d[y] = d(s,y) = d(s,u) = d[u]
• And our hypothesis (d[u]  d(s,u)) is contradicted!
Dijkstra’s Algorithm - Time Complexity
• Dijkstra’s Algorithm
• Similar to MST algorithms
• Key step is sort on the edges
• Complexity is
• O( (|E|+|V|)log|V| ) or
• O( n2 log n )
for a dense graph with n = |V|

More Related Content

PPT
Dijkstra c
PPT
Dijkstra algorithm ds 57612334t4t44.ppt
PPT
Dijkstra Shortest Path Algorithm in Network.ppt
PPTX
SEMINAR ON SHORTEST PATH ALGORITHMS.pptx
PPTX
Data structures and algorithms Dijkstra’s Algorithm (1).pptx
PPT
Bellman ford algorithm
PPT
Algorithm Design and Complexity - Course 10
PDF
Shortest Path in Graph
Dijkstra c
Dijkstra algorithm ds 57612334t4t44.ppt
Dijkstra Shortest Path Algorithm in Network.ppt
SEMINAR ON SHORTEST PATH ALGORITHMS.pptx
Data structures and algorithms Dijkstra’s Algorithm (1).pptx
Bellman ford algorithm
Algorithm Design and Complexity - Course 10
Shortest Path in Graph

Similar to dijkstraC.ppt (20)

PDF
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
DOCX
Shortest Path Problem.docx
PPT
Single Source Shortest Path Algorithm.ppt
PPT
Dijkstra's algorithm for computer science
PPT
Inroduction_To_Algorithms_Lect14
PPTX
Dijkstra Searching Algorithms Shortest.pptx
PPT
Dijksatra
PDF
All pairs shortest path algorithm
PPT
Single source stortest path bellman ford and dijkstra
PPT
lecture 21
PPT
Lec-35Graph - Graph - Copy in Data Structure
PDF
Single source shortes path in dag
PPTX
Dijkstra’s algorithm
PPT
Shortest path
PPT
Unit26 shortest pathalgorithm
PDF
04 greedyalgorithmsii 2x2
PPT
Dijkstra.ppt
PPT
graph in Data Structures and Algorithm.ppt
PPTX
Unit ix graph
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
Shortest Path Problem.docx
Single Source Shortest Path Algorithm.ppt
Dijkstra's algorithm for computer science
Inroduction_To_Algorithms_Lect14
Dijkstra Searching Algorithms Shortest.pptx
Dijksatra
All pairs shortest path algorithm
Single source stortest path bellman ford and dijkstra
lecture 21
Lec-35Graph - Graph - Copy in Data Structure
Single source shortes path in dag
Dijkstra’s algorithm
Shortest path
Unit26 shortest pathalgorithm
04 greedyalgorithmsii 2x2
Dijkstra.ppt
graph in Data Structures and Algorithm.ppt
Unit ix graph
Ad

More from ManoRanjani30 (12)

PPTX
Java_Programming_Concepts_Full_P22_P60.pptx
PPT
Number_Systems _binary_octal_hex_dec.ppt
PPTX
Next_Gen_Learning_AI_Collaboration_PPT.pptx
PPTX
Next-Gen Learning AI + Collaboration in Classrooms.pptx
PPTX
introduction to visual basic unit 1.pptx
PPT
operating system Scheduling process unit 3.ppt
PPTX
os memory management unit iii memory.pptx
PPTX
operating system_processes_ unit II.pptx
PPTX
Consumers-Oriented Applicaations 1 .pptx
PPT
Network model.ppt
PPT
E-r Model.ppt
PPT
01CHAP_1.PPT
Java_Programming_Concepts_Full_P22_P60.pptx
Number_Systems _binary_octal_hex_dec.ppt
Next_Gen_Learning_AI_Collaboration_PPT.pptx
Next-Gen Learning AI + Collaboration in Classrooms.pptx
introduction to visual basic unit 1.pptx
operating system Scheduling process unit 3.ppt
os memory management unit iii memory.pptx
operating system_processes_ unit II.pptx
Consumers-Oriented Applicaations 1 .pptx
Network model.ppt
E-r Model.ppt
01CHAP_1.PPT
Ad

Recently uploaded (20)

PDF
RMMM.pdf make it easy to upload and study
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Basic Mud Logging Guide for educational purpose
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PPTX
GDM (1) (1).pptx small presentation for students
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Classroom Observation Tools for Teachers
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
Sports Quiz easy sports quiz sports quiz
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
RMMM.pdf make it easy to upload and study
2.FourierTransform-ShortQuestionswithAnswers.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Basic Mud Logging Guide for educational purpose
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
VCE English Exam - Section C Student Revision Booklet
GDM (1) (1).pptx small presentation for students
Renaissance Architecture: A Journey from Faith to Humanism
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Final Presentation General Medicine 03-08-2024.pptx
102 student loan defaulters named and shamed – Is someone you know on the list?
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Microbial diseases, their pathogenesis and prophylaxis
TR - Agricultural Crops Production NC III.pdf
Classroom Observation Tools for Teachers
Abdominal Access Techniques with Prof. Dr. R K Mishra
Sports Quiz easy sports quiz sports quiz
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...

dijkstraC.ppt

  • 1. Data Structures and Algorithms Graphs Single-Source Shortest Paths (Dijkstra’s Algorithm) PLSD210(ii)
  • 2. Graphs - Shortest Paths • Application • In a graph in which edges have costs .. • Find the shortest path from a source to a destination • Surprisingly .. • While finding the shortest path from a source to one destination, • we can find the shortest paths to all over destinations as well! • Common algorithm for single-source shortest paths is due to Edsger Dijkstra
  • 3. Dijkstra’s Algorithm - Data Structures • For a graph, G = ( V, E ) • Dijkstra’s algorithm keeps two sets of vertices: S Vertices whose shortest paths have already been determined V-S Remainder • Also d Best estimates of shortest path to each vertex p Predecessors for each vertex
  • 4. Predecessor Sub-graph • Array of vertex indices, p[j], j = 1 .. |V| • p[j] contains the pre-decessor for node j • j’s predecessor is in p[p[j]], and so on .... • The edges in the pre-decessor sub-graph are ( p[j], j )
  • 5. Dijkstra’s Algorithm - Operation • Initialise d and p • For each vertex, j, in V • dj =   pj = nil • Source distance, ds = 0 • Set S to empty • While V-S is not empty • Sort V-S based on d • Add u, the closest vertex in V-S, to S • Relax all the vertices still in V-S connected to u Initial estimates are all  No connections Add s first!
  • 6. Dijkstra’s Algorithm - Operation • Initialise d and p • For each vertex, j, in V • dj =   pj = nil • Source distance, ds = 0 • Set S to empty • While V-S is not empty • Sort V-S based on d • Add u, the closest vertex in V-S, to S • Relax all the vertices still in V-S connected to u Initial estimates are all  No connections Add s first!
  • 7. Dijkstra’s Algorithm - Operation • The Relaxation process Relax the node v attached to node u relax( Node u, Node v, double w[][] ) if d[v] > d[u] + w[u,v] then d[v] := d[u] + w[u,v] pi[v] := u If the current best estimate to v is greater than the path through u .. Edge cost matrix Update the estimate to v Make v’s predecessor point to u
  • 8. Dijkstra’s Algorithm - Full • The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w )
  • 9. Dijkstra’s Algorithm - Initialise • The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w ) Initialise d, p, S, vertex Q
  • 10. Dijkstra’s Algorithm - Loop • The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w ) Greedy! While there are still nodes in Q
  • 11. Dijkstra’s Algorithm - Relax neighbours • The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w ) Greedy! Update the estimate of the shortest paths to all nodes attached to u
  • 12. Dijkstra’s Algorithm - Operation • Initial Graph Distance to all nodes marked  Source Mark 0
  • 13. Dijkstra’s Algorithm - Operation • Initial Graph Source Relax vertices adjacent to source
  • 14. Dijkstra’s Algorithm - Operation • Initial Graph Source Red arrows show pre-decessors
  • 15. Dijkstra’s Algorithm - Operation Source is now in S Sort vertices and choose closest
  • 16. Dijkstra’s Algorithm - Operation Source is now in S Relax u because a shorter path via x exists Relax y because a shorter path via x exists
  • 17. Dijkstra’s Algorithm - Operation Source is now in S Change u’s pre-decessor also Relax y because a shorter path via x exists
  • 18. Dijkstra’s Algorithm - Operation S is now { s, x } Sort vertices and choose closest
  • 19. Dijkstra’s Algorithm - Operation S is now { s, x } Sort vertices and choose closest Relax v because a shorter path via y exists
  • 20. Dijkstra’s Algorithm - Operation S is now { s, x, y } Sort vertices and choose closest, u
  • 21. Dijkstra’s Algorithm - Operation S is now { s, x, y, u } Finally add v
  • 22. Dijkstra’s Algorithm - Operation S is now { s, x, y, u } Pre-decessors show shortest paths sub-graph
  • 23. Dijkstra’s Algorithm - Proof • Greedy Algorithm • Proof by contradiction best • Lemma 1 • Shortest paths are composed of shortest paths • Proof • If there was a shorter path than any sub-path, then substitution of that path would make the whole path shorter
  • 24. Dijkstra’s Algorithm - Proof • Denote d(s,v) - the cost of the shortest path from s to v • Lemma 2 • If s...uv is a shortest path from s to v, then after u has been added to S and relax(u,v,w) called, d[v] = d(s,v) and d[v] is not changed thereafter. • Proof • Follows from the fact that at all times d[v]  d(s,v) • See Cormen (or any other text) for the details
  • 25. Dijkstra’s Algorithm - Proof • Using Lemma 2 • After running Dijkstra’s algorithm, we assert d[v] = d(s,v) for all v • Proof (by contradiction) • Suppose that u is the first vertex added to S for which d[u]  d(s,u) • Note • v is not s because d[s] = 0 • There must be a path s...u, otherwise d[u] would be  • Since there’s a path, there must be a shortest path
  • 26. Dijkstra’s Algorithm - Proof • Proof (by contradiction) • Suppose that u is the first vertex added to S for which d[u]  d(s,u) • Let sxyu be the shortest path su, where x is in S and y is the first outside S • When x was added to S, d[x] = d(s,x) • Edge xy was relaxed at that time, so d[y] = d(s,y)
  • 27. Dijkstra’s Algorithm - Proof • Proof (by contradiction) • Edge xy was relaxed at that time, so d[y] = d(s,y)  d(s,u)  d[u] • But, when we chose u, both u and y where in V-S, so d[u]  d[y] (otherwise we would have chosen y) • Thus the inequalities must be equalities  d[y] = d(s,y) = d(s,u) = d[u] • And our hypothesis (d[u]  d(s,u)) is contradicted!
  • 28. Dijkstra’s Algorithm - Time Complexity • Dijkstra’s Algorithm • Similar to MST algorithms • Key step is sort on the edges • Complexity is • O( (|E|+|V|)log|V| ) or • O( n2 log n ) for a dense graph with n = |V|