dynamic programming
play

Dynamic Programming Lecture 6 September 12, 2013 Sariel (UIUC) - PowerPoint PPT Presentation

CS 573: Algorithms, Fall 2013 Dynamic Programming Lecture 6 September 12, 2013 Sariel (UIUC) CS573 1 Fall 2013 1 / 72 Part I . Maximum Weighted Independent Set in Trees . Sariel (UIUC) CS573 2 Fall 2013 2 / 72 Maximum Weight


  1. Dominating set . Definition . G = ( V , E ) . The set X ⊆ V is a dominating set , if any vertex v ∈ V is either in X or is adjacent to a vertex in X . . . r 10 Problem . Given weights on 5 8 a b vertices, compute the minimum weight 11 e g dominating set in G . c 4 d f . 4 9 3 Dominating Set is 8 NP-Hard ! 2 j i h 7 Sariel (UIUC) CS573 11 Fall 2013 11 / 72

  2. Part II . DAGs and Dynamic Programming . Sariel (UIUC) CS573 12 Fall 2013 12 / 72

  3. Recursion and DAG s . Observation . Let A be a recursive algorithm for problem Π . For each instance I of Π there is an associated DAG G ( I ) . . . . Create directed graph G ( I ) as follows... 1 . . For each sub-problem in the execution of A on I create a node. 2 . . If sub-problem v depends on or recursively calls sub-problem u 3 add directed edge ( u , v ) to graph. . . G ( I ) is a DAG . Why? If G ( I ) has a cycle then A will not 4 terminate on I . Sariel (UIUC) CS573 13 Fall 2013 13 / 72

  4. Recursion and DAG s . Observation . Let A be a recursive algorithm for problem Π . For each instance I of Π there is an associated DAG G ( I ) . . . . Create directed graph G ( I ) as follows... 1 . . For each sub-problem in the execution of A on I create a node. 2 . . If sub-problem v depends on or recursively calls sub-problem u 3 add directed edge ( u , v ) to graph. . . G ( I ) is a DAG . Why? If G ( I ) has a cycle then A will not 4 terminate on I . Sariel (UIUC) CS573 13 Fall 2013 13 / 72

  5. Iterative Algorithm for... Dynamic Programming and DAG s . Observation . An iterative algorithm B obtained from a recursive algorithm A for a problem Π does the following: For each instance I of Π , it computes a topological sort of G ( I ) and evaluates sub-problems according to the topological ordering. . . . Sometimes the DAG G ( I ) can be obtained directly without 1 thinking about the recursive algorithm A . . In some cases (not all) the computation of an optimal solution 2 reduces to a shortest/longest path in DAG G ( I ) . . Topological sort based shortest/longest path computation is 3 dynamic programming! Sariel (UIUC) CS573 14 Fall 2013 14 / 72

  6. A quick reminder... A Recursive Algorithm for weighted interval scheduling Let O i be value of an optimal schedule for the first i jobs. Schedule ( n ): if n = 0 then return 0 if n = 1 then return w ( v 1 ) O p ( n ) ← Schedule ( p ( n ) ) O n − 1 ← Schedule ( n − 1 ) if ( O p ( n ) + w ( v n ) < O n − 1 ) then O n = O n − 1 else O n = O p ( n ) + w ( v n ) return O n Sariel (UIUC) CS573 15 Fall 2013 15 / 72

  7. Weighted Interval Scheduling via... Longest Path in a DAG Given intervals, create a DAG as follows: . . Create one node for each interval, plus a dummy sink node 0 for 1 interval 0 , plus a dummy source node s . . . For each interval i add edge ( i , p ( i )) of the length/weight of 2 v i . . . Add an edge from s to n of length 0 . 3 . . For each interval i add edge ( i , i − 1) of length 0 . 4 Sariel (UIUC) CS573 16 Fall 2013 16 / 72

  8. Example 70 3 30 80 4 1 5 2 10 20 p (5) = 2, p (4) = 1, p (3) = 1, p (2) = 0, p (1) = 0 4 3 70 80 30 0 1 s 2 20 5 10 Sariel (UIUC) CS573 17 Fall 2013 17 / 72

  9. Relating Optimum Solution Given interval problem instance I let G ( I ) denote the DAG constructed as described. . Claim . Optimum solution to weighted interval scheduling instance I is given by longest path from s to 0 in G ( I ) . . Assuming claim is true, . If I has n intervals, DAG G ( I ) has n + 2 nodes and O ( n ) 1 edges. Creating G ( I ) takes O ( n log n ) time: to find p ( i ) for each i . How? . . Longest path can be computed in O ( n ) time — recall 2 O ( m + n ) algorithm for shortest/longest paths in DAG s. Sariel (UIUC) CS573 18 Fall 2013 18 / 72

  10. Relating Optimum Solution Given interval problem instance I let G ( I ) denote the DAG constructed as described. . Claim . Optimum solution to weighted interval scheduling instance I is given by longest path from s to 0 in G ( I ) . . Assuming claim is true, . . If I has n intervals, DAG G ( I ) has n + 2 nodes and O ( n ) 1 edges. Creating G ( I ) takes O ( n log n ) time: to find p ( i ) for each i . How? . . Longest path can be computed in O ( n ) time — recall 2 O ( m + n ) algorithm for shortest/longest paths in DAG s. Sariel (UIUC) CS573 18 Fall 2013 18 / 72

  11. DAG for Longest Increasing Sequence Given sequence a 1 , a 2 , . . . , a n create DAG as follows: . . add sentinel a 0 to sequence where a 0 is less than smallest 1 element in sequence . . for each i there is a node v i 2 . . if i < j and a i < a j add an edge ( v i , v j ) 3 . . find longest path from v 0 4 6 5 7 1 3 2 8 a 0 Sariel (UIUC) CS573 19 Fall 2013 19 / 72

  12. DAG for Longest Increasing Sequence Given sequence a 1 , a 2 , . . . , a n create DAG as follows: . . add sentinel a 0 to sequence where a 0 is less than smallest 1 element in sequence . . for each i there is a node v i 2 . . if i < j and a i < a j add an edge ( v i , v j ) 3 . . find longest path from v 0 4 6 5 7 1 3 2 8 a 0 Sariel (UIUC) CS573 19 Fall 2013 19 / 72

  13. Part III . . Edit Distance and Sequence Alignment Sariel (UIUC) CS573 20 Fall 2013 20 / 72

  14. Spell Checking Problem Given a string “exponen” that is not in the dictionary, how should a spell checker suggest a nearby string? What does nearness mean? Question: Given two strings x 1 x 2 . . . x n and y 1 y 2 . . . y m what is a distance between them? Edit Distance: minimum number of “edits” to transform x into y . Sariel (UIUC) CS573 21 Fall 2013 21 / 72

  15. Spell Checking Problem Given a string “exponen” that is not in the dictionary, how should a spell checker suggest a nearby string? What does nearness mean? Question: Given two strings x 1 x 2 . . . x n and y 1 y 2 . . . y m what is a distance between them? Edit Distance: minimum number of “edits” to transform x into y . Sariel (UIUC) CS573 21 Fall 2013 21 / 72

  16. Spell Checking Problem Given a string “exponen” that is not in the dictionary, how should a spell checker suggest a nearby string? What does nearness mean? Question: Given two strings x 1 x 2 . . . x n and y 1 y 2 . . . y m what is a distance between them? Edit Distance: minimum number of “edits” to transform x into y . Sariel (UIUC) CS573 21 Fall 2013 21 / 72

  17. Edit Distance . Definition . Edit distance between two words X and Y is the number of letter insertions, letter deletions and letter substitutions required to obtain . Y from X . . Example . The edit distance between FOOD and MONEY is at most 4 : FOOD → MOOD → MONOD → MONED → MONEY . Sariel (UIUC) CS573 22 Fall 2013 22 / 72

  18. Edit Distance: Alternate View . Alignment . Place words one on top of the other, with gaps in the first word indicating insertions, and gaps in the second word indicating deletions. F O O D M O N E Y Formally, an alignment is a set M of pairs ( i , j ) such that each index appears at most once, and there is no “crossing”: i < i ′ and i is matched to j implies i ′ is matched to j ′ > j . In the above example, this is M = { (1 , 1) , (2 , 2) , (3 , 3) , (4 , 5) } . Cost of an alignment is the number of mismatched columns plus number of unmatched indices in both strings. . Sariel (UIUC) CS573 23 Fall 2013 23 / 72

  19. Edit Distance: Alternate View . Alignment . Place words one on top of the other, with gaps in the first word indicating insertions, and gaps in the second word indicating deletions. F O O D M O N E Y Formally, an alignment is a set M of pairs ( i , j ) such that each index appears at most once, and there is no “crossing”: i < i ′ and i is matched to j implies i ′ is matched to j ′ > j . In the above example, this is M = { (1 , 1) , (2 , 2) , (3 , 3) , (4 , 5) } . Cost of an alignment is the number of mismatched columns plus number of unmatched indices in both strings. . Sariel (UIUC) CS573 23 Fall 2013 23 / 72

  20. Edit Distance: Alternate View . Alignment . Place words one on top of the other, with gaps in the first word indicating insertions, and gaps in the second word indicating deletions. F O O D M O N E Y Formally, an alignment is a set M of pairs ( i , j ) such that each index appears at most once, and there is no “crossing”: i < i ′ and i is matched to j implies i ′ is matched to j ′ > j . In the above example, this is M = { (1 , 1) , (2 , 2) , (3 , 3) , (4 , 5) } . Cost of an alignment is the number of mismatched columns plus number of unmatched indices in both strings. . Sariel (UIUC) CS573 23 Fall 2013 23 / 72

  21. Edit Distance Problem . Problem . Given two words, find the edit distance between them, i.e., an alignment of smallest cost. . Sariel (UIUC) CS573 24 Fall 2013 24 / 72

  22. Applications . . Spell-checkers and Dictionaries 1 . . Unix diff 2 . . DNA sequence alignment . . . but, we need a new metric 3 Sariel (UIUC) CS573 25 Fall 2013 25 / 72

  23. Similarity Metric . Definition . For two strings X and Y , the cost of alignment M is . . [Gap penalty] For each gap in the alignment, we incur a cost δ . 1 . . [Mismatch cost] For each pair p and q that have been matched 2 in M , we incur cost α pq ; typically α pp = 0 . Edit distance is special case when δ = α pq = 1 . . Sariel (UIUC) CS573 26 Fall 2013 26 / 72

  24. Similarity Metric . Definition . For two strings X and Y , the cost of alignment M is . . [Gap penalty] For each gap in the alignment, we incur a cost δ . 1 . . [Mismatch cost] For each pair p and q that have been matched 2 in M , we incur cost α pq ; typically α pp = 0 . Edit distance is special case when δ = α pq = 1 . . Sariel (UIUC) CS573 26 Fall 2013 26 / 72

  25. An Example . Example . o c u r r a n c e o c c u r r e n c e Cost = δ + α ae Alternative: o c u r r a n c e o c c u r r e n c e Cost = 3 δ Or a really stupid solution (delete string, insert other string): o c u r r a n c e o c c u r r e n c e . Cost = 19 δ . Sariel (UIUC) CS573 27 Fall 2013 27 / 72

  26. Sequence Alignment Input Given two words X and Y , and gap penalty δ and mismatch costs α pq Goal Find alignment of minimum cost Sariel (UIUC) CS573 28 Fall 2013 28 / 72

  27. Edit distance Basic observation Let X = α x and Y = β y α, β : strings. x and y single characters. Think about optimal edit distance between X and Y as alignment, and consider last column of alignment of the two strings: α α α x x x or or β β y β y y . Observation . Prefixes must have optimal alignment! . Sariel (UIUC) CS573 29 Fall 2013 29 / 72

  28. Problem Structure . Observation . Let X = x 1 x 2 · · · x m and Y = y 1 y 2 · · · y n . If ( m , n ) are not matched then either the m th position of X remains unmatched or the n th position of Y remains unmatched. . . . Case x m and y n are matched. 1 . . . Pay mismatch cost α x m y n plus cost of aligning strings 1 x 1 · · · x m − 1 and y 1 · · · y n − 1 . . Case x m is unmatched. 2 . . . Pay gap penalty plus cost of aligning x 1 · · · x m − 1 and y 1 · · · y n 1 . . Case y n is unmatched. 3 . . . Pay gap penalty plus cost of aligning x 1 · · · x m and y 1 · · · y n − 1 1 Sariel (UIUC) CS573 30 Fall 2013 30 / 72

  29. Subproblems and Recurrence . Optimal Costs . Let Opt( i , j ) be optimal cost of aligning x 1 · · · x i and y 1 · · · y j . Then  α x i y j + Opt( i − 1 , j − 1) ,    Opt( i , j ) = min δ + Opt( i − 1 , j ) ,   δ + Opt( i , j − 1)  Base Cases: Opt( i , 0) = δ · i and Opt(0 , j ) = δ · j . Sariel (UIUC) CS573 31 Fall 2013 31 / 72

  30. Subproblems and Recurrence . Optimal Costs . Let Opt( i , j ) be optimal cost of aligning x 1 · · · x i and y 1 · · · y j . Then  α x i y j + Opt( i − 1 , j − 1) ,    Opt( i , j ) = min δ + Opt( i − 1 , j ) ,   δ + Opt( i , j − 1)  Base Cases: Opt( i , 0) = δ · i and Opt(0 , j ) = δ · j . Sariel (UIUC) CS573 31 Fall 2013 31 / 72

  31. Dynamic Programming Solution for all i do M [ i , 0] = i δ for all j do M [0 , j ] = j δ for i = 1 to m do for j = 1 to n do  α x i y j + M [ i − 1 , j − 1] ,   M [ i , j ] = min δ + M [ i − 1 , j ] ,  δ + M [ i , j − 1]  . Analysis . . Running time is O ( mn ) . 1 . Sariel (UIUC) CS573 32 Fall 2013 32 / 72

  32. Dynamic Programming Solution for all i do M [ i , 0] = i δ for all j do M [0 , j ] = j δ for i = 1 to m do for j = 1 to n do  α x i y j + M [ i − 1 , j − 1] ,   M [ i , j ] = min δ + M [ i − 1 , j ] ,  δ + M [ i , j − 1]  . Analysis . . Running time is O ( mn ) . 1 . Sariel (UIUC) CS573 32 Fall 2013 32 / 72

  33. Dynamic Programming Solution for all i do M [ i , 0] = i δ for all j do M [0 , j ] = j δ for i = 1 to m do for j = 1 to n do  α x i y j + M [ i − 1 , j − 1] ,   M [ i , j ] = min δ + M [ i − 1 , j ] ,  δ + M [ i , j − 1]  . Analysis . . Running time is O ( mn ) . 1 . . Space used is O ( mn ) . 2 . Sariel (UIUC) CS573 32 Fall 2013 32 / 72

  34. Matrix and DAG of Computation 0, 0 α x i x j δ i, j δ . . . . . . ... ... . . . . . . . . . . . . m, n Figure : Iterative algorithm in previous slide computes values in row order. Optimal value is a shortest path from (0 , 0) to ( m , n ) in DAG . Sariel (UIUC) CS573 33 Fall 2013 33 / 72

  35. Sequence Alignment in Practice . . Typically the DNA sequences that are aligned are about 10 5 1 letters long! So about 10 10 operations and 10 10 bytes needed . . 2 . . The killer is the 10GB storage 3 . . Can we reduce space requirements? 4 Sariel (UIUC) CS573 34 Fall 2013 34 / 72

  36. Optimizing Space . . Recall 1  α x i y j + M ( i − 1 , j − 1) ,    M ( i , j ) = min δ + M ( i − 1 , j ) ,   δ + M ( i , j − 1)  . . Entries in j th column only depend on ( j − 1) st column and 2 earlier entries in j th column . . Only store the current column and the previous column reusing 3 space; N ( i , 0) stores M ( i , j − 1) and N ( i , 1) stores M ( i , j ) Sariel (UIUC) CS573 35 Fall 2013 35 / 72

  37. Computing in column order to save space 0, 0 α x i x j δ i, j δ . . . . . . ... ... . . . . . . . . . . . . m, n Figure : M ( i , j ) only depends on previous column values. Keep only two columns and compute in column order. Sariel (UIUC) CS573 36 Fall 2013 36 / 72

  38. Space Efficient Algorithm for all i do N [ i , 0] = i δ for j = 1 to n do N [0 , 1] = j δ (* corresponds to M (0 , j ) *) for i = 1 to m do  α x i y j + N [ i − 1 , 0]   N [ i , 1] = min δ + N [ i − 1 , 1]  δ + N [ i , 0]  for i = 1 to m do Copy N [ i , 0] = N [ i , 1] . Analysis . Running time is O ( mn ) and space used is O (2 m ) = O ( m ) . Sariel (UIUC) CS573 37 Fall 2013 37 / 72

  39. Analyzing Space Efficiency . . From the m × n matrix M we can construct the actual 1 alignment (exercise) . . Matrix N computes cost of optimal alignment but no way to 2 construct the actual alignment . . Space efficient computation of alignment? More complicated 3 algorithm — see text book. Sariel (UIUC) CS573 38 Fall 2013 38 / 72

  40. Takeaway Points . . Dynamic programming is based on finding a recursive way to 1 solve the problem. Need a recursion that generates a small number of subproblems. . . Given a recursive algorithm there is a natural DAG associated 2 with the subproblems that are generated for given instance; this is the dependency graph. An iterative algorithm simply evaluates the subproblems in some topological sort of this DAG . . . The space required to evaluate the answer can be reduced in 3 some cases by a careful examination of that dependency DAG of the subproblems and keeping only a subset of the DAG at any time. Sariel (UIUC) CS573 39 Fall 2013 39 / 72

  41. Part IV . All Pairs Shortest Paths . Sariel (UIUC) CS573 40 Fall 2013 40 / 72

  42. Shortest Path Problems . Shortest Path Problems . Input A (undirected or directed) graph G = ( V , E ) with edge lengths (or costs). For edge e = ( u , v ) , ℓ ( e ) = ℓ ( u , v ) is its length. . . Given nodes s , t find shortest path from s to t . 1 . . Given node s find shortest path from s to all other nodes. 2 . . Find shortest paths for all pairs of nodes. 3 . Sariel (UIUC) CS573 41 Fall 2013 41 / 72

  43. Single-Source Shortest Paths . Single-Source Shortest Path Problems . Input A (undirected or directed) graph G = ( V , E ) with edge lengths. For edge e = ( u , v ) , ℓ ( e ) = ℓ ( u , v ) is its length. . . Given nodes s , t find shortest path from s to t . 1 . . Given node s find shortest path from s to all other nodes. 2 . Dijkstra’s algorithm for non-negative edge lengths. Running time: O (( m + n ) log n ) with heaps and O ( m + n log n ) with advanced priority queues. Bellman-Ford algorithm for arbitrary edge lengths. Running time: O ( nm ) . Sariel (UIUC) CS573 42 Fall 2013 42 / 72

  44. Single-Source Shortest Paths . Single-Source Shortest Path Problems . Input A (undirected or directed) graph G = ( V , E ) with edge lengths. For edge e = ( u , v ) , ℓ ( e ) = ℓ ( u , v ) is its length. . . Given nodes s , t find shortest path from s to t . 1 . . Given node s find shortest path from s to all other nodes. 2 . Dijkstra’s algorithm for non-negative edge lengths. Running time: O (( m + n ) log n ) with heaps and O ( m + n log n ) with advanced priority queues. Bellman-Ford algorithm for arbitrary edge lengths. Running time: O ( nm ) . Sariel (UIUC) CS573 42 Fall 2013 42 / 72

  45. All-Pairs Shortest Paths . All-Pairs Shortest Path Problem . Input A (undirected or directed) graph G = ( V , E ) with edge lengths. For edge e = ( u , v ) , ℓ ( e ) = ℓ ( u , v ) is its length. . Find shortest paths for all pairs of nodes. 1 . Apply single-source algorithms n times, once for each vertex. . . Non-negative lengths. O ( nm log n ) with heaps and 1 O ( nm + n 2 log n ) using advanced priority queues. . . Arbitrary edge lengths: O ( n 2 m ) . 2 Θ( n 4 ) if m = Ω( n 2 ) . Can we do better? Sariel (UIUC) CS573 43 Fall 2013 43 / 72

  46. All-Pairs Shortest Paths . All-Pairs Shortest Path Problem . Input A (undirected or directed) graph G = ( V , E ) with edge lengths. For edge e = ( u , v ) , ℓ ( e ) = ℓ ( u , v ) is its length. . Find shortest paths for all pairs of nodes. 1 . Apply single-source algorithms n times, once for each vertex. . . Non-negative lengths. O ( nm log n ) with heaps and 1 O ( nm + n 2 log n ) using advanced priority queues. . . Arbitrary edge lengths: O ( n 2 m ) . 2 Θ( n 4 ) if m = Ω( n 2 ) . Can we do better? Sariel (UIUC) CS573 43 Fall 2013 43 / 72

  47. All-Pairs Shortest Paths . All-Pairs Shortest Path Problem . Input A (undirected or directed) graph G = ( V , E ) with edge lengths. For edge e = ( u , v ) , ℓ ( e ) = ℓ ( u , v ) is its length. . Find shortest paths for all pairs of nodes. 1 . Apply single-source algorithms n times, once for each vertex. . . Non-negative lengths. O ( nm log n ) with heaps and 1 O ( nm + n 2 log n ) using advanced priority queues. . . Arbitrary edge lengths: O ( n 2 m ) . 2 Θ( n 4 ) if m = Ω( n 2 ) . Can we do better? Sariel (UIUC) CS573 43 Fall 2013 43 / 72

  48. Shortest Paths and Recursion . . Compute the shortest path distance from s to t recursively? 1 . . What are the smaller sub-problems? 2 . Lemma . Let G be a directed graph with arbitrary edge lengths. If s = v 0 → v 1 → v 2 → . . . → v k is a shortest path from s to v k then for 1 ≤ i < k : . . s = v 0 → v 1 → v 2 → . . . → v i is a shortest path from s to 1 v i . Sub-problem idea: paths of fewer hops/edges Sariel (UIUC) CS573 44 Fall 2013 44 / 72

  49. Shortest Paths and Recursion . . Compute the shortest path distance from s to t recursively? 1 . . What are the smaller sub-problems? 2 . Lemma . Let G be a directed graph with arbitrary edge lengths. If s = v 0 → v 1 → v 2 → . . . → v k is a shortest path from s to v k then for 1 ≤ i < k : . . s = v 0 → v 1 → v 2 → . . . → v i is a shortest path from s to 1 v i . Sub-problem idea: paths of fewer hops/edges Sariel (UIUC) CS573 44 Fall 2013 44 / 72

  50. Shortest Paths and Recursion . . Compute the shortest path distance from s to t recursively? 1 . . What are the smaller sub-problems? 2 . Lemma . Let G be a directed graph with arbitrary edge lengths. If s = v 0 → v 1 → v 2 → . . . → v k is a shortest path from s to v k then for 1 ≤ i < k : . . s = v 0 → v 1 → v 2 → . . . → v i is a shortest path from s to 1 v i . Sub-problem idea: paths of fewer hops/edges Sariel (UIUC) CS573 44 Fall 2013 44 / 72

  51. Hop-based Recur’: Single-Source Shortest Paths Single-source problem: fix source s . OPT ( v , k ) : shortest path dist. from s to v using at most k edges. Note: dist ( s , v ) = OPT ( v , n − 1) . Recursion for OPT ( v , k ) :  min u ∈ V ( OPT ( u , k − 1) + c ( u , v )) .  OPT ( v , k ) = min OPT ( v , k − 1)  Base case: OPT ( v , 1) = c ( s , v ) if ( s , v ) ∈ E otherwise ∞ Leads to Bellman-Ford algorithm — see text book. OPT ( v , k ) values are also of independent interest: shortest paths with at most k hops Sariel (UIUC) CS573 45 Fall 2013 45 / 72

  52. Hop-based Recur’: Single-Source Shortest Paths Single-source problem: fix source s . OPT ( v , k ) : shortest path dist. from s to v using at most k edges. Note: dist ( s , v ) = OPT ( v , n − 1) . Recursion for OPT ( v , k ) :  min u ∈ V ( OPT ( u , k − 1) + c ( u , v )) .  OPT ( v , k ) = min OPT ( v , k − 1)  Base case: OPT ( v , 1) = c ( s , v ) if ( s , v ) ∈ E otherwise ∞ Leads to Bellman-Ford algorithm — see text book. OPT ( v , k ) values are also of independent interest: shortest paths with at most k hops Sariel (UIUC) CS573 45 Fall 2013 45 / 72

  53. Hop-based Recur’: Single-Source Shortest Paths Single-source problem: fix source s . OPT ( v , k ) : shortest path dist. from s to v using at most k edges. Note: dist ( s , v ) = OPT ( v , n − 1) . Recursion for OPT ( v , k ) :  min u ∈ V ( OPT ( u , k − 1) + c ( u , v )) .  OPT ( v , k ) = min OPT ( v , k − 1)  Base case: OPT ( v , 1) = c ( s , v ) if ( s , v ) ∈ E otherwise ∞ Leads to Bellman-Ford algorithm — see text book. OPT ( v , k ) values are also of independent interest: shortest paths with at most k hops Sariel (UIUC) CS573 45 Fall 2013 45 / 72

  54. Hop-based Recur’: Single-Source Shortest Paths Single-source problem: fix source s . OPT ( v , k ) : shortest path dist. from s to v using at most k edges. Note: dist ( s , v ) = OPT ( v , n − 1) . Recursion for OPT ( v , k ) :  min u ∈ V ( OPT ( u , k − 1) + c ( u , v )) .  OPT ( v , k ) = min OPT ( v , k − 1)  Base case: OPT ( v , 1) = c ( s , v ) if ( s , v ) ∈ E otherwise ∞ Leads to Bellman-Ford algorithm — see text book. OPT ( v , k ) values are also of independent interest: shortest paths with at most k hops Sariel (UIUC) CS573 45 Fall 2013 45 / 72

  55. Hop-based Recur’: Single-Source Shortest Paths Single-source problem: fix source s . OPT ( v , k ) : shortest path dist. from s to v using at most k edges. Note: dist ( s , v ) = OPT ( v , n − 1) . Recursion for OPT ( v , k ) :  min u ∈ V ( OPT ( u , k − 1) + c ( u , v )) .  OPT ( v , k ) = min OPT ( v , k − 1)  Base case: OPT ( v , 1) = c ( s , v ) if ( s , v ) ∈ E otherwise ∞ Leads to Bellman-Ford algorithm — see text book. OPT ( v , k ) values are also of independent interest: shortest paths with at most k hops Sariel (UIUC) CS573 45 Fall 2013 45 / 72

  56. Hop-based Recur’: Single-Source Shortest Paths Single-source problem: fix source s . OPT ( v , k ) : shortest path dist. from s to v using at most k edges. Note: dist ( s , v ) = OPT ( v , n − 1) . Recursion for OPT ( v , k ) :  min u ∈ V ( OPT ( u , k − 1) + c ( u , v )) .  OPT ( v , k ) = min OPT ( v , k − 1)  Base case: OPT ( v , 1) = c ( s , v ) if ( s , v ) ∈ E otherwise ∞ Leads to Bellman-Ford algorithm — see text book. OPT ( v , k ) values are also of independent interest: shortest paths with at most k hops Sariel (UIUC) CS573 45 Fall 2013 45 / 72

  57. All-Pairs: Recursion on index of intermediate nodes . . Number vertices arbitrarily as v 1 , v 2 , . . . , v n 1 . . dist ( i , j , k ) : shortest path distance between v i and v j among 2 all paths in which the largest index of an intermediate node is at most k 1 dist ( i , j , 0) = 100 3 1 1 4 dist ( i , j , 1) = 9 2 5 j i 1 dist ( i , j , 2) = 8 10 2 dist ( i , j , 3) = 5 100 Sariel (UIUC) CS573 46 Fall 2013 46 / 72

  58. All-Pairs: Recursion on index of intermediate nodes . . Number vertices arbitrarily as v 1 , v 2 , . . . , v n 1 . . dist ( i , j , k ) : shortest path distance between v i and v j among 2 all paths in which the largest index of an intermediate node is at most k 1 dist ( i , j , 0) = 100 3 1 1 4 dist ( i , j , 1) = 9 2 5 j i 1 dist ( i , j , 2) = 8 10 2 dist ( i , j , 3) = 5 100 Sariel (UIUC) CS573 46 Fall 2013 46 / 72

  59. All-Pairs: Recursion on index of intermediate nodes . . Number vertices arbitrarily as v 1 , v 2 , . . . , v n 1 . . dist ( i , j , k ) : shortest path distance between v i and v j among 2 all paths in which the largest index of an intermediate node is at most k 1 dist ( i , j , 0) = 100 3 1 1 4 dist ( i , j , 1) = 9 2 5 j i 1 dist ( i , j , 2) = 8 10 2 dist ( i , j , 3) = 5 100 Sariel (UIUC) CS573 46 Fall 2013 46 / 72

  60. All-Pairs: Recursion on index of intermediate nodes . . Number vertices arbitrarily as v 1 , v 2 , . . . , v n 1 . . dist ( i , j , k ) : shortest path distance between v i and v j among 2 all paths in which the largest index of an intermediate node is at most k 1 dist ( i , j , 0) = 100 3 1 1 4 dist ( i , j , 1) = 9 2 5 j i 1 dist ( i , j , 2) = 8 10 2 dist ( i , j , 3) = 5 100 Sariel (UIUC) CS573 46 Fall 2013 46 / 72

  61. All-Pairs: Recursion on index of intermediate nodes . . Number vertices arbitrarily as v 1 , v 2 , . . . , v n 1 . . dist ( i , j , k ) : shortest path distance between v i and v j among 2 all paths in which the largest index of an intermediate node is at most k 1 dist ( i , j , 0) = 100 3 1 1 4 dist ( i , j , 1) = 9 2 5 j i 1 dist ( i , j , 2) = 8 10 2 dist ( i , j , 3) = 5 100 Sariel (UIUC) CS573 46 Fall 2013 46 / 72

  62. All-Pairs: Recursion on index of intermediate nodes dist( i, k, k − 1) dist ( k, j, k − 1) k i j dist( i, j, k − 1)  dist ( i , j , k − 1)  dist ( i , j , k ) = min dist ( i , k , k − 1) + dist ( k , j , k − 1)  Base case: dist ( i , j , 0) = c ( i , j ) if ( i , j ) ∈ E , otherwise ∞ Correctness: If i → j shortest path goes through k then k occurs only once on the path — otherwise there is a negative length cycle. Sariel (UIUC) CS573 47 Fall 2013 47 / 72

  63. Floyd-Warshall Algorithm for All-Pairs Shortest Paths O ( mn ) time Check if G has a negative cycle // Bellman-Ford: if there is a negative cycle then return ‘‘Negative cycle’’ for i = 1 to n do for j = 1 to n do dist ( i , j , 0) = c ( i , j ) (* c ( i , j ) = ∞ if ( i , j ) / ∈ E , 0 if i = j *) for k = 1 to n do for i = 1 to n do for j = 1 to n do { dist ( i , j , k − 1) , dist ( i , j , k ) = min dist ( i , k , k − 1) + dist ( k , j , k − 1) Correctness: Recursion works under the assumption that all shortest paths are defined (no negative length cycle). Running Time: Θ( n 3 ) , Space: Θ( n 3 ) . Sariel (UIUC) CS573 48 Fall 2013 48 / 72

  64. Floyd-Warshall Algorithm for All-Pairs Shortest Paths O ( mn ) time Check if G has a negative cycle // Bellman-Ford: if there is a negative cycle then return ‘‘Negative cycle’’ for i = 1 to n do for j = 1 to n do dist ( i , j , 0) = c ( i , j ) (* c ( i , j ) = ∞ if ( i , j ) / ∈ E , 0 if i = j *) for k = 1 to n do for i = 1 to n do for j = 1 to n do { dist ( i , j , k − 1) , dist ( i , j , k ) = min dist ( i , k , k − 1) + dist ( k , j , k − 1) Correctness: Recursion works under the assumption that all shortest paths are defined (no negative length cycle). Running Time: Θ( n 3 ) , Space: Θ( n 3 ) . Sariel (UIUC) CS573 48 Fall 2013 48 / 72

  65. Floyd-Warshall Algorithm for All-Pairs Shortest Paths O ( mn ) time Check if G has a negative cycle // Bellman-Ford: if there is a negative cycle then return ‘‘Negative cycle’’ for i = 1 to n do for j = 1 to n do dist ( i , j , 0) = c ( i , j ) (* c ( i , j ) = ∞ if ( i , j ) / ∈ E , 0 if i = j *) for k = 1 to n do for i = 1 to n do for j = 1 to n do { dist ( i , j , k − 1) , dist ( i , j , k ) = min dist ( i , k , k − 1) + dist ( k , j , k − 1) Correctness: Recursion works under the assumption that all shortest paths are defined (no negative length cycle). Running Time: Θ( n 3 ) , Space: Θ( n 3 ) . Sariel (UIUC) CS573 48 Fall 2013 48 / 72

  66. Floyd-Warshall Algorithm for All-Pairs Shortest Paths Do we need a separate algorithm to check if there is negative cycle? for i = 1 to n do for j = 1 to n do dist ( i , j , 0) = c ( i , j ) (* c ( i , j ) = ∞ if ( i , j ) / ∈ E , 0 if i = j *) not edge, 0 if i = j *) for k = 1 to n do for i = 1 to n do for j = 1 to n do dist ( i , j , k ) = min ( dist ( i , j , k − 1) , dist ( i , k , k − 1) + dist ( k , j for i = 1 to n do if ( dist ( i , i , n ) < 0 ) then Output that there is a negative length cycle in G Correctness: exercise Sariel (UIUC) CS573 49 Fall 2013 49 / 72

  67. Floyd-Warshall Algorithm for All-Pairs Shortest Paths Do we need a separate algorithm to check if there is negative cycle? for i = 1 to n do for j = 1 to n do dist ( i , j , 0) = c ( i , j ) (* c ( i , j ) = ∞ if ( i , j ) / ∈ E , 0 if i = j *) not edge, 0 if i = j *) for k = 1 to n do for i = 1 to n do for j = 1 to n do dist ( i , j , k ) = min ( dist ( i , j , k − 1) , dist ( i , k , k − 1) + dist ( k , j for i = 1 to n do if ( dist ( i , i , n ) < 0 ) then Output that there is a negative length cycle in G Correctness: exercise Sariel (UIUC) CS573 49 Fall 2013 49 / 72

  68. Floyd-Warshall Algorithm: Finding the Paths Question: Can we find the paths in addition to the distances? . . Create a n × n array Next that stores the next vertex on 1 shortest path for each pair of vertices . . With array Next, for any pair of given vertices i , j can compute 2 a shortest path in O ( n ) time. Sariel (UIUC) CS573 50 Fall 2013 50 / 72

  69. Floyd-Warshall Algorithm: Finding the Paths Question: Can we find the paths in addition to the distances? . . Create a n × n array Next that stores the next vertex on 1 shortest path for each pair of vertices . . With array Next, for any pair of given vertices i , j can compute 2 a shortest path in O ( n ) time. Sariel (UIUC) CS573 50 Fall 2013 50 / 72

  70. Floyd-Warshall Algorithm Finding the Paths for i = 1 to n do for j = 1 to n do dist ( i , j , 0) = c ( i , j ) (* c ( i , j ) = ∞ if ( i , j ) not edge, 0 if i = Next ( i , j ) = − 1 for k = 1 to n do for i = 1 to n do for j = 1 to n do if ( dist ( i , j , k − 1) > dist ( i , k , k − 1) + dist ( k , j , k − 1) ) then dist ( i , j , k ) = dist ( i , k , k − 1) + dist ( k , j , k − 1) Next ( i , j ) = k for i = 1 to n do if ( dist ( i , i , n ) < 0 ) then Output that there is a negative length cycle in G Exercise: Given Next array and any two vertices i , j describe an O ( n ) algorithm to find a i - j shortest path. Sariel (UIUC) CS573 51 Fall 2013 51 / 72

  71. Summary of results on shortest paths Single vertex No negative edges Dijkstra O ( n log n + m ) Edges cost might be negative Bellman Ford O ( nm ) But no negative cycles . All Pairs Shortest Paths . O ( n 2 log n + nm ) No negative edges n * Dijkstra O ( n 2 m ) = O ( n 4 ) No negative cycles n * Bellman Ford O ( n 3 ) No negative cycles Floyd-Warshall . Sariel (UIUC) CS573 52 Fall 2013 52 / 72

  72. Part V . Knapsack . Sariel (UIUC) CS573 53 Fall 2013 53 / 72

  73. Knapsack Problem Input Given a Knapsack of capacity W lbs. and n objects with i th object having weight w i and value v i ; assume W , w i , v i are all positive integers Goal Fill the Knapsack without exceeding weight limit while maximizing value. Basic problem that arises in many applications as a sub-problem. Sariel (UIUC) CS573 54 Fall 2013 54 / 72

  74. Knapsack Problem Input Given a Knapsack of capacity W lbs. and n objects with i th object having weight w i and value v i ; assume W , w i , v i are all positive integers Goal Fill the Knapsack without exceeding weight limit while maximizing value. Basic problem that arises in many applications as a sub-problem. Sariel (UIUC) CS573 54 Fall 2013 54 / 72

  75. Knapsack Example . Example . Item I 1 I 2 I 3 I 4 I 5 Value 1 6 18 22 28 Weight 1 2 5 6 7 If W = 11 , the best is { I 3 , I 4 } giving value 40. . . Special Case . When v i = w i , the Knapsack problem is called the Subset Sum . Problem. Sariel (UIUC) CS573 55 Fall 2013 55 / 72

  76. Greedy Approach . . Pick objects with greatest value 1 . . . Let W = 2 , w 1 = w 2 = 1 , w 3 = 2 , v 1 = v 2 = 2 and 1 v 3 = 3 ; greedy strategy will pick { 3 } , but the optimal is { 1 , 2 } . . Pick objects with smallest weight 2 . . . Let W = 2 , w 1 = 1 , w 2 = 2 , v 1 = 1 and v 2 = 3 ; greedy 1 strategy will pick { 1 } , but the optimal is { 2 } . . Pick objects with largest v i / w i ratio 3 . . . Let W = 4 , w 1 = w 2 = 2 , w 3 = 3 , v 1 = v 2 = 3 and 1 v 3 = 5 ; greedy strategy will pick { 3 } , but the optimal is { 1 , 2 } . . . Can show that a slight modification always gives half the 2 optimum profit: pick the better of the output of this algorithm and the largest value item. Also, the algorithms gives better approximations when all item weights are small when compared to W . Sariel (UIUC) CS573 56 Fall 2013 56 / 72

Recommend


More recommend