SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Bellman-Ford-Moore Algorithm
Single-source shortest path algorithm
Bellman-Ford-Moore Algorithm
A.A. 2012/2013Tecniche di programmazione2
 Solution to the single-source shortest path (SSSP)
problem in graph theory
 Based on relaxation (for every vertex, relax all possible
edges)
 Does not work in presence of negative cycles
 but it is able to detect the problem
 O(V∙E)
Bellman-Ford-Moore Algorithm
A.A. 2012/2013Tecniche di programmazione3
dist[s] ← 0 (distance to source vertex is zero)
for all v ∈ V–{s}
do dist[v] ←∞ (set all other distances to infinity)
for i← 0 to |V|
for all (u, v) ∈ E
do if dist[v] > dist[u] + w(u, v) (if new shortest path found)
then d[v] ←d[u] + w(u, v) (set new value of shortest path)
(if desired, add traceback code)
for all (u, v) ∈ E (sanity check)
do if dist[v] > dist[u] + w(u, v)
then PANIC!
Dijkstra’s Algorithm
Yet another SSSP algorithm
Dijkstra’s algorithm
A.A. 2012/2013Tecniche di programmazione5
 Solution to the single-source shortest path (SSSP)
problem in graph theory
 Works on both directed and undirected graphs
 All edges must have nonnegative weights
 the algorithm would miserably fail
 Greedy
… but guarantees the optimum!
Dijkstra’s algorithm
A.A. 2012/2013Tecniche di programmazione6
dist[s] ←0 (distance to source vertex is zero)
for all v ∈ V–{s}
do dist[v] ←∞ (set all other distances to infinity)
S←∅ (S, the set of visited vertices is initially empty)
Q←V (Q, the queue initially contains all vertices)
while Q ≠∅ (while the queue is not empty)
do u ← mindistance(Q,dist) (select e  Q with the min. distance)
S←S∪{u} (add u to list of visited vertices)
for all v ∈ neighbors[u]
do if dist[v] > dist[u] + w(u, v) (if new shortest path found)
then d[v] ←d[u] + w(u, v) (set new value of shortest path)
(if desired, add traceback code)
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Dijkstra Animated Example
Why it works
A.A. 2012/2013Tecniche di programmazione17
 A formal proof would take longer than this presentation,
but we can understand how the argument works
intuitively
 Think of Djikstra’s algorithm as a water-filling algorithm
 Remember that all edge’s weights are positive
Dijkstra efficiency
A.A. 2012/2013Tecniche di programmazione18
 The simplest implementation is:
O(𝐸 + 𝑉2)
 But it can be implemented more efficently:
O(𝐸 + 𝑉 ∙ log 𝑉)
Floyd–Warshall: O(V3)
Bellman-Ford-Moore : O(V∙E)
Applications
A.A. 2012/2013Tecniche di programmazione19
 Dijkstra’s algorithm calculates the shortest path to every
vertex from vertex s (SSSP)
 It is about as computationally expensive to calculate the
shortest path from vertex u to every vertex using
Dijkstra’s as it is to calculate the shortest path to some
particular vertex t
 Therefore, anytime we want to know the optimal path to
some other vertex t from a determined origin s, we can
use Dijkstra’s algorithm (and stop as soon t exit from Q)
Applications
A.A. 2012/2013Tecniche di programmazione20
 Traffic Information Systems are most prominent use
 Mapping (Map Quest, Google Maps)
 Routing Systems
21
Dijkstra's Shortest Path Algorithm
 Find shortest path from s to t
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
s
3
t
2
6
7
4
5
22
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6







0
distance label
S = { }
Q = { s, 2, 3, 4, 5, 6, 7, t }
s
3
t
2
6
7
4
5
23
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6







0
distance label
S = { }
Q = { s, 2, 3, 4, 5, 6, 7, t }
delmin
24
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
distance label
S = { s }
Q = { 2, 3, 4, 5, 6, 7, t }
decrease key
X

