Professional Documents
Culture Documents
Prims Greedy Strategy
Prims Greedy Strategy
6.046J/18.401J LECTURE 16
Greedy Algorithms (and Graphs) Graph representation Minimum spanning trees Optimal substructure Greedy choice Prims greedy MST algorithm Prof. Charles E. Leiserson
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.1
Graphs (review)
Definition. A directed graph (digraph) G = (V, E) is an ordered pair consisting of a set V of vertices (singular: vertex), a set E V V of edges. In an undirected graph G = (V, E), the edge set E consists of unordered pairs of vertices. In either case, we have | E | = O(V 2). Moreover, if G is connected, then | E | | V | 1, which implies that lg | E | = (lg V). (Review CLRS, Appendix B.)
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.2
Adjacency-matrix representation
The adjacency matrix of a graph G = (V, E), where V = {1, 2, , n}, is the matrix A[1 . . n, 1 . . n] given by 1 if (i, j) E, A[i, j] = 0 if (i, j) E.
November 9, 2005
L16.3
Adjacency-matrix representation
The adjacency matrix of a graph G = (V, E), where V = {1, 2, , n}, is the matrix A[1 . . n, 1 . . n] given by 1 if (i, j) E, A[i, j] = 0 if (i, j) E. 2 2 3 3 1 1 4 4 A 1 2 3 4 1 0 1 1 0 2 0 0 1 0 3 0 0 0 0 4 0 0 1 0 (V 2) storage dense representation.
L16.4
November 9, 2005
Adjacency-list representation
An adjacency list of a vertex v V is the list Adj[v] of vertices adjacent to v. Adj[1] = {2, 3} 2 1 1 2 3 3 4 4
Adj[2] = {3} Adj[3] = {} Adj[4] = {3}
November 9, 2005
L16.5
Adjacency-list representation
An adjacency list of a vertex v V is the list Adj[v] of vertices adjacent to v. Adj[1] = {2, 3} 2 1 1 2 3 4 4 3 For undirected graphs, | Adj[v] | = degree(v). For digraphs, | Adj[v] | = out-degree(v).
Adj[2] = {3} Adj[3] = {} Adj[4] = {3}
November 9, 2005
L16.6
Adjacency-list representation
An adjacency list of a vertex v V is the list Adj[v] of vertices adjacent to v. Adj[1] = {2, 3} 2 1 1 2 3 4 4 3 For undirected graphs, | Adj[v] | = degree(v). For digraphs, | Adj[v] | = out-degree(v). Handshaking Lemma: vV = 2 | E | for undirected graphs adjacency lists use (V + E) storage a sparse representation (for either type of graph).
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.7
November 9, 2005
L16.8
November 9, 2005
L16.9
Example of MST
6 5 14 3 8 7 10 12 9 15
November 9, 2005
L16.10
Example of MST
6 5 14 3 8 7 10 12 9 15
November 9, 2005
L16.11
Optimal substructure
MST T:
(Other edges of G are not shown.)
November 9, 2005
L16.12
Optimal substructure
MST T:
(Other edges of G are not shown.)
u v
November 9, 2005
L16.13
Optimal substructure
MST T:
(Other edges of G are not shown.)
u v
November 9, 2005
L16.14
Optimal substructure
MST T:
(Other edges of G are not shown.)
u T1 v
T2
Remove any edge (u, v) T. Then, T is partitioned into two subtrees T1 and T2.
November 9, 2005
L16.15
Optimal substructure
MST T:
(Other edges of G are not shown.)
u T1 v
T2
Remove any edge (u, v) T. Then, T is partitioned into two subtrees T1 and T2. Theorem. The subtree T1 is an MST of G1 = (V1, E1), the subgraph of G induced by the vertices of T1: V1 = vertices of T1, E1 = { (x, y) E : x, y V1 }. Similarly for T2.
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.16
November 9, 2005
L16.17
November 9, 2005
L16.18
November 9, 2005
L16.20
Proof of theorem
Proof. Suppose (u, v) T. Cut and paste. T: A VA u
(u, v) = least-weight edge connecting A to V A
November 9, 2005
L16.22
Proof of theorem
Proof. Suppose (u, v) T. Cut and paste. T: A VA u
(u, v) = least-weight edge connecting A to V A
November 9, 2005
L16.23
Proof of theorem
Proof. Suppose (u, v) T. Cut and paste. T: A VA u
(u, v) = least-weight edge connecting A to V A
Consider the unique simple path from u to v in T. Swap (u, v) with the first edge on this path that connects a vertex in A to a vertex in V A.
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.24
Proof of theorem
Proof. Suppose (u, v) T. Cut and paste. T : A VA u
(u, v) = least-weight edge connecting A to V A
Consider the unique simple path from u to v in T. Swap (u, v) with the first edge on this path that connects a vertex in A to a vertex in V A. A lighter-weight spanning tree than T results.
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.25
Prims algorithm
IDEA: Maintain V A as a priority queue Q. Key each vertex in Q with the weight of the leastweight edge connecting it to a vertex in A.
QV key[v] for all v V key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) DECREASE-KEY [v] u
November 9, 2005
L16.27
November 9, 2005
L16.28
November 9, 2005
L16.29
November 9, 2005
L16.30
November 9, 2005
L16.31
November 9, 2005
L16.32
November 9, 2005
L16.33
November 9, 2005
L16.34
November 9, 2005
L16.35
November 9, 2005
L16.36
November 9, 2005
L16.37
November 9, 2005
L16.38
November 9, 2005
L16.39
Analysis of Prim
QV key[v] for all v V key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) [v] u
November 9, 2005
L16.40
Analysis of Prim
(V) total QV key[v] for all v V key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) [v] u
November 9, 2005
L16.41
Analysis of Prim
(V) total QV key[v] for all v V key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) [v] u
|V | times
November 9, 2005
L16.42
Analysis of Prim
QV (V) key[v] for all v V total key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] |V | do if v Q and w(u, v) < key[v] times degree(u) times then key[v] w(u, v) [v] u
November 9, 2005
L16.43
Analysis of Prim
QV (V) key[v] for all v V total key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] |V | do if v Q and w(u, v) < key[v] times degree(u) times then key[v] w(u, v) [v] u Handshaking Lemma (E) implicit DECREASE-KEYs.
November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.44
Analysis of Prim
QV (V) key[v] for all v V total key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] |V | do if v Q and w(u, v) < key[v] times degree(u) times then key[v] w(u, v) [v] u Handshaking Lemma (E) implicit DECREASE-KEYs.
November 9, 2005
L16.46
November 9, 2005
L16.47
November 9, 2005
L16.48
November 9, 2005
L16.49
MST algorithms
Kruskals algorithm (see CLRS): Uses the disjoint-set data structure (Lecture 10). Running time = O(E lg V).
November 9, 2005
L16.51
MST algorithms
Kruskals algorithm (see CLRS): Uses the disjoint-set data structure (Lecture 10). Running time = O(E lg V). Best to date: Karger, Klein, and Tarjan [1993]. Randomized algorithm. O(V + E) expected time.
November 9, 2005
L16.52