Download presentation
Presentation is loading. Please wait.
Published byOle-Martin Simensen Modified over 5 years ago
1
Single-Source Shortest Path & Minimum Spanning Trees
Dijkstra’s, Prim’s, and Kruskal’s Algorithms
2
Single-Source Shortest Path Defined
Given G = (V, E) Source vertex s V Compute {SP} = set of shortest paths from s to all vertices in V
3
Path Weight Defined Weight of path p = {v1, v2, … vk}
Shortest-path weight from u to v
4
Determining Path Lengths
1 3 s b 5 2 4 c
5
Determining Path Lengths
3 1 3 s b 5 5 2 4 c 2
6
Determining Path Lengths
3 1 3 s b 5 5 2 4 c d[b] <= d[c] + w(c,b) 5 <= 2
7
Determining Path Lengths
d[b] > d[a] + w(a,b) 5 > 3 1 3 s b 5 5 2 4 c 2
8
Determining Path Lengths
d[b] > d[a] + w(a,b) 5 > 3 1 3 s b 5 4 2 4 c 2 Reduce
9
Path Lengths - FIN a All vertices are in S 3 1 3 s b 5 4 2 4 c 2
10
Cycles in Paths a b -4 3 -1 3 4 s 6 c d g 5 8 5 11 - -3 2 3 7 e f -
5 11 - -3 2 3 7 e f - - -6
11
Properties of Shortest Paths
Cannot contain a negative-weight cycle No need to contain 0-weight cycle No need to contain positive-weight cycle Thus contains no cycles Will contain at most V-1 edges Assumes no cycles (as stated above) Maintain predecessor information E & V
12
Shortest Paths Not Unique
x 6 3 9 3 s 4 2 1 2 7 3 5 5 11 6 y z t x t x 3 6 9 3 6 9 3 3 s 4 s 4 2 1 2 7 2 1 2 7 3 3 5 11 5 11 5 5 6 6 y y z z
13
Shortest Path Distance Is Unique
x s u z v y [z] must be either x or y, but not both This is true even if d[x] + w(x,z) = d[y] + w(y,z) establishing that if s is source, d[z] is well-defined and unique
14
Setting up the Solution
For each vertex v in V[G] Predecessor of v ([v]) = NIL Distance to v from source (d[v]) = RELAX: as we process the graph, we’ll “Improve” [v] & d[v] by “relaxing” if (d[v] > d[u] + w(u,v)) d[v] = d[u] + w(u,v) [v] = u
15
Init & Relax Initialize(G, s) for each v in V[G] d[v] = INFINITY
[v] = NULL d[s] = 0 Relax(u, v, w) if (d[v] > d[u] + w(u,v)) d[v] = d[u] + w(u,v) [v] = u
16
Dijkstra’s Algorithm (1959)
Assume G = (V, E), source s, & weight function w Also assume all edges are non-negative Dijkstra(G, w, s) Initialize(G, s) S = {} Q = V[G] while Q != {} u = Extract_Min(Q) S.Add(u) for each vertex v in u.Adjacency() Relax(u, v, w)
17
Example: Dijkstra’s t x 1 10 s 9 2 3 4 6 7 5 y 2 z
18
Example: Dijkstra’s t x 1 10 10 s 9 2 3 4 6 7 5 5 y 2 z
19
Example: Dijkstra’s t x 1 8 14 10 s 9 2 3 4 6 7 5 5 7 y 2 z
20
Example: Dijkstra’s t x 1 8 13 10 s 9 2 3 4 6 7 5 5 7 y 2 z
21
Example: Dijkstra’s t x 1 8 9 10 s 9 2 3 4 6 7 5 5 7 y 2 z
22
Dijkstra’s - FIN t x 1 8 9 10 s 9 2 3 4 6 7 5 5 7 y 2 z
23
Runtime of Dijkstra’s O(V lgV + E lgV) O(E lgV) O(V lgV + E)
If G is connected O(V lgV + E) If we use a Fibonacci heap Better if V << E (i.e. sparsely connected)
24
MST Defined
25
Minimum Spanning Tree Connect all nodes at minimum cost.
Can start anywhere? Why? One solution. i.e. There is just one minimum Two algorithms Prim’s Kruskal’s
26
A Graph 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
27
Prim's start 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
28
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
29
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
30
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
31
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
32
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
33
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
34
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
35
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
36
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
37
Prim's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
38
Prim's 5 4 4 2 5 2 5 6 6 44 5
39
The Same Graph 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
40
Kruskal's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
41
Kruskal's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
42
Kruskal's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
43
Kruskal's 5 4 9 4 2 5 12 6 8 7 2 5 8 6 8 7 9 12 6 5 11
44
Kruskal's 5 4 4 2 5 2 5 6 6 44 5
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.