X
X
s
3
t
2
6
7
4
5
25
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
distance label
S = { s }
Q = { 2, 3, 4, 5, 6, 7, t }
X

X
X
delmin
s
3
t
2
6
7
4
5
26
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2 }
Q = { 3, 4, 5, 6, 7, t }
X

X
X
s
3
t
2
6
7
4
5
27
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2 }
Q = { 3, 4, 5, 6, 7, t }
X

X
X
decrease key
X 33
s
3
t
2
6
7
4
5
28
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2 }
Q = { 3, 4, 5, 6, 7, t }
X

X
X
X 33
delmin
s
3
t
2
6
7
4
5
29
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2, 6 }
Q = { 3, 4, 5, 7, t }
X

X
X
X 33
44
X
X
32
s
3
t
2
6
7
4
5
30
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 6 }
Q = { 3, 4, 5, 7, t }
X

X
X
44
X
delmin
X 33X
32
s
3
t
2
6
7
4
5
31
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 6, 7 }
Q = { 3, 4, 5, t }
X

X
X
44
X
35X
59 X
24
X 33X
32
s
3
t
2
6
7
4
5
32
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 6, 7 }
Q = { 3, 4, 5, t }
X

X
X
44
X
35X
59 X
delmin
X 33X
32
s
3
t
2
6
7
4
5
33
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 6, 7 }
Q = { 4, 5, t }
X

X
X
44
X
35X
59 XX51
X 34
X 33X
32
s
3
t
2
6
7
4
5
34
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 6, 7 }
Q = { 4, 5, t }
X

X
X
44
X
35X
59 XX51
X 34
delmin
X 33X
32
24
s
3
t
2
6
7
4
5
35
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 5, 6, 7 }
Q = { 4, t }
X

X
X
44
X
35X
59 XX51
X 34
24
X50
X45
X 33X
32
s
3
t
2
6
7
4
5
36
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 5, 6, 7 }
Q = { 4, t }
X

X
X
44
X
35X
59 XX51
X 34
24
X50
X45
delmin
X 33X
32
s
3
t
2
6
7
4
5
37
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7 }
Q = { t }
X

X
X
44
X
35X
59 XX51
X 34
24
X50
X45
X 33X
32
s
3
t
2
6
7
4
5
38
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7 }
Q = { t }
X

X
X
44
X
35X
59 XX51
X 34
X50
X45
delmin
X 33X
32
24
s
3
t
2
6
7
4
5
39
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7, t }
Q = { }
X

X
X
44
X
35X
59 XX51
X 34
X50
X45
X 33X
32
s
3
t
2
6
7
4
5
40
Dijkstra's Shortest Path Algorithm
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7, t }
Q = { }
X

X
X
44
X
35X
59 XX51
X 34
X50
X45
X 33X
32
s
3
t
2
6
7
4
5
Shortest Paths wrap-up
A.A. 2012/2013Tecniche di programmazione41
Algorithm Problem Efficiency Limitation
Floyd-Warshall AP O(𝑉3
) No negative cycles
Bellman–Ford SS O(𝑉 ∙ 𝐸) No negative cycles
Repeated- Bellman-Ford AP O(𝑉2
∙ 𝐸) No negative cycles
Dijkstra SS O(𝐸 + 𝑉 ∙ log 𝑉) No negative edges
Repeated Dijkstra AP O(𝑉 ∙ 𝐸 + 𝑉2 ∙ log 𝑉) No negative edges
JGraphT
A.A. 2012/2013Tecniche di programmazione42
public class FloydWarshallShortestPaths<V,E>
public class BellmanFordShortestPath<V,E>
public class DijkstraShortestPath<V,E>
// APSP
List<GraphPath<V,E>> getShortestPaths(V v)
GraphPath<V,E> getShortestPath(V a, V b)
// SSSPs
GraphPath<V,E> getPath()
Licenza d’uso
A.A. 2012/2013Tecniche di programmazione43
 Queste diapositive sono distribuite con licenza Creative Commons
“Attribuzione - Non commerciale - Condividi allo stesso modo (CC
BY-NC-SA)”
 Sei libero:
 di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico,
