Lecture 8. Dynamic Programming
|
|
- Iris Webster
- 5 years ago
- Views:
Transcription
1 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 Copyright Networking Laboratory
2 Dynamic Programming Dynamic programming solves optimization problems by combining solutions to subproblems Programming refers to a tabular method with a series of choices, not coding Recall the divide-and-conquer approach Partition the problem into independent subproblems Solve the subproblems recursively Combine solutions of subproblems Dynamic programming is applicable when subproblems are not independent i.e., subproblems share subsubproblems Solve every subsubproblem only once and store the answer for use when it reappears A divide-and-conquer approach will do more work than necessary Algorithms Networking Laboratory 2/36
3 Dynamic Programming Solution 4 Steps 1. Characterize the structure of an optimal solution 2. Recursively define the value of an optimal solution 3. Compute the value of an optimal solution in a bottom-up fashion 4. Construct an optimal solution from computed information Algorithms Networking Laboratory 3/36
4 Matrix Multiplication Matrix multiplication Two matrices A and B can be multiplied The number of columns of A must equal the number of rows of B A(pq) x B(qr) C(pr) The number of scalar multiplication is pqr For an pq matrix A and a qr matrix B, the product AB is the pr matrix AB C [ c i, j ] pr q k1 a i, k b k, j pr Algorithms Networking Laboratory 4/36
5 Matrix Multiplication Algorithms Networking Laboratory 5/36
6 Matrix Multiplication Matrix multiplication Algorithms Networking Laboratory 6/36
7 Matrix-Chain Multiplication Matrix multiplication A(pq) x B(qr) C(pr) The number of scalar multiplication is pqr e.g. < A 1 (10100), A 2 (1005), A 3 (550) > ((A 1 A 2 )A 3 ) 10x100x5 + 10x5x50 = = 7,500 (A 1 (A 2 A 3 )) 100x5x x100x50 = = 75, times faster Given a sequence (chain) <A 1, A 2,, A n > of n matrices to be multiplied, where i=1,2,, n, matrix A i has dimension p i-1 p i, fully parenthesize the product A 1 A 2 A n in a way that minimizes the number of scalar multiplications Determine an order for multiplying matrices that has the lowest cost Algorithms Networking Laboratory 7/36
8 Matrix-Chain Multiplication Determine an order for multiplying matrices that has the lowest cost Counting the number of parenthesizations A 1 A 2 A k A k+1 A n-1 A n 1 if n 1 P( n) n1 ( 2 P( k) P( n k) if n 2 n ) k 1 Exercise on page 338 Impractical to check all possible parenthesizations Algorithms Networking Laboratory 8/36
9 Step 1 The structure of an optimal parenthesization Notation: A i..j Result from evaluating A i A i+1 A j (i < j) Any parenthesization of A i A i+1 A j must split the product between A k and A k+1 for some integer k in the range i k < j The cost of this parenthesization cost of computing A i..k + cost of computing A k+1..j + cost of multiplying A i..k and A k+1..j together Algorithms Networking Laboratory 9/36
10 Step 1 Suppose that an optimal parenthesization of A i A i+1 A j splits the product between A k and A k+1 The parenthesization of the prefix sub-chain A i A i+1 A k must be an optimal parenthesization of A i A i+1 A j The parenthesization of the prefix sub-chain A k+1 A i+1 A j must be an optimal parenthesization of A i A i+1 A j That is, the optimal solution to the problem contains within it the optimal solution to subproblems Algorithms Networking Laboratory 10/36
11 Step 1 Minimal Cost_A Cost_A p 0 p 6 p 9 A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 Suppose ((A 1 A 2 )(A 3 ((A 4 A 5 )A 6 ))) ((A 7 A 8 )A 9 ) is optimal Then (A 1 A 2 ) (A 3 ((A 4 A 5 )A 6 )) must be optimal for A 1 A 2 A 3 A 4 A 5 A 6 Otherwise, if (A 1 (A 2 A 3 )) ((A 4 A 5 )A 6 ) is optimal for A 1 A 2 A 3 A 4 A 5 A 6 Then ((A 1 (A 2 A 3 )) ((A 4 A 5 )A 6 )) ((A 7 A 8 )A 9 ) will be better than ((A 1 A 2 )(A 3 ((A 4 A 5 )A 6 ))) ((A 7 A 8 )A 9 ) Contradiction! Algorithms Networking Laboratory 11/36
12 Step 2 A Recursive Solution Subproblem m[i, j] Determine the minimum cost of a parenthesization of A i A i+1 A j (1 i j n) the minimum number of scalar multiplications needed to compute the matrix A i..j m[i, j] = m[i, k] + m[k+1, j] + p i-1 p k p j However, we do not know the value of k (=s[i,j]), so we have to try all j-i possibilities 0 m[ i, j] min { m[ i, k] m[ k 1, j]} pi pk p 1 ik j A recursive solution takes exponential time j if if i j i j Algorithms Networking Laboratory 12/36
13 Step 3 Computing the optimal costs How much subproblems in total? One for each choice of i and j satisfying 1 i j n (n 2 ) MATRIX-CHAIN-ORDER(p) Input: a sequence p = < p 0, p 1, p 2,, p n > (length[p] = n+1) Try to fill in the table m in a manner that corresponds to solving the parenthesization problem on matrix chains of increasing length Lines 4-12: compute m[i, i+1], m[i, i+2], each time Algorithms Networking Laboratory 13/36
14 Step 3 e.g. < A 1 (83), A 2 (35), A 3 (510) > m 12 = 8x3x5 = 120 m 23 = 3x5x10 = 150 m 13 = 390 m 11 + m 23 + p 0 p 1 p 3 = x3x10 = 390 m 12 + m 33 + p 0 p 2 p 3 = x5x10 = 520 j i 2 3 m s j 1 2 i Algorithms Networking Laboratory 14/36
15 Step 3 O(n 3 ), (n 3 ) (n 3 ) running time (n 2 ) space Algorithms Networking Laboratory 15/36
16 l =3 l = 2 35x15x5= x20x25 =5000 m[3,5] = min m[3,4]+m[5,5] + 15x10x20 = = 3750 m[3,3]+m[4,5] + 15x5x20 = = 2500 Algorithms Networking Laboratory 16/30
17 Step 4 Constructing an optimal solution Each entry s[i, j] records the value of k such that the optimal parenthesization of A i A i+1 A j splits the product between A k and A k+1 A 1..n A 1..s[1..n] A s[1..n]+1..n A 1..s[1..n] A 1..s[1, s[1..n]] A s[1, s[1..n]]+1..s[1..n] Recursive Algorithms Networking Laboratory 17/36
18 Step 4 Constructing an optimal solution ( A 1 ( A 2 A 3 ) ) ( ( A 4 A 5 ) A 6 ) Algorithms Networking Laboratory 18/36
19 Elements of Dynamic Programming Optimal substructure If an optimal solution contains within it optimal solutions to subproblems Build an optimal solution from optimal solutions to subproblems Example Matrix-chain multiplication An optimal parenthesization of A i A i+1 A j that splits the product between A k and A k+1 contains within it optimal solutions to the problem of parenthesizing A i A i+1 A k and A k+1 A k+2 A j Algorithms Networking Laboratory 19/36
20 Elements of Dynamic Programming Overlapping subproblems The space of subproblems must be small in the sense that a recursive algorithm for the problem solves the same subproblems over and over, rather than always generating new subproblems Typically, the total number of distinct subproblems is a polynomial in the input size Divide-and-Conquer is suitable usually generate brand-new problems at each step of the recursion Algorithms Networking Laboratory 20/36
21 Characteristics of Optimal Substructure How many subproblems are used in an optimal solution to the original problem? Matrix-Chain scheduling 2 (A 1 A 2 A k and A k+1 A k+2 A j ) How may choice we have in determining which subproblems to use in an optimal solution? Matrix-chain scheduling: j - i (choice for k) Informally, the running time of a dynamic-programming algorithm relies on: the number of subproblems overall and how many choices we look at for each subproblem Matrix-Chain scheduling: (n 2 ) * O(n) = O(n 3 ) Algorithms Networking Laboratory 21/36
22 Overlapping Subproblems Algorithms Networking Laboratory 22/36
23 Overlapping Subproblems m[3,4] is computed twice Algorithms Networking Laboratory 23/36
24 Algorithms Networking Laboratory 24/36 Recursive Procedure for Matrix-Chain Multiplication The time to compute m[1,n] is at least exponential in n Prove T(n) = (2 n ) using the substitution method Show that T(n) 2 n ) ( 2 ) ( 1) ) ( ) ( ( 1 ) ( 1 (1) n i n k n i T n T k n T k T n T T ) (2 1) 2( ) ( n n n n i i n i i n n n n n T
25 Memoization A variation of dynamic programming that often offers the efficiency of the usual dynamic programming approach while maintaining a top-down strategy Memoize the natural, but inefficient, recursive algorithm Maintain a table with subproblem solutions, but the control structure for filling in the table is more like the recursive algorithm Memoization for matrix-chain multiplication Calls in which m[i, j] = (n 2 ) calls Calls in which m[i, j] < O(n 3 ) calls Turns an (2 n )-time into an O(n 3 )-time algorithm Algorithms Networking Laboratory 25/36
26 Memoization Algorithms Networking Laboratory 26/36
27 Lookup-Chain(p, i, j) if m[i, j] < if i=j then return m[i, j] then m[i, j] 0 else for k i to j-1 return m[i, j] do qlookup-chain(p, i, k) + LOOKUP-CHAIN(p, k+1, j) + p i-1 p k p j if q < m[i, j] then m[i, j] q Algorithms Networking Laboratory 27/36
28 Lookup-Chain(p, i, j) Algorithms Networking Laboratory 28/36
29 Dynamic Programming vs. Memoization If all subproblems must be solved at least once, a bottom-up dynamic-programming algorithm usually outperforms a top-down memoized algorithm by a constant factor No overhead for recursion and less overhead for maintaining table There are some problems for which the regular pattern of table acces ses in the dynamic programming algorithm can be exploited to reduce the time or space requirements even further Algorithms Networking Laboratory 29/36
30 Self-Study Two more dynamic-programming problems Section 15.4 Longest Common Subsequence Section 15.5 Optimal Binary Search Trees Algorithms Networking Laboratory 30/36
31 Longest Common Subsequence (LCS) Problem: Given two sequences X=<x 1,,x m > and Y=<y 1,,y n >, find the longest subsequence Z=<z 1,,z k > that is common to X and Y. A subsequence is a subset of elements from the sequence with strictly increasing order (not necessarily contiguous) There are 2 m subsequences of X checking all subsequences is impractical for long sequences Example: X=<A,B,C,B,D,A,B> and Y=<B,D,C,A,B,A> Common subsequences: <A>; <B>; <C>; <D>; <A, A>; <B, B>; <B, C, A>; <B, C, B>; <C, B, A>; etc. The longest common subsequences: <B, C, B, A>; <B, D, A, B> Algorithms Networking Laboratory 31/36
32 Step 1: Optimal Structure of an LCS Let X=<x 1,,x m > and Y=<y 1,,y n > be sequences, and let Z=<z 1,,z k > be any LCS of X and Y. If x m = y n, then z k = x m = y n and Z k-1 is an LCS of X m-1 and Y n-1. If x m y n, then z k x m implies that Z is an LCS of X m-1 and Y. If x m y n, then z k y n implies that Z is an LCS of X and Y n-1. Algorithms Networking Laboratory 32/36
33 Step 2: Recursive Solution (1/2) Overlapping-subproblems Algorithms Networking Laboratory 33/36
34 Step 2: Recursive Solution (2/2) Define c[i, j] = length of LCS for X i and Y j Algorithms Networking Laboratory 34/36
35 Step 3: Computing the length of an LCS b[i, j] points to the table entry corresponding to the optimal subproblem solution chosen when computing c[i, j] LCS-LENGTH(X, Y) is O(mn) Algorithms Networking Laboratory 35/36
36 Step 4: Constructing an LCS PRINT-LCS(b, X, i, j) is O(m+n) Algorithms Networking Laboratory 36/36
CS473-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 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. 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 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 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 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 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 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 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 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 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 informationHomework3: Dynamic Programming - Answers
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)
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 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 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 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 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 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 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 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 informationIntroduction 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 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 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 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 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 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 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 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 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 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 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 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 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 informationDynamic Programming Shabsi Walfish NYU - Fundamental Algorithms Summer 2006
Dynamic Programming What is Dynamic Programming? Technique for avoiding redundant work in recursive algorithms Works best with optimization problems that have a nice underlying structure Can often be used
More informationAlgorithms: Dynamic Programming
Algorithms: Dynamic Programming Amotz Bar-Noy CUNY Spring 2012 Amotz Bar-Noy (CUNY) Dynamic Programming Spring 2012 1 / 58 Dynamic Programming General Strategy: Solve recursively the problem top-down based
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 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 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 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 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 information15.4 Longest common subsequence
15.4 Longest common subsequence Biological applications often need to compare the DNA of two (or more) different organisms A strand of DNA consists of a string of molecules called bases, where the possible
More informationECE608 - Chapter 15 answers
¼ À ÈÌ Ê ½ ÈÊÇ Ä ÅË ½µ ½ º¾¹¾ ¾µ ½ º¾¹ µ ½ º¾¹ µ ½ º ¹½ µ ½ º ¹¾ µ ½ º ¹ µ ½ º ¹¾ µ ½ º ¹ µ ½ º ¹ ½¼µ ½ º ¹ ½½µ ½ ¹ ½ ECE608 - Chapter 15 answers (1) CLR 15.2-2 MATRIX CHAIN MULTIPLY(A, s, i, j) 1. if
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 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 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 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 information15.4 Longest common subsequence
15.4 Longest common subsequence Biological applications often need to compare the DNA of two (or more) different organisms A strand of DNA consists of a string of molecules called bases, where the possible
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 informationAlgorithms: COMP3121/3821/9101/9801
NEW SOUTH WALES Algorithms: COMP3121/3821/9101/9801 Aleks Ignjatović School of Computer Science and Engineering University of New South Wales TOPIC 5: DYNAMIC PROGRAMMING COMP3121/3821/9101/9801 1 / 38
More informationAlgorithms IV. Dynamic Programming. Guoqiang Li. School of Software, Shanghai Jiao Tong University
Algorithms IV Dynamic Programming Guoqiang Li School of Software, Shanghai Jiao Tong University Dynamic Programming Shortest Paths in Dags, Revisited Shortest Paths in Dags, Revisited The special distinguishing
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 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 informationDynamic Programming. December 15, CMPE 250 Dynamic Programming December 15, / 60
Dynamic Programming December 15, 2016 CMPE 250 Dynamic Programming December 15, 2016 1 / 60 Why Dynamic Programming Often recursive algorithms solve fairly difficult problems efficiently BUT in other cases
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 informationOptimization II: Dynamic Programming
Chapter 12 Optimization II: Dynamic Programming In the last chapter, we saw that greedy algorithms are efficient solutions to certain optimization problems. However, there are optimization problems for
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 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 演算法設計與分析. 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 informationLecture 1. Introduction / Insertion Sort / Merge Sort
Lecture 1. Introduction / Insertion Sort / Merge Sort T. H. Cormen, C. E. Leiserson and R. L. Rivest Introduction to Algorithms, 3nd Edition, MIT Press, 2009 Sungkyunkwan University Hyunseung Choo choo@skku.edu
More informationAlgorithmic Paradigms. Chapter 6 Dynamic Programming. Steps in Dynamic Programming. Dynamic Programming. Dynamic Programming Applications
lgorithmic Paradigms reed. Build up a solution incrementally, only optimizing some local criterion. hapter Dynamic Programming Divide-and-conquer. Break up a problem into two sub-problems, solve each sub-problem
More informationCSE 373 Analysis of Algorithms, Fall Homework #3 Solutions Due Monday, October 18, 2003
Piyush Kumar CSE 373 Analysis of Algorithms, Fall 2003 Homework #3 Solutions Due Monday, October 18, 2003 Problem 1 Find an optimal parenthesization of a matrix chain product whose sequence of dimensions
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 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 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 informationCMSC351 - Fall 2014, Homework #4
CMSC351 - Fall 2014, Homework #4 Due: November 14th at the start of class PRINT Name: Grades depend on neatness and clarity. Write your answers with enough detail about your approach and concepts used,
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 informationIntroduction to Algorithms
Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein Introduction to Algorithms Second Edition The MIT Press Cambridge, Massachusetts London, England McGraw-Hill Book Company Boston Burr
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 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 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 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 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 informationIntroduction to Algorithms I
Summer School on Algorithms and Optimization Organized by: ACM Unit, ISI and IEEE CEDA. Tutorial II Date: 05.07.017 Introduction to Algorithms I (Q1) A binary tree is a rooted tree in which each node has
More informationAlgorithms for Data Science
Algorithms for Data Science CSOR W4246 Eleni Drinea Computer Science Department Columbia University Thursday, October 1, 2015 Outline 1 Recap 2 Shortest paths in graphs with non-negative edge weights (Dijkstra
More informationFramework for Design of Dynamic Programming Algorithms
CSE 441T/541T Advanced Algorithms September 22, 2010 Framework for Design of Dynamic Programming Algorithms Dynamic programming algorithms for combinatorial optimization generalize the strategy we studied
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 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 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 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 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 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 informationDynamic Programming. Outline and Reading. Computing Fibonacci
Dynamic Programming Dynamic Programming version 1.2 1 Outline and Reading Matrix Chain-Product ( 5.3.1) The General Technique ( 5.3.2) -1 Knapsac Problem ( 5.3.3) Dynamic Programming version 1.2 2 Computing
More informationTutorial 6-7. Dynamic Programming and Greedy
Tutorial 6-7 Dynamic Programming and Greedy Dynamic Programming Why DP? Natural Recursion may be expensive. For example, the Fibonacci: F(n)=F(n-1)+F(n-2) Recursive implementation memoryless : time= 1
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 informationLecture 3. Recurrences / Heapsort
Lecture 3. Recurrences / Heapsort 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
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 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 informationCS173 Longest Increasing Substrings. Tandy Warnow
CS173 Longest Increasing Substrings Tandy Warnow CS 173 Longest Increasing Substrings Tandy Warnow Today s material The Longest Increasing Subsequence problem DP algorithm for finding a longest increasing
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 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 informationCSC 373: Algorithm Design and Analysis Lecture 8
CSC 373: Algorithm Design and Analysis Lecture 8 Allan Borodin January 23, 2013 1 / 19 Lecture 8: Announcements and Outline Announcements No lecture (or tutorial) this Friday. Lecture and tutorials as
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 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 informationMore Dynamic Programming
CS 374: Algorithms & Models of Computation, Fall 2015 More Dynamic Programming Lecture 12 October 8, 2015 Chandra & Manoj (UIUC) CS374 1 Fall 2015 1 / 43 What is the running time of the following? Consider
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 informationUML CS Algorithms Qualifying Exam Fall, 2003 ALGORITHMS QUALIFYING EXAM
NAME: This exam is open: - books - notes and closed: - neighbors - calculators ALGORITHMS QUALIFYING EXAM The upper bound on exam time is 3 hours. Please put all your work on the exam paper. (Partial credit
More informationIntroduction to Algorithms
Introduction to Algorithms, Lecture 1 /1/200 Introduction to Algorithms.04J/1.401J LECTURE 11 Graphs, MST, Greedy, Prim Graph representation Minimum spanning trees Greedy algorithms hallmarks. Greedy choice
More informationRecursive-Fib(n) if n=1 or n=2 then return 1 else return Recursive-Fib(n-1)+Recursive-Fib(n-2)
Dynamic Programming Any recursive formula can be directly translated into recursive algorithms. However, sometimes the compiler will not implement the recursive algorithm very efficiently. When this is
More information