Homework3: Dynamic Programming - Answers
|
|
- Hector Holt
- 5 years ago
- Views:
Transcription
1 Most Exercises are from your textbook: Homework3: Dynamic Programming - Answers 1. For the Rod Cutting problem (covered in lecture) modify the given top-down memoized algorithm (includes two procedures) to compute and return not only the optimal revenue, but also necessary data (the S-list) that will help to later print the optimal solution. CutRod_DP_memoized(N, P) //given the size of the rod and the list of N prices 1 Define a new array R[0..N] 2 Define a new array S[1..N] //an array to save the length of the first cut for every length rod 3 for i=0 to N 4 R[i]= - //Can initialize with -1 too since revenue-values are nonnegative 5 return CutRod_aux(N, P, R, S) CutRod_aux(n, P, R, S) 1 if R[n] >= 0 //Check if there is a registered value for r n 2 return (R[n], S) 4 if n==0 5 R[n] = 0 //Register the optimal revenue (no S-value to register) 7 max = - //lines 7-12: compute max revenue r n = max 1 i n ( p i + r n i ) and save the optimal cut 8 for i = 1 to n //i is the length of the left piece 9 temp = P[i]+CutRod_aux(n-i, P, R, S).firstValue //take 1 st value of the returned pair 10 if (max < temp) 11 max = temp 12 S[n] = i //Save the length of the optimal cut for an n-length rod 13 R[n] = max //Register the optimal revenue 14 return (R[n], S) 2. Consider a modification of the Rod Cutting Problem where in addition to a price p i for each i-length rod, each cut incurs a fixed cost of c. The revenue associated with a solution is now the sum of prices of all pieces minus the costs of making the cuts. Give a dynamic programming algorithm to solve this modified problem. CutRod(n, P, c) 1 Define R[1..n] array 2 Define S[1..n] array //Array to save left-piece lengths 3 R[0] = 0 //Register the optimal revenue //won t need this 4 for size = 1 to n //for every length rod find out its optimal revenue 5 max = P[size] //lines 5-9: compute r size =max{p size, max 1 i size 1 ( p i + r size i c) 6 for i = 1 to size-1 //i is the length of the left piece 7 if (max < P[i] + R[size-i] - c) 8 max = P[i] +R[size-i] - c 9 S[size] = i //Save the i that gave the max revenue 10 R[size] = max //Register the optimal revenue for size-length rod 11 return R[n] and The main changes here are (presented in green in the pseudocode): 1. The revenue that is obtained by making a cut is computed as: price of the left piece + max revenue of the remainder cost of the cut. 2. Since the option of not cutting at all does not incur any c-cost, it is taken out of the maxcomputing loop the revenue in this case is simply the price of the piece (it s different than cases that make a cut). This means that we do not need to define R[0]=0 fictitious revenue. 3. Suppose that in the original Rod Cutting Problem we also had limit l i on the number of pieces of length i that we are allowed to produce, for i=1,2, n. Show that the optimal substructure property no longer 1
2 holds (you can show it by giving an example where the optimal solution of the problem contains a nonoptimal solution of a sub-problem). This solution text is from your textbook authors (Cormen, Leiserson, Rivest and Stein): We say that a problem exhibits the optimal substructure property when optimal solutions to a problem incorporate optimal solutions to related sub-problems which we may solve independently (i.e. they do not share resources). When we impose a limit l i on the number of pieces of size i that we are permitted to produce, the sub-problems can no longer be solved independently. For example, consider a rod of length 4 with the following prices and limits: Length i Price p i Limit l i This instance has only three solutions that do not violate the limits: length 4 with price 36; lengths 1 and 3 with price 48; and lengths 1, 1, and 2 with price 50. The optional solution, therefore is to cut into lengths 1, 1, and 2. When we look at sub-problem for length 2, it has two solutions that do not violate the limits: length 2 with price 20, and lengths 1 and 1 with price 30. The optimal solution for length 2, therefore is to cut into lengths 1 and 1. But we cannot use this solution of the sub-problem in the optimal solution for the original problem because it would result in using four rods of length 1 to solve the original problem, violating the limit of two length-1 rods. 4. Applying the bottom-up dynamic programming algorithm for the Matrix-Chain Multiplication Problem (covered in lecture), find an optimal parenthesization of the matrix-chain product A 1 A 2 A 3 A 4 A 5 A 6 ; the sequence of matrix-dimensions is <50,10,3,12,5,50,6>. a) Draw the M and S tables, compute and fill-in values. M-table S-table b) Using the S table, produce the fully parenthesized product for the given matrix chain. A 1..6 = ( A 1..2 A 3..6 ) = ( ( A 1..1 A 2..2 ) ( A 3..4 A 5..6 ) ) = ( ( A 1 A 2 ) ( ( A 3..3 A 4..4 ) ( A 5..5 A 6..6 ) ) ) = = ( ( A 1 A 2 ) ( ( A 3 A 4 ) ( A 5 A 6 ) ) ) 5. For the Matrix-Chain Multiplication problem: a) Give the pseudocode of a naïve recursive algorithm to compute the min cost of the product of the chain (no need to construct the optimal solution just compute the value of the solution). //The initial call to this recursive routine will be MatrixChain_recursive(P, 1, N) MatrixChain_recursive(P, i, j) //given P list of matrix-sizes, and i,j indexes of sub-chain A i..j 1 if i==j 2 return 0 4 M[i,j] = //lines 4-8: find min cost of A i..k A k+1..j products for all possible k-values 5 for k=i to j-1 6 x = MatrixChain_recursive(P,i,k) + MatrixChain_recursive(P,k+1,j) + P[i-1] P[k] P[j] 7 if x < M[i,j] 8 M[i,j] = x 9 return M[i,j] 2
3 b) Give the pseudocode of a memoized top-down algorithm (two procedures) to compute the min cost of the product (no need to construct the optimal solution just compute the value of the solution). MatrixChain_memoized(P) //given the list of N+1prices 1 N =P.lenght-1 2 Define a new table M[1..N, 1..N] 3 for i=1 to N 4 for j=i to N 5 M[i,j]= 6 return MatrixChain_aux(M,P,1,N) MatrixChain_aux(M,P,i,j) //given M-table, P list of matrix-sizes, and i,j indexes of sub-chain A i..j 1 if M[i,j] < //Check if min cost for A i..j product is already computed, and if so, return that value 2 return M[i,j] 4 if i==j 5 M[i,j]=0 //Register the min cost 7 for k=i to j-1 //lines 7-11: find min cost of A i..k A k+1..j products for all possible k-values 8 x = MatrixChain_aux(M,P,i,k) + MatrixChain_aux(M,P,k+1,j) + P[i-1] P[k] P[j] 9 if x < M[i,j] 10 M[i,j] = x //Register the min cost 11 return M[i,j] 6. Applying the bottom-up dynamic programming algorithm for the Longest Common Subsequence Problem (covered in lecture), determine the LCS for the following two sequences: <1,0,0,1,0,1,0,1> and <0,1,0,1,1,0,1,1,0>. a) Draw the C and B tables, compute and fill-in values. C-table B-table l d l d d l d d l d l d l l d l l d d l d l l d l l d u d l d d l d d l d u d l l d l l d u d u d d l d d l d u d u l d l l d u d u d d l d d l b) Using the B table, produce the LCS for the given two sequences. An LCS of the given two sequences <1,0,0,1,0,1,0,1> and <0,1,0,1,1,0,1,1,0> is <0,1,0,1,0,1> Note: the route is shown in green on B-table above. //Continued on the next page 3
4 7. Give pseudocode to reconstruct an LCS from the completed C table and the original sequences X = <x 1,x 2,,x m > and Y = <y 1,y 2,,y n > in O(n+m) time without using the B-table. LCS_output(C, X, Y) 1 Define an empty string output 2 i=m //starting with the [m,n] cell 3 j=n 4 while i>0 and j>0 //as long as we didn t hit the #0-row or the #0-column 5 if X[i] == Y[j] //if two symbols match, then C[i,j] was obtained from diagonal element 6 output = x[i] + output //add i-symbol of X (same as j-symbol in Y) to the output 7 i=i-1 //move to the diagonal-cell 8 j=j-1 9 else 10 if C[i,j] == C[i,j-1] //if C[i,j] is obtained from the left C-value 11 j=j-1 //move to left-cell 12 else 13 i=i-1 //move to up-cell 14 return output //or we can print the output here and be done 8. For the Longest Common Subsequence Problem: a) Give the pseudocode of a naïve recursive algorithm to compute the length of the LCS of given two sequences (no need to construct the optimal solution just compute the value of the solution). //The initial call to this recursive routine will be LCS_recursive(X,Y,m,n) LCS_recursive(X,Y,i, j) //given X,Y sequences and the number of elements in prefixes X i and Y j 1 if i==0 or j==0 2 return 0 4 if x i == y j 5 return LCS_recursive(X,Y,i-1,j-1) return max{ LCS_recursive(X,Y,i-1,j), LCS_recursive(X,Y,i,j-1)} b) Give the pseudocode of memoized top-down algorithm (two procedures) to compute the length of LCS of given 2 sequences (no need to construct optimal solution just compute the value of the solution). LCS_memoized(X,Y) //given X and Y sequences 1 m =X.lenght 2 n = Y.length 3 Define a new table C[1..m, 1..n] 4 for i=1 to m 5 for j=1 to n 6 C[i,j]= -1 7 return LCS_aux(C,X,Y,m,n) LCS_aux(C,X,Y,i, j) //given C-table, X,Y sequences and the number of elements in prefixes X i,y j 1 if C[i,j] >=0 //Check if the length of LCS(X i,y j ) is already computed, and if so, return that value 2 return C[i,j] 4 if i=0 or j=0 5 C[i,j] = 0 //Register the max length 7 if x i == y j //Compute and register max length in both cases 8 C[i,j] = LCS_aux(C,X,Y,i-1,j-1) else 10 C[i,j] = max{ LCS_aux(C,X,Y,i-1,j), LCS_aux(C,X,Y,i,j-1)} 11 return C[i,j] 4
5 9. Applying the bottom-up dynamic programming algorithm for the Knapsack 0-1 Problem (covered in lecture), determine the subset of items that should be selected to go into the knapsack for the following input data: W weight-limit is 8, N number of items is 4, prices of items are $15, $10, $9, $5 and their weights are 1,5,3,4 respectively. a) Draw the V and B tables, compute and fill-in values. V-table i\w B-table i\w b) Using the B table, produce the subset of items chosen to go into the knapsack. The following is the work on B-table (the route is shown in green on B-table above). B[4,8] ==1, thus item 4 is chosen and we move to [3, 8-4=4] cell. B[3,4] ==1, thus item 3 is chosen and we move to [2,4-3=1] cell. B[2,1] ==0 which means that item 2 is not chosen so we move to [1,1] cell. B[1,1] ==1 thus item 1 is chosen. Items 4, 3, and 1 (or 1,3,4) are the optimal choice to go into the knapsack. 10. Draw the execution tree for MergeSort algorithm on an array of 16 elements (draw the tree of all subproblems that occur); remember that the recursive routine, call it shortly MS, is defined to work on an array segment A i..j, with the initial call to be made for A Explain why memoization fails to speed up a good divide-and-conquer algorithm such as MergeSort. MS MS 1..8 MS MS 1..4 MS 5..8 MS MS MS 1..2 MS 3..4 MS MS 7..8 MS MS MS MS MS 1 MS 2 MS 3 MS 4 MS 5 MS 6 MS 7 MS 8 MS 9 MS 10 MS 11 MS 12 MS 13 MS 14 MS 15 MS 16 Note: in this tree MS i..j stands for Mergesort(A i..j ) and MS i stands for MergeSort(A i..i ). In a good divide-and-conquer algorithm all sub-problems are distinct (they do not overlap). This means that each sub-problem is solved only once and therefore memoization does not speed up the algorithm. On the contrary, memoization is inefficient because (i) it uses additional memory to save computed values, and (ii) does additional work with the data-structure containing the already computed values. 5
Introduction to Algorithms
Introduction to Algorithms 6.046J/18.401J LECTURE 12 Dynamic programming Longest common subsequence Optimal substructure Overlapping subproblems Prof. Charles E. Leiserson Dynamic programming Design technique,
More informationLecture 8. Dynamic Programming
Lecture 8. Dynamic Programming T. H. Cormen, C. E. Leiserson and R. L. Rivest Introduction to Algorithms, 3rd Edition, MIT Press, 2009 Sungkyunkwan University Hyunseung Choo choo@skku.edu Copyright 2000-2018
More informationDynamic Programming part 2
Dynamic Programming part 2 Week 7 Objectives More dynamic programming examples - Matrix Multiplication Parenthesis - Longest Common Subsequence Subproblem Optimal structure Defining the dynamic recurrence
More informationSo far... Finished looking at lower bounds and linear sorts.
So far... Finished looking at lower bounds and linear sorts. Next: Memoization -- Optimization problems - Dynamic programming A scheduling problem Matrix multiplication optimization Longest Common Subsequence
More informationChapter 3 Dynamic programming
Chapter 3 Dynamic programming 1 Dynamic programming also solve a problem by combining the solutions to subproblems. But dynamic programming considers the situation that some subproblems will be called
More informationCS 380 ALGORITHM DESIGN AND ANALYSIS
CS 380 ALGORITHM DESIGN AND ANALYSIS Lecture 14: Dynamic Programming Text Reference: Chapter 15 Dynamic Programming We know that we can use the divide-and-conquer technique to obtain efficient algorithms
More informationCS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya
CS60020: Foundations of Algorithm Design and Machine Learning Sourangshu Bhattacharya Dynamic programming Design technique, like divide-and-conquer. Example: Longest Common Subsequence (LCS) Given two
More informationCMPS 2200 Fall Dynamic Programming. Carola Wenk. Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk
CMPS 00 Fall 04 Dynamic Programming Carola Wenk Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk 9/30/4 CMPS 00 Intro. to Algorithms Dynamic programming Algorithm design technique
More informationDynamic Programming. Design and Analysis of Algorithms. Entwurf und Analyse von Algorithmen. Irene Parada. Design and Analysis of Algorithms
Entwurf und Analyse von Algorithmen Dynamic Programming Overview Introduction Example 1 When and how to apply this method Example 2 Final remarks Introduction: when recursion is inefficient Example: Calculation
More informationLecture 4: Dynamic programming I
Lecture : Dynamic programming I Dynamic programming is a powerful, tabular method that solves problems by combining solutions to subproblems. It was introduced by Bellman in the 950 s (when programming
More informationDynamic Programming CS 445. Example: Floyd Warshll Algorithm: Computing all pairs shortest paths
CS 44 Dynamic Programming Some of the slides are courtesy of Charles Leiserson with small changes by Carola Wenk Example: Floyd Warshll lgorithm: Computing all pairs shortest paths Given G(V,E), with weight
More informationAlgorithm Design and Analysis
Algorithm Design and Analysis LECTURE 16 Dynamic Programming Least Common Subsequence Saving space Adam Smith Least Common Subsequence A.k.a. sequence alignment edit distance Longest Common Subsequence
More informationCS 231: Algorithmic Problem Solving
CS 231: Algorithmic Problem Solving Naomi Nishimura Module 5 Date of this version: June 14, 2018 WARNING: Drafts of slides are made available prior to lecture for your convenience. After lecture, slides
More informationCS473-Algorithms I. Lecture 10. Dynamic Programming. Cevdet Aykanat - Bilkent University Computer Engineering Department
CS473-Algorithms I Lecture 1 Dynamic Programming 1 Introduction An algorithm design paradigm like divide-and-conquer Programming : A tabular method (not writing computer code) Divide-and-Conquer (DAC):
More information12 Dynamic Programming (2) Matrix-chain Multiplication Segmented Least Squares
12 Dynamic Programming (2) Matrix-chain Multiplication Segmented Least Squares Optimal substructure Dynamic programming is typically applied to optimization problems. An optimal solution to the original
More informationAlgorithms. Ch.15 Dynamic Programming
Algorithms Ch.15 Dynamic Programming Dynamic Programming Not a specific algorithm, but a technique (like divide-and-conquer). Developed back in the day when programming meant tabular method (like linear
More informationElements of Dynamic Programming. COSC 3101A - Design and Analysis of Algorithms 8. Discovering Optimal Substructure. Optimal Substructure - Examples
Elements of Dynamic Programming COSC 3A - Design and Analysis of Algorithms 8 Elements of DP Memoization Longest Common Subsequence Greedy Algorithms Many of these slides are taken from Monica Nicolescu,
More information15-451/651: Design & Analysis of Algorithms January 26, 2015 Dynamic Programming I last changed: January 28, 2015
15-451/651: Design & Analysis of Algorithms January 26, 2015 Dynamic Programming I last changed: January 28, 2015 Dynamic Programming is a powerful technique that allows one to solve many different types
More informationDynamic Programming. Lecture Overview Introduction
Lecture 12 Dynamic Programming 12.1 Overview Dynamic Programming is a powerful technique that allows one to solve many different types of problems in time O(n 2 ) or O(n 3 ) for which a naive approach
More informationData Structures and Algorithms Week 8
Data Structures and Algorithms Week 8 Dynamic programming Fibonacci numbers Optimization problems Matrix multiplication optimization Principles of dynamic programming Longest Common Subsequence Algorithm
More informationUnit 4: Dynamic Programming
Unit 4: Dynamic Programming Course contents: Assembly-line scheduling Matrix-chain multiplication Longest common subsequence Optimal binary search trees Applications: Cell flipping, rod cutting, optimal
More informationLecture 13: Chain Matrix Multiplication
Lecture 3: Chain Matrix Multiplication CLRS Section 5.2 Revised April 7, 2003 Outline of this Lecture Recalling matrix multiplication. The chain matrix multiplication problem. A dynamic programming algorithm
More informationy j LCS-Length(X,Y) Running time: O(st) set c[i,0] s and c[0,j] s to 0 for i=1 to s for j=1 to t if x i =y j then else if
Recursive solution for finding LCS of X and Y if x s =y t, then find an LCS of X s-1 and Y t-1, and then append x s =y t to this LCS if x s y t, then solve two subproblems: (1) find an LCS of X s-1 and
More informationDynamic Programming II
June 9, 214 DP: Longest common subsequence biologists often need to find out how similar are 2 DNA sequences DNA sequences are strings of bases: A, C, T and G how to define similarity? DP: Longest common
More informationDynamic Programming Group Exercises
Name: Name: Name: Dynamic Programming Group Exercises Adapted from material by Cole Frederick Please work the following problems in groups of 2 or 3. Use additional paper as needed, and staple the sheets
More informationCSE 101, Winter Design and Analysis of Algorithms. Lecture 11: Dynamic Programming, Part 2
CSE 101, Winter 2018 Design and Analysis of Algorithms Lecture 11: Dynamic Programming, Part 2 Class URL: http://vlsicad.ucsd.edu/courses/cse101-w18/ Goal: continue with DP (Knapsack, All-Pairs SPs, )
More information15.Dynamic Programming
15.Dynamic Programming Dynamic Programming is an algorithm design technique for optimization problems: often minimizing or maximizing. Like divide and conquer, DP solves problems by combining solutions
More informationWe ve done. Now. Next
We ve done Matroid Theory Task scheduling problem (another matroid example) Dijkstra s algorithm (another greedy example) Dynamic Programming Now Matrix Chain Multiplication Longest Common Subsequence
More informationPartha Sarathi Manal
MA 515: Introduction to Algorithms & MA353 : Design and Analysis of Algorithms [3-0-0-6] Lecture 29 http://www.iitg.ernet.in/psm/indexing_ma353/y09/index.html Partha Sarathi Manal psm@iitg.ernet.in Dept.
More informationDynamic Programming 1
Dynamic Programming 1 Jie Wang University of Massachusetts Lowell Department of Computer Science 1 I thank Prof. Zachary Kissel of Merrimack College for sharing his lecture notes with me; some of the examples
More informationDynamic Programming (Part #2)
Dynamic Programming (Part #) Introduction to Algorithms MIT Press (Chapter 5) Matrix-Chain Multiplication Problem: given a sequence A, A,, A n, compute the product: A A A n Matrix compatibility: C = A
More informationCS Algorithms. Dynamic programming and memoization. (Based on slides by Luebke, Lim, Wenbin)
CS 7 - lgorithms Dynamic programming and memoization (ased on slides by Luebke, Lim, Wenbin) When to Use Dynamic Programming Usually used to solve Optimization problems Usually the problem can be formulated
More informationCMSC 451: Lecture 11 Dynamic Programming: Longest Common Subsequence Thursday, Oct 5, 2017
CMSC 451: Lecture 11 Dynamic Programming: Longest Common Subsequence Thursday, Oct 5, 217 Reading: This algorithm is not covered in KT or DPV. It is closely related to the Sequence lignment problem of
More informationLectures 12 and 13 Dynamic programming: weighted interval scheduling
Lectures 12 and 13 Dynamic programming: weighted interval scheduling COMP 523: Advanced Algorithmic Techniques Lecturer: Dariusz Kowalski Lectures 12-13: Dynamic Programming 1 Overview Last week: Graph
More informationIntroduction to Algorithms
Introduction to Algorithms Dynamic Programming Well known algorithm design techniques: Brute-Force (iterative) ti algorithms Divide-and-conquer algorithms Another strategy for designing algorithms is dynamic
More information14 Dynamic. Matrix-chain multiplication. P.D. Dr. Alexander Souza. Winter term 11/12
Algorithms Theory 14 Dynamic Programming (2) Matrix-chain multiplication P.D. Dr. Alexander Souza Optimal substructure Dynamic programming is typically applied to optimization problems. An optimal solution
More informationECE250: Algorithms and Data Structures Dynamic Programming Part B
ECE250: Algorithms and Data Structures Dynamic Programming Part B Ladan Tahvildari, PEng, SMIEEE Associate Professor Software Technologies Applied Research (STAR) Group Dept. of Elect. & Comp. Eng. University
More informationCS141: Intermediate Data Structures and Algorithms Dynamic Programming
CS141: Intermediate Data Structures and Algorithms Dynamic Programming Amr Magdy Programming? In this context, programming is a tabular method Other examples: Linear programing Integer programming 2 Rod
More informationAlgorithm Design Techniques part I
Algorithm Design Techniques part I Divide-and-Conquer. Dynamic Programming DSA - lecture 8 - T.U.Cluj-Napoca - M. Joldos 1 Some Algorithm Design Techniques Top-Down Algorithms: Divide-and-Conquer Bottom-Up
More informationAlgorithms Dr. Haim Levkowitz
91.503 Algorithms Dr. Haim Levkowitz Fall 2007 Lecture 4 Tuesday, 25 Sep 2007 Design Patterns for Optimization Problems Greedy Algorithms 1 Greedy Algorithms 2 What is Greedy Algorithm? Similar to dynamic
More informationCSC 505, Spring 2005 Week 6 Lectures page 1 of 9
CSC 505, Spring 2005 Week 6 Lectures page 1 of 9 Objectives: learn general strategies for problems about order statistics learn how to find the median (or k-th largest) in linear average-case number of
More informationData Structure and Algorithm II Homework #2 Due: 13pm, Monday, October 31, === Homework submission instructions ===
Data Structure and Algorithm II Homework #2 Due: 13pm, Monday, October 31, 2011 === Homework submission instructions === Submit the answers for writing problems (including your programming report) through
More informationLongest Common Subsequences and Substrings
Longest Common Subsequences and Substrings Version November 5, 2014 Version November 5, 2014 Longest Common Subsequences and Substrings 1 / 16 Longest Common Subsequence Given two sequences X = (x 1, x
More informationIN101: Algorithmic techniques Vladimir-Alexandru Paun ENSTA ParisTech
IN101: Algorithmic techniques Vladimir-Alexandru Paun ENSTA ParisTech License CC BY-NC-SA 2.0 http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Outline Previously on IN101 Python s anatomy Functions,
More information1 i n (p i + r n i ) (Note that by allowing i to be n, we handle the case where the rod is not cut at all.)
Dynamic programming is a problem solving method that is applicable to many different types of problems. I think it is best learned by example, so we will mostly do examples today. 1 Rod cutting Suppose
More information10/24/ Rotations. 2. // s left subtree s right subtree 3. if // link s parent to elseif == else 11. // put x on s left
13.2 Rotations MAT-72006 AA+DS, Fall 2013 24-Oct-13 368 LEFT-ROTATE(, ) 1. // set 2. // s left subtree s right subtree 3. if 4. 5. // link s parent to 6. if == 7. 8. elseif == 9. 10. else 11. // put x
More informationDesign and Analysis of Algorithms
Design and Analysis of Algorithms CSE 5311 Lecture 16 Greedy algorithms Junzhou Huang, Ph.D. Department of Computer Science and Engineering CSE5311 Design and Analysis of Algorithms 1 Overview A greedy
More informationUnit-5 Dynamic Programming 2016
5 Dynamic programming Overview, Applications - shortest path in graph, matrix multiplication, travelling salesman problem, Fibonacci Series. 20% 12 Origin: Richard Bellman, 1957 Programming referred to
More informationSubsequence Definition. CS 461, Lecture 8. Today s Outline. Example. Assume given sequence X = x 1, x 2,..., x m. Jared Saia University of New Mexico
Subsequence Definition CS 461, Lecture 8 Jared Saia University of New Mexico Assume given sequence X = x 1, x 2,..., x m Let Z = z 1, z 2,..., z l Then Z is a subsequence of X if there exists a strictly
More informationWe augment RBTs to support operations on dynamic sets of intervals A closed interval is an ordered pair of real
14.3 Interval trees We augment RBTs to support operations on dynamic sets of intervals A closed interval is an ordered pair of real numbers ], with Interval ]represents the set Open and half-open intervals
More informationCMPS 102 Solutions to Homework 7
CMPS 102 Solutions to Homework 7 Kuzmin, Cormen, Brown, lbrown@soe.ucsc.edu November 17, 2005 Problem 1. 15.4-1 p.355 LCS Determine an LCS of x = (1, 0, 0, 1, 0, 1, 0, 1) and y = (0, 1, 0, 1, 1, 0, 1,
More informationLecture 22: Dynamic Programming
Lecture 22: Dynamic Programming COSC242: Algorithms and Data Structures Brendan McCane Department of Computer Science, University of Otago Dynamic programming The iterative and memoised algorithms for
More informationDesign and Analysis of Algorithms 演算法設計與分析. Lecture 7 April 15, 2015 洪國寶
Design and Analysis of Algorithms 演算法設計與分析 Lecture 7 April 15, 2015 洪國寶 1 Course information (5/5) Grading (Tentative) Homework 25% (You may collaborate when solving the homework, however when writing
More informationDesign and Analysis of Algorithms 演算法設計與分析. Lecture 7 April 6, 2016 洪國寶
Design and Analysis of Algorithms 演算法設計與分析 Lecture 7 April 6, 2016 洪國寶 1 Course information (5/5) Grading (Tentative) Homework 25% (You may collaborate when solving the homework, however when writing up
More informationChain Matrix Multiplication
Chain Matrix Multiplication Version of November 5, 2014 Version of November 5, 2014 Chain Matrix Multiplication 1 / 27 Outline Outline Review of matrix multiplication. The chain matrix multiplication problem.
More information16.Greedy algorithms
16.Greedy algorithms 16.1 An activity-selection problem Suppose we have a set S = {a 1, a 2,..., a n } of n proposed activities that with to use a resource. Each activity a i has a start time s i and a
More informationDynamic programming 4/9/18
Dynamic programming 4/9/18 Administrivia HW 3 due Wednesday night Exam out Thursday, due next week Multi-day takehome, open book, closed web, written problems Induction, AVL trees, recurrences, D&C, multithreaded
More informationPresentation for use with the textbook, Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, Dynamic Programming
Presentation for use with the textbook, Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, 25 Dynamic Programming Terrible Fibonacci Computation Fibonacci sequence: f = f(n) 2
More informationDEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK UNIT-III. SUB NAME: DESIGN AND ANALYSIS OF ALGORITHMS SEM/YEAR: III/ II PART A (2 Marks)
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK UNIT-III SUB CODE: CS2251 DEPT: CSE SUB NAME: DESIGN AND ANALYSIS OF ALGORITHMS SEM/YEAR: III/ II PART A (2 Marks) 1. Write any four examples
More informationLecture 6: Divide-and-Conquer
Lecture 6: Divide-and-Conquer COSC242: Algorithms and Data Structures Brendan McCane Department of Computer Science, University of Otago Types of Algorithms In COSC242, we will be looking at 3 general
More informationDynamic Programming: 1D Optimization. Dynamic Programming: 2D Optimization. Fibonacci Sequence. Crazy 8 s. Edit Distance
Dynamic Programming: 1D Optimization Fibonacci Sequence To efficiently calculate F [x], the xth element of the Fibonacci sequence, we can construct the array F from left to right (or bottom up ). We start
More informationIntroduction to Multithreaded Algorithms
Introduction to Multithreaded Algorithms CCOM5050: Design and Analysis of Algorithms Chapter VII Selected Topics T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to algorithms, 3 rd
More informationCS 170 DISCUSSION 8 DYNAMIC PROGRAMMING. Raymond Chan raychan3.github.io/cs170/fa17.html UC Berkeley Fall 17
CS 170 DISCUSSION 8 DYNAMIC PROGRAMMING Raymond Chan raychan3.github.io/cs170/fa17.html UC Berkeley Fall 17 DYNAMIC PROGRAMMING Recursive problems uses the subproblem(s) solve the current one. Dynamic
More informationDynamic Programming. Nothing to do with dynamic and nothing to do with programming.
Dynamic Programming Deliverables Dynamic Programming basics Binomial Coefficients Weighted Interval Scheduling Matrix Multiplication /1 Knapsack Longest Common Subsequence 6/12/212 6:56 PM copyright @
More informationToday: Matrix Subarray (Divide & Conquer) Intro to Dynamic Programming (Rod cutting) COSC 581, Algorithms January 21, 2014
Today: Matrix Subarray (Divide & Conquer) Intro to Dynamic Programming (Rod cutting) COSC 581, Algorithms January 21, 2014 Reading Assignments Today s class: Chapter 4.1, 15.1 Reading assignment for next
More information/463 Algorithms - Fall 2013 Solution to Assignment 3
600.363/463 Algorithms - Fall 2013 Solution to Assignment 3 (120 points) I (30 points) (Hint: This problem is similar to parenthesization in matrix-chain multiplication, except the special treatment on
More information- Main approach is recursive, but holds answers to subproblems in a table so that can be used again without re-computing
Dynamic Programming class 2 - Main approach is recursive, but holds answers to subproblems in a table so that can be used again without re-computing - Can be formulated both via recursion and saving in
More informationDivide and Conquer Algorithms
CSE341T 09/13/2017 Lecture 5 Divide and Conquer Algorithms We have already seen a couple of divide and conquer algorithms in this lecture. The reduce algorithm and the algorithm to copy elements of the
More informationComputer Sciences Department 1
1 Advanced Design and Analysis Techniques (15.1, 15.2, 15.3, 15.4 and 15.5) 3 Objectives Problem Formulation Examples The Basic Problem Principle of optimality Important techniques: dynamic programming
More informationDynamic Programming Algorithms
Dynamic Programming Algorithms Introduction In our study of divide-and-conquer algorithms, we noticed that a problem seemed conducive to a divide-and-conquer approach provided 1. it could be divided into
More informationScan and its Uses. 1 Scan. 1.1 Contraction CSE341T/CSE549T 09/17/2014. Lecture 8
CSE341T/CSE549T 09/17/2014 Lecture 8 Scan and its Uses 1 Scan Today, we start by learning a very useful primitive. First, lets start by thinking about what other primitives we have learned so far? The
More informationProblem Strategies. 320 Greedy Strategies 6
Problem Strategies Weighted interval scheduling: 2 subproblems (include the interval or don t) Have to check out all the possibilities in either case, so lots of subproblem overlap dynamic programming:
More informationMemoization/Dynamic Programming. The String reconstruction problem. CS124 Lecture 11 Spring 2018
CS124 Lecture 11 Spring 2018 Memoization/Dynamic Programming Today s lecture discusses memoization, which is a method for speeding up algorithms based on recursion, by using additional memory to remember
More informationECE608 - Chapter 15 answers
¼ À ÈÌ Ê ½ ÈÊÇ Ä ÅË ½µ ½ º¾¹¾ ¾µ ½ º¾¹ µ ½ º¾¹ µ ½ º ¹½ µ ½ º ¹¾ µ ½ º ¹ µ ½ º ¹¾ µ ½ º ¹ µ ½ º ¹ ½¼µ ½ º ¹ ½½µ ½ ¹ ½ ECE608 - Chapter 15 answers (1) CLR 15.2-2 MATRIX CHAIN MULTIPLY(A, s, i, j) 1. if
More informationDESIGN AND ANALYSIS OF ALGORITHMS (DAA 2017)
DESIGN AND ANALYSIS OF ALGORITHMS (DAA 2017) Veli Mäkinen Design and Analysis of Algorithms 2017 week 4 11.8.2017 1 Dynamic Programming Week 4 2 Design and Analysis of Algorithms 2017 week 4 11.8.2017
More informationAnalysis of Algorithms Prof. Karen Daniels
UMass Lowell Computer Science 91.503 Analysis of Algorithms Prof. Karen Daniels Spring, 2010 Lecture 2 Tuesday, 2/2/10 Design Patterns for Optimization Problems Greedy Algorithms Algorithmic Paradigm Context
More informationEfficient Sequential Algorithms, Comp309. Problems. Part 1: Algorithmic Paradigms
Efficient Sequential Algorithms, Comp309 Part 1: Algorithmic Paradigms University of Liverpool References: T. H. Cormen, C. E. Leiserson, R. L. Rivest Introduction to Algorithms, Second Edition. MIT Press
More informationF(0)=0 F(1)=1 F(n)=F(n-1)+F(n-2)
Algorithms Dana Shapira Lesson #4: Dynamic programming Fibonacci Series F()= F()= F(n)=F(n-)+F(n-) Write a Divide and Conquer Algorithm! What is its running time? Binomial Coefficients n! n = ( )! n! Recursive
More informationDynamic Programming Matrix-chain Multiplication
1 / 32 Dynamic Programming Matrix-chain Multiplication CS 584: Algorithm Design and Analysis Daniel Leblanc 1 1 Senior Adjunct Instructor Portland State University Maseeh College of Engineering and Computer
More informationA Revised Algorithm to find Longest Common Subsequence
A Revised Algorithm to find Longest Common Subsequence Deena Nath 1, Jitendra Kurmi 2, Deveki Nandan Shukla 3 1, 2, 3 Department of Computer Science, Babasaheb Bhimrao Ambedkar University Lucknow Abstract:
More informationLongest Common Subsequence, Knapsack, Independent Set Scribe: Wilbur Yang (2016), Mary Wootters (2017) Date: November 6, 2017
CS161 Lecture 13 Longest Common Subsequence, Knapsack, Independent Set Scribe: Wilbur Yang (2016), Mary Wootters (2017) Date: November 6, 2017 1 Overview Last lecture, we talked about dynamic programming
More informationProgramming Team Lecture: Dynamic Programming
Programming Team Lecture: Dynamic Programming Standard Algorithms to Know Computing Binomial Coefficients (Brassard 8.1) World Series Problem (Brassard 8.1) Making Change (Brassard 8.2) Knapsack (Brassard
More informationOutline. CS38 Introduction to Algorithms. Fast Fourier Transform (FFT) Fast Fourier Transform (FFT) Fast Fourier Transform (FFT)
Outline CS8 Introduction to Algorithms Lecture 9 April 9, 0 Divide and Conquer design paradigm matrix multiplication Dynamic programming design paradigm Fibonacci numbers weighted interval scheduling knapsack
More informationGreedy Algorithms. CLRS Chapters Introduction to greedy algorithms. Design of data-compression (Huffman) codes
Greedy Algorithms CLRS Chapters 16.1 16.3 Introduction to greedy algorithms Activity-selection problem Design of data-compression (Huffman) codes (Minimum spanning tree problem) (Shortest-path problem)
More informationEfficient Sequential Algorithms, Comp309. Motivation. Longest Common Subsequence. Part 3. String Algorithms
Efficient Sequential Algorithms, Comp39 Part 3. String Algorithms University of Liverpool References: T. H. Cormen, C. E. Leiserson, R. L. Rivest Introduction to Algorithms, Second Edition. MIT Press (21).
More informationModule 27: Chained Matrix Multiplication and Bellman-Ford Shortest Path Algorithm
Module 27: Chained Matrix Multiplication and Bellman-Ford Shortest Path Algorithm This module 27 focuses on introducing dynamic programming design strategy and applying it to problems like chained matrix
More informationDynamic Programmming: Activity Selection
Dynamic Programmming: Activity Selection Select the maximum number of non-overlapping activities from a set of n activities A = {a 1,, a n } (sorted by finish times). Identify easier subproblems to solve.
More informationDynamic Programming. An Enumeration Approach. Matrix Chain-Products. Matrix Chain-Products (not in book)
Matrix Chain-Products (not in book) is a general algorithm design paradigm. Rather than give the general structure, let us first give a motivating example: Matrix Chain-Products Review: Matrix Multiplication.
More information(Feodor F. Dragan) Department of Computer Science Kent State University. Advanced Algorithms, Feodor F. Dragan, Kent State University 1
$GYDQFH $OJRULWKPV (Feodor F. Dragan) Department of Computer Science Kent State University Advanced Algorithms, Feodor F. Dragan, Kent State University Textbook: Thomas Cormen, Charles Leisterson, Ronald
More informationCS 4349 Lecture September 13th, 2017
CS 4349 Lecture September 13th, 2017 Main topics for #lecture include #dynamic_programming, #Fibonacci_numbers, and #rod_cutting. Prelude Homework 2 due today in class. Homework 3 released, due next Wednesday
More informationDynamic Programming in Haskell
Dynamic Programming in Haskell Thomas Sutton, Anchor 2015-05-27 Introduction Introduction This is a talk in two parts: 1. First I ll introduce dynamic programming and a framework for implementing DP algorithms
More informationGreedy Algorithms. Informal Definition A greedy algorithm makes its next step based only on the current state and simple calculations on the input.
Greedy Algorithms Informal Definition A greedy algorithm makes its next step based only on the current state and simple calculations on the input. easy to design not always correct challenge is to identify
More informationLecture 57 Dynamic Programming. (Refer Slide Time: 00:31)
Programming, Data Structures and Algorithms Prof. N.S. Narayanaswamy Department of Computer Science and Engineering Indian Institution Technology, Madras Lecture 57 Dynamic Programming (Refer Slide Time:
More informationLongest Common Subsequence. Definitions
Longest Common Subsequence LCS is an interesting variation on the classical string matching problem: the task is that of finding the common portion of two strings (more precise definition in a couple of
More informationCMSC 451: Lecture 10 Dynamic Programming: Weighted Interval Scheduling Tuesday, Oct 3, 2017
CMSC 45 CMSC 45: Lecture Dynamic Programming: Weighted Interval Scheduling Tuesday, Oct, Reading: Section. in KT. Dynamic Programming: In this lecture we begin our coverage of an important algorithm design
More informationWrite an algorithm to find the maximum value that can be obtained by an appropriate placement of parentheses in the expression
Chapter 5 Dynamic Programming Exercise 5.1 Write an algorithm to find the maximum value that can be obtained by an appropriate placement of parentheses in the expression x 1 /x /x 3 /... x n 1 /x n, where
More informationWeek 11: Minimum Spanning trees
Week 11: Minimum Spanning trees Agenda: Minimum Spanning Trees Prim s Algorithm Reading: Textbook : 61-7 1 Week 11: Minimum Spanning trees Minimum spanning tree (MST) problem: Input: edge-weighted (simple,
More informationAttendance (2) Performance (3) Oral (5) Total (10) Dated Sign of Subject Teacher
Attendance (2) Performance (3) Oral (5) Total (10) Dated Sign of Subject Teacher Date of Performance:... Actual Date of Completion:... Expected Date of Completion:... ----------------------------------------------------------------------------------------------------------------
More informationDynamic Programming Assembly-Line Scheduling. Greedy Algorithms
Chapter 13 Greedy Algorithms Activity Selection Problem 0-1 Knapsack Problem Huffman Code Construction Dynamic Programming Assembly-Line Scheduling C-C Tsai P.1 Greedy Algorithms A greedy algorithm always
More informationChapter 15-1 : Dynamic Programming I
Chapter 15-1 : Dynamic Programming I About this lecture Divide-and-conquer strategy allows us to solve a big problem by handling only smaller sub-problems Some problems may be solved using a stronger strategy:
More information