CS60020: Foundations of Algorithm Design and Machine Learning Sourangshu Bhattacharya
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 = Q(lgV). (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 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson 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. 22 11 33 44 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 Q(V 2 ) storage Þ dense representation. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.4
Adjacency-list representation An adjacency list of a vertex v Î V is the list Adj[v] of vertices adjacent to v. 22 11 33 44 Adj[1] = {2, 3} Adj[2] = {3} Adj[3] = {} Adj[4] = {3} November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.5
Adjacency-list representation An adjacency list of a vertex v Î V is the list Adj[v] of vertices adjacent to v. 22 11 33 44 Adj[1] = {2, 3} Adj[2] = {3} Adj[3] = {} Adj[4] = {3} For undirected graphs, Adj[v] = degree(v). For digraphs, Adj[v] = out-degree(v). November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.6
Adjacency-list representation An adjacency list of a vertex v Î V is the list Adj[v] of vertices adjacent to v. 22 11 33 44 Adj[1] = {2, 3} Adj[2] = {3} Adj[3] = {} Adj[4] = {3} For undirected graphs, Adj[v] = degree(v). For digraphs, Adj[v] = out-degree(v). Handshaking Lemma: å vîv = 2 E for undirected graphs Þ adjacency lists use Q(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
Minimum spanning trees Input: A connected, undirected graph G = (V, E) with weight function w : E R. For simplicity, assume that all edge weights are distinct. (CLRS covers the general case.) November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.8
Minimum spanning trees Input: A connected, undirected graph G = (V, E) with weight function w : E R. For simplicity, assume that all edge weights are distinct. (CLRS covers the general case.) Output: A spanning tree T a tree that connects all vertices of minimum weight: w(t )= å w(u,v). (u,v)ît November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.9
Example of MST 6 12 5 9 14 8 7 15 3 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.10
Example of MST 6 12 5 9 14 8 7 15 3 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.11
Optimal substructure MST T: (Other edges of G are not shown.) November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.12
Optimal substructure MST T: (Other edges of G are not shown.) Remove any edge (u, v) Î T. u v November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.13
Optimal substructure MST T: (Other edges of G are not shown.) Remove any edge (u, v) Î T. u v November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.14
Optimal substructure MST T: (Other edges of G are not shown.) u T 2 T 1 Remove any edge (u, v) Î T. Then, T is partitioned into two subtrees T 1 and T 2. v November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.15
Optimal substructure MST T: (Other edges of G are not shown.) u T 2 T 1 Remove any edge (u, v) Î T. Then, T is partitioned into two subtrees T 1 and T 2. Theorem. The subtree T 1 is an MST of G 1 = (V 1, E 1 ), the subgraph of G induced by the vertices of T 1 : V 1 = vertices of T 1, E 1 = {(x, y) Î E : x, y Î V 1 }. Similarly for T 2. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.16 v
Proof of optimal substructure Proof. Cut and paste: w(t) = w(u, v) + w(t 1 ) + w(t 2 ). If T 1 were a lower-weight spanning tree than T 1 for G 1, then T = {(u, v)} È T 1 È T 2 would bea lower-weight spanning tree than T for G. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.17
Proof of optimal substructure Proof. Cut and paste: w(t) = w(u, v) + w(t 1 ) + w(t 2 ). If T 1 were a lower-weight spanning tree than T 1 for G 1, then T = {(u, v)} È T 1 È T 2 would bea lower-weight spanning tree than T for G. Do we also have overlapping subproblems? Yes. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.18
Proof of optimal substructure Proof. Cut and paste: w(t) = w(u, v) + w(t 1 ) + w(t 2 ). If T 1 were a lower-weight spanning tree than T 1 for G 1, then T = {(u, v)} È T 1 È T 2 would bea lower-weight spanning tree than T for G. Do we also have overlapping subproblems? Yes. Great, then dynamic programming may work! Yes, but MST exhibits another powerful property which leads to an even more efficient algorithm. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.19
Hallmark for greedy algorithms Greedy-choice property A locally optimal choice is globally optimal. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.20
Hallmark for greedy algorithms Greedy-choice property A locally optimal choice is globally optimal. Theorem. Let T be the MST of G = (V, E), and let A Í V. Suppose that (u, v) Î E is the least-weight edge connecting A to V A. Then, (u, v) Î T. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.21
Proof of theorem Proof. Suppose (u, v) Ï T. Cut and paste. T: v Î A Î V A u (u, v) = least-weight edge connecting A to V A November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.22
Proof of theorem Proof. Suppose (u, v) Ï T. Cut and paste. T: v Î A Î V A u (u, v) = least-weight edge connecting A to V A Consider the unique simple path from u to v in T. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.23
Proof of theorem Proof. Suppose (u, v) Ï T. Cut and paste. T: v Î A Î V A 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 : v Î A Î V A 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
Kruskal s Algorithm
Prim s 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. Q V 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) p[v] u At the end, {(v, p[v])} forms the MST. November 9, 2005 DECREASE-KEY Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.26
Example of Prim s algorithm Î A Î V A 14 6 12 5 9 7 8 00 15 3 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.27
Example of Prim s algorithm Î A Î V A 14 6 12 5 9 7 8 00 15 3 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.28
Example of Prim s algorithm Î A Î V A 14 6 12 5 7 7 8 00 9 15 15 3 10 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.29
Example of Prim s algorithm Î A Î V A 14 6 12 5 7 7 8 00 9 15 15 3 10 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.30
Example of Prim s algorithm Î A Î V A 14 6 12 12 5 5 7 7 8 00 9 15 9 15 3 10 10 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.31
Example of Prim s algorithm Î A Î V A 6 12 12 5 5 7 14 7 8 00 3 10 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.32
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 14 00 3 8 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.33
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 14 00 3 8 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.34
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 14 00 3 8 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.35
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 3 00 3 8 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.36
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 3 00 3 8 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.37
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 3 00 3 8 10 9 15 9 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.38
Example of Prim s algorithm Î A Î V A 6 6 12 5 5 7 14 7 8 3 00 3 8 10 9 9 15 15 November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.39
Analysis of Prim Q V 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) p[v] u November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.40
Analysis of Prim Q(V) total Q V 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) p[v] u November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.41
Analysis of Prim V times Q(V) total Q V 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) p[v] u November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.42
Analysis of Prim V times Q(V) total degree(u) times Q V 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) p[v] u November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.43
V times Analysis of Prim Q(V) total degree(u) times Q V 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) p[v] u Handshaking Lemma Þ Q(E) implicit DECREASE-KEY s. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.44
V times Analysis of Prim Q(V) total degree(u) times Q V 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) p[v] u Handshaking Lemma Þ Q(E) implicit DECREASE-KEY s. Time = Q(V) T EXTRACT -MIN + Q(E) T DECREASE -KEY November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.45
Analysis of Prim (continued) Time = Q(V) T EXTRACT -MIN + Q(E) T DECREASE -KEY November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.46
Analysis of Prim (continued) Time = Q(V) T EXTRACT -MIN + Q(E) T DECREASE -KEY Q T EXTRACT -MIN T DECREASE -KEY Total November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.47
Analysis of Prim (continued) Time = Q(V) T EXTRACT -MIN + Q(E) T DECREASE -KEY Q T EXTRACT -MIN T DECREASE -KEY Total array O(V) O(1) O(V 2 ) November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.48
Analysis of Prim (continued) Time = Q(V) T EXTRACT -MIN + Q(E) T DECREASE -KEY Q T EXTRACT -MIN T DECREASE -KEY Total array binary heap O(V) O(1) O(V 2 ) O(lg V) O(lg V) O(E lg V) November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.49
Analysis of Prim (continued) Time = Q(V) T EXTRACT -MIN + Q(E) T DECREASE -KEY Q T EXTRACT -MIN T DECREASE -KEY Total array binary heap Fibonacci heap O(V) O(1) O(V 2 ) O(lg V) O(lg V) amortized O(lg V) O(1) amortized O(E lgv) O(E + V lg V) worst case November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.50
MST algorithms Kruskal s algorithm (see CLRS): Uses the disjoint-set data structure (Lecture 10). Running time = O(E lgv). November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.51
MST algorithms Kruskal s algorithm (see CLRS): Uses the disjoint-set data structure (Lecture 10). Running time = O(E lgv). Best to date: Karger, Klein, and Tarjan [1993]. Randomized algorithm. O(V + E) expected time. November 9, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L16.52