rappresentare, eseguire e recitare quest'opera
 di modificare quest'opera
 Alle seguenti condizioni:
 Attribuzione — Devi attribuire la paternità dell'opera agli autori
originali e in modo tale da non suggerire che essi avallino te o il modo in
cui tu usi l'opera.
 Non commerciale — Non puoi usare quest'opera per fini
commerciali.
 Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se
la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una
licenza identica o equivalente a questa.
 http://creativecommons.org/licenses/by-nc-sa/3.0/

Weitere ähnliche Inhalte

Was ist angesagt?

Travelling salesman dynamic programming
Travelling salesman dynamic programmingTravelling salesman dynamic programming
Travelling salesman dynamic programming
maharajdey
 

Was ist angesagt? (20)

Ford Fulkerson Algorithm
Ford Fulkerson AlgorithmFord Fulkerson Algorithm
Ford Fulkerson Algorithm
 
Minimum spanning Tree
Minimum spanning TreeMinimum spanning Tree
Minimum spanning Tree
 
Algorithms Lecture 7: Graph Algorithms
Algorithms Lecture 7: Graph AlgorithmsAlgorithms Lecture 7: Graph Algorithms
Algorithms Lecture 7: Graph Algorithms
 
Tsp branch and-bound
Tsp branch and-boundTsp branch and-bound
Tsp branch and-bound
 
Bellman Ford's Algorithm
Bellman Ford's AlgorithmBellman Ford's Algorithm
Bellman Ford's Algorithm
 
PRIM'S ALGORITHM
PRIM'S ALGORITHMPRIM'S ALGORITHM
PRIM'S ALGORITHM
 
Minimum spanning tree
Minimum spanning treeMinimum spanning tree
Minimum spanning tree
 
5.3 dynamic programming
5.3 dynamic programming5.3 dynamic programming
5.3 dynamic programming
 
Bellman ford algorithm
Bellman ford algorithmBellman ford algorithm
Bellman ford algorithm
 
Travelling salesman dynamic programming
Travelling salesman dynamic programmingTravelling salesman dynamic programming
Travelling salesman dynamic programming
 
The Floyd–Warshall algorithm
The Floyd–Warshall algorithmThe Floyd–Warshall algorithm
The Floyd–Warshall algorithm
 
Matrix chain multiplication
Matrix chain multiplicationMatrix chain multiplication
Matrix chain multiplication
 
Graph mining ppt
Graph mining pptGraph mining ppt
Graph mining ppt
 
Prims & kruskal algorithms
Prims & kruskal algorithmsPrims & kruskal algorithms
Prims & kruskal algorithms
 
Algorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IAlgorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms I
 
Asymptotic Notation and Complexity
Asymptotic Notation and ComplexityAsymptotic Notation and Complexity
Asymptotic Notation and Complexity
 
Longest Common Subsequence
Longest Common SubsequenceLongest Common Subsequence
Longest Common Subsequence
 
Dynamic programming - fundamentals review
Dynamic programming - fundamentals reviewDynamic programming - fundamentals review
Dynamic programming - fundamentals review
 
Ford Fulkerson Algorithm
Ford Fulkerson AlgorithmFord Fulkerson Algorithm
Ford Fulkerson Algorithm
 
Graph algorithms
Graph algorithmsGraph algorithms
Graph algorithms
 

Ähnlich wie Bellman-Ford-Moore Algorithm and Dijkstra’s Algorithm

Dijkstra’s algorithm
Dijkstra’s algorithmDijkstra’s algorithm
Dijkstra’s algorithm
faisal2204
 
All pairs shortest path algorithm
All pairs shortest path algorithmAll pairs shortest path algorithm
All pairs shortest path algorithm
Srikrishnan Suresh
 
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
DKTaxation
 
Session 13 - Single Source Shortest Path Method.pptx
Session 13 - Single Source Shortest Path Method.pptxSession 13 - Single Source Shortest Path Method.pptx
Session 13 - Single Source Shortest Path Method.pptx
SATHWIKCHAKRI
 
Graphs > Discrete structures , Data Structures & Algorithums
Graphs > Discrete structures , Data Structures & AlgorithumsGraphs > Discrete structures , Data Structures & Algorithums
Graphs > Discrete structures , Data Structures & Algorithums
Ain-ul-Moiz Khawaja
 

Ähnlich wie Bellman-Ford-Moore Algorithm and Dijkstra’s Algorithm (20)

Dijkstra’s algorithm
Dijkstra’s algorithmDijkstra’s algorithm
Dijkstra’s algorithm
 
2.3 shortest path dijkstra’s
2.3 shortest path dijkstra’s 2.3 shortest path dijkstra’s
2.3 shortest path dijkstra’s
 
Jaimin chp-5 - network layer- 2011 batch
Jaimin   chp-5 - network layer- 2011 batchJaimin   chp-5 - network layer- 2011 batch
Jaimin chp-5 - network layer- 2011 batch
 
dijkstras example.ppt
dijkstras example.pptdijkstras example.ppt
dijkstras example.ppt
 
2.6 all pairsshortestpath
2.6 all pairsshortestpath2.6 all pairsshortestpath
2.6 all pairsshortestpath
 
Randomized algorithms all pairs shortest path
Randomized algorithms  all pairs shortest pathRandomized algorithms  all pairs shortest path
Randomized algorithms all pairs shortest path
 
All pairs shortest path algorithm
All pairs shortest path algorithmAll pairs shortest path algorithm
All pairs shortest path algorithm
 
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
01-05-2023, SOL_DU_MBAFT_6202_Dijkstra’s Algorithm Dated 1st May 23.pdf
 
04 greedyalgorithmsii 2x2
04 greedyalgorithmsii 2x204 greedyalgorithmsii 2x2
04 greedyalgorithmsii 2x2
 
Single sourceshortestpath by emad
Single sourceshortestpath by emadSingle sourceshortestpath by emad
Single sourceshortestpath by emad
 
04 greedyalgorithmsii
04 greedyalgorithmsii04 greedyalgorithmsii
04 greedyalgorithmsii
 
Design and Analysis of Algorithm -Shortest paths problem
Design and Analysis of Algorithm -Shortest paths problemDesign and Analysis of Algorithm -Shortest paths problem
Design and Analysis of Algorithm -Shortest paths problem
 
Shortest Path Problem.docx
Shortest Path Problem.docxShortest Path Problem.docx
Shortest Path Problem.docx
 
module4_dynamic programming_2022.pdf
module4_dynamic programming_2022.pdfmodule4_dynamic programming_2022.pdf
module4_dynamic programming_2022.pdf
 
Lecture#9
Lecture#9Lecture#9
Lecture#9
 
12_Graph.pptx
12_Graph.pptx12_Graph.pptx
12_Graph.pptx
 
Dijksatra
DijksatraDijksatra
Dijksatra
 
Session 13 - Single Source Shortest Path Method.pptx
Session 13 - Single Source Shortest Path Method.pptxSession 13 - Single Source Shortest Path Method.pptx
Session 13 - Single Source Shortest Path Method.pptx
 
DAA_Presentation - Copy.pptx
DAA_Presentation - Copy.pptxDAA_Presentation - Copy.pptx
DAA_Presentation - Copy.pptx
 
Graphs > Discrete structures , Data Structures & Algorithums
Graphs > Discrete structures , Data Structures & AlgorithumsGraphs > Discrete structures , Data Structures & Algorithums
Graphs > Discrete structures , Data Structures & Algorithums
 

Kürzlich hochgeladen

Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
negromaestrong
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Kürzlich hochgeladen (20)

Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptx
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Magic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptxMagic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptx
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 

Bellman-Ford-Moore Algorithm and Dijkstra’s Algorithm

  • 2. Bellman-Ford-Moore Algorithm A.A. 2012/2013Tecniche di programmazione2  Solution to the single-source shortest path (SSSP) problem in graph theory  Based on relaxation (for every vertex, relax all possible edges)  Does not work in presence of negative cycles  but it is able to detect the problem  O(V∙E)
  • 3. Bellman-Ford-Moore Algorithm A.A. 2012/2013Tecniche di programmazione3 dist[s] ← 0 (distance to source vertex is zero) for all v ∈ V–{s} do dist[v] ←∞ (set all other distances to infinity) for i← 0 to |V| for all (u, v) ∈ E do if dist[v] > dist[u] + w(u, v) (if new shortest path found) then d[v] ←d[u] + w(u, v) (set new value of shortest path) (if desired, add traceback code) for all (u, v) ∈ E (sanity check) do if dist[v] > dist[u] + w(u, v) then PANIC!
  • 5. Dijkstra’s algorithm A.A. 2012/2013Tecniche di programmazione5  Solution to the single-source shortest path (SSSP) problem in graph theory  Works on both directed and undirected graphs  All edges must have nonnegative weights  the algorithm would miserably fail  Greedy … but guarantees the optimum!
  • 6. Dijkstra’s algorithm A.A. 2012/2013Tecniche di programmazione6 dist[s] ←0 (distance to source vertex is zero) for all v ∈ V–{s} do dist[v] ←∞ (set all other distances to infinity) S←∅ (S, the set of visited vertices is initially empty) Q←V (Q, the queue initially contains all vertices) while Q ≠∅ (while the queue is not empty) do u ← mindistance(Q,dist) (select e  Q with the min. distance) S←S∪{u} (add u to list of visited vertices) for all v ∈ neighbors[u] do if dist[v] > dist[u] + w(u, v) (if new shortest path found) then d[v] ←d[u] + w(u, v) (set new value of shortest path) (if desired, add traceback code)
  • 17. Why it works A.A. 2012/2013Tecniche di programmazione17  A formal proof would take longer than this presentation, but we can understand how the argument works intuitively  Think of Djikstra’s algorithm as a water-filling algorithm  Remember that all edge’s weights are positive
  • 18. Dijkstra efficiency A.A. 2012/2013Tecniche di programmazione18  The simplest implementation is: O(𝐸 + 𝑉2)  But it can be implemented more efficently: O(𝐸 + 𝑉 ∙ log 𝑉) Floyd–Warshall: O(V3) Bellman-Ford-Moore : O(V∙E)
  • 19. Applications A.A. 2012/2013Tecniche di programmazione19  Dijkstra’s algorithm calculates the shortest path to every vertex from vertex s (SSSP)  It is about as computationally expensive to calculate the shortest path from vertex u to every vertex using Dijkstra’s as it is to calculate the shortest path to some particular vertex t  Therefore, anytime we want to know the optimal path to some other vertex t from a determined origin s, we can use Dijkstra’s algorithm (and stop as soon t exit from Q)
  • 20. Applications A.A. 2012/2013Tecniche di programmazione20  Traffic Information Systems are most prominent use  Mapping (Map Quest, Google Maps)  Routing Systems
  • 21. 21 Dijkstra's Shortest Path Algorithm  Find shortest path from s to t s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 s 3 t 2 6 7 4 5
  • 22. 22 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6        0 distance label S = { } Q = { s, 2, 3, 4, 5, 6, 7, t } s 3 t 2 6 7 4 5
  • 23. 23 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6        0 distance label S = { } Q = { s, 2, 3, 4, 5, 6, 7, t } delmin
  • 24. 24 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 distance label S = { s } Q = { 2, 3, 4, 5, 6, 7, t } decrease key X  X X s 3 t 2 6 7 4 5
  • 25. 25 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 distance label S = { s } Q = { 2, 3, 4, 5, 6, 7, t } X  X X delmin s 3 t 2 6 7 4 5
  • 26. 26 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2 } Q = { 3, 4, 5, 6, 7, t } X  X X s 3 t 2 6 7 4 5
  • 27. 27 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2 } Q = { 3, 4, 5, 6, 7, t } X  X X decrease key X 33 s 3 t 2 6 7 4 5
  • 28. 28 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2 } Q = { 3, 4, 5, 6, 7, t } X  X X X 33 delmin s 3 t 2 6 7 4 5
  • 29. 29 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2, 6 } Q = { 3, 4, 5, 7, t } X  X X X 33 44 X X 32 s 3 t 2 6 7 4 5
  • 30. 30 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 6 } Q = { 3, 4, 5, 7, t } X  X X 44 X delmin X 33X 32 s 3 t 2 6 7 4 5
  • 31. 31 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 6, 7 } Q = { 3, 4, 5, t } X  X X 44 X 35X 59 X 24 X 33X 32 s 3 t 2 6 7 4 5
  • 32. 32 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 6, 7 } Q = { 3, 4, 5, t } X  X X 44 X 35X 59 X delmin X 33X 32 s 3 t 2 6 7 4 5
  • 33. 33 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 6, 7 } Q = { 4, 5, t } X  X X 44 X 35X 59 XX51 X 34 X 33X 32 s 3 t 2 6 7 4 5
  • 34. 34 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 6, 7 } Q = { 4, 5, t } X  X X 44 X 35X 59 XX51 X 34 delmin X 33X 32 24 s 3 t 2 6 7 4 5
  • 35. 35 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 5, 6, 7 } Q = { 4, t } X  X X 44 X 35X 59 XX51 X 34 24 X50 X45 X 33X 32 s 3 t 2 6 7 4 5
  • 36. 36 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 5, 6, 7 } Q = { 4, t } X  X X 44 X 35X 59 XX51 X 34 24 X50 X45 delmin X 33X 32 s 3 t 2 6 7 4 5
  • 37. 37 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7 } Q = { t } X  X X 44 X 35X 59 XX51 X 34 24 X50 X45 X 33X 32 s 3 t 2 6 7 4 5
  • 38. 38 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7 } Q = { t } X  X X 44 X 35X 59 XX51 X 34 X50 X45 delmin X 33X 32 24 s 3 t 2 6 7 4 5
  • 39. 39 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7, t } Q = { } X  X X 44 X 35X 59 XX51 X 34 X50 X45 X 33X 32 s 3 t 2 6 7 4 5
  • 40. 40 Dijkstra's Shortest Path Algorithm s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7, t } Q = { } X  X X 44 X 35X 59 XX51 X 34 X50 X45 X 33X 32 s 3 t 2 6 7 4 5
  • 41. Shortest Paths wrap-up A.A. 2012/2013Tecniche di programmazione41 Algorithm Problem Efficiency Limitation Floyd-Warshall AP O(𝑉3 ) No negative cycles Bellman–Ford SS O(𝑉 ∙ 𝐸) No negative cycles Repeated- Bellman-Ford AP O(𝑉2 ∙ 𝐸) No negative cycles Dijkstra SS O(𝐸 + 𝑉 ∙ log 𝑉) No negative edges Repeated Dijkstra AP O(𝑉 ∙ 𝐸 + 𝑉2 ∙ log 𝑉) No negative edges
  • 42. JGraphT A.A. 2012/2013Tecniche di programmazione42 public class FloydWarshallShortestPaths<V,E> public class BellmanFordShortestPath<V,E> public class DijkstraShortestPath<V,E> // APSP List<GraphPath<V,E>> getShortestPaths(V v) GraphPath<V,E> getShortestPath(V a, V b) // SSSPs GraphPath<V,E> getPath()
  • 43. Licenza d’uso A.A. 2012/2013Tecniche di programmazione43  Queste diapositive sono distribuite con licenza Creative Commons “Attribuzione - Non commerciale - Condividi allo stesso modo (CC BY-NC-SA)”  Sei libero:  di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera  di modificare quest'opera  Alle seguenti condizioni:  Attribuzione — Devi attribuire la paternità dell'opera agli autori originali e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera.  Non commerciale — Non puoi usare quest'opera per fini commerciali.  Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa.  http://creativecommons.org/licenses/by-nc-sa/3.0/