Lecture 8: Dynamic Programming Shang-Hua Teng. Longest Common Subsequence Biologists need to measure how similar strands of DNA are to determine how closely.

Slides:



Advertisements
Similar presentations
Dynamic Programming.
Advertisements

CPSC 335 Dynamic Programming Dr. Marina Gavrilova Computer Science University of Calgary Canada.
Overview What is Dynamic Programming? A Sequence of 4 Steps
Algorithms Dynamic programming Longest Common Subsequence.
COMP8620 Lecture 8 Dynamic Programming.
CS Section 600 CS Section 002 Dr. Angela Guercio Spring 2010.
CS420 Lecture 9 Dynamic Programming. Optimization Problems In optimization problems a set of choices are to be made to arrive at an optimum, and sub problems.
David Luebke 1 5/4/2015 CS 332: Algorithms Dynamic Programming Greedy Algorithms.
Introduction to Algorithms
1 Dynamic Programming (DP) Like divide-and-conquer, solve problem by combining the solutions to sub-problems. Differences between divide-and-conquer and.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 11.
1 Longest Common Subsequence (LCS) Problem: Given sequences x[1..m] and y[1..n], find a longest common subsequence of both. Example: x=ABCBDAB and y=BDCABA,
Data Structures Lecture 10 Fang Yu Department of Management Information Systems National Chengchi University Fall 2010.
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Fall, 2006 Lecture 1 (Part 3) Design Patterns for Optimization Problems.
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Spring, 2002 Lecture 2 Tuesday, 2/5/02 Dynamic Programming.
Dynamic Programming Reading Material: Chapter 7..
Dynamic Programming CIS 606 Spring 2010.
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Spring, 2009 Design Patterns for Optimization Problems Dynamic Programming.
Dynamic Programming Code
Dynamic Programming Dynamic Programming algorithms address problems whose solution is recursive in nature, but has the following property: The direct implementation.
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Fall, 2002 Lecture 1 (Part 3) Tuesday, 9/3/02 Design Patterns for Optimization.
Analysis of Algorithms CS 477/677
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Spring, 2008 Design Patterns for Optimization Problems Dynamic Programming.
November 7, 2005Copyright © by Erik D. Demaine and Charles E. Leiserson Dynamic programming Design technique, like divide-and-conquer. Example:
Dynamic Programming Reading Material: Chapter 7 Sections and 6.
© 2004 Goodrich, Tamassia Dynamic Programming1. © 2004 Goodrich, Tamassia Dynamic Programming2 Matrix Chain-Products (not in book) Dynamic Programming.
Lecture 8: Dynamic Programming Shang-Hua Teng. First Example: n choose k Many combinatorial problems require the calculation of the binomial coefficient.
Analysis of Algorithms
1 Dynamic Programming Jose Rolim University of Geneva.
Lecture 7 Topics Dynamic Programming
Longest Common Subsequence
Dynamic Programming Introduction to Algorithms Dynamic Programming CSE 680 Prof. Roger Crawfis.
1 Dynamic Programming 2012/11/20. P.2 Dynamic Programming (DP) Dynamic programming Dynamic programming is typically applied to optimization problems.
First Ingredient of Dynamic Programming
Algorithms and Data Structures Lecture X
Dynamic Programming UNC Chapel Hill Z. Guo.
October 21, Algorithms and Data Structures Lecture X Simonas Šaltenis Nykredit Center for Database Research Aalborg University
Dynamic Programming. Well known algorithm design techniques:. –Divide-and-conquer algorithms Another strategy for designing algorithms is dynamic programming.
ADA: 7. Dynamic Prog.1 Objective o introduce DP, its two hallmarks, and two major programming techniques o look at two examples: the fibonacci.
COSC 3101A - Design and Analysis of Algorithms 7 Dynamic Programming Assembly-Line Scheduling Matrix-Chain Multiplication Elements of DP Many of these.
CS 8833 Algorithms Algorithms Dynamic Programming.
Greedy Methods and Backtracking Dr. Marina Gavrilova Computer Science University of Calgary Canada.
6/4/ ITCS 6114 Dynamic programming Longest Common Subsequence.
COSC 3101A - Design and Analysis of Algorithms 8 Elements of DP Memoization Longest Common Subsequence Greedy Algorithms Many of these slides are taken.
Introduction to Algorithms Jiafen Liu Sept
Computer Sciences Department1.  Property 1: each node can have up to two successor nodes (children)  The predecessor node of a node is called its.
Chapter 15 Dynamic Programming Lee, Hsiu-Hui Ack: This presentation is based on the lecture slides from Hsu, Lih-Hsing, as well as various materials from.
CSC 213 Lecture 19: Dynamic Programming and LCS. Subsequences (§ ) A subsequence of a string x 0 x 1 x 2 …x n-1 is a string of the form x i 1 x.
9/27/10 A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne Adam Smith Algorithm Design and Analysis L ECTURE 16 Dynamic.
TU/e Algorithms (2IL15) – Lecture 4 1 DYNAMIC PROGRAMMING II
CS583 Lecture 12 Jana Kosecka Dynamic Programming Longest Common Subsequence Matrix Chain Multiplication Greedy Algorithms Many slides here are based on.
Dynamic Programming Typically applied to optimization problems
Least common subsequence:
Chapter 8 Dynamic Programming.
Dynamic Programming.
CS Algorithms Dynamic programming 0-1 Knapsack problem 12/5/2018.
Dynamic Programming Dr. Yingwu Zhu Chapter 15.
CS 3343: Analysis of Algorithms
CS6045: Advanced Algorithms
Longest Common Subsequence
Lecture 8. Paradigm #6 Dynamic Programming
Introduction to Algorithms: Dynamic Programming
Longest Common Subsequence
Dynamic Programming II DP over Intervals
Longest common subsequence (LCS)
Analysis of Algorithms CS 477/677
Longest Common Subsequence
Analysis of Algorithms CS 477/677
Algorithm Course Dr. Aref Rashad
Presentation transcript:

Lecture 8: Dynamic Programming Shang-Hua Teng

Longest Common Subsequence Biologists need to measure how similar strands of DNA are to determine how closely related an organism is to another. They do this by considering DNA as strings of letters A,C,G,T and then comparing similarities in the strings. Formally they look at common subsequences in the strings. Example X = AGTCAACGTT, Y=GTTCGACTGTG Both S = AGTG and S’=GTCACGT are subsequences How to do find these efficiently?

Brute Force if |X| = m, |Y| = n, then there are 2 m subsequences of x; we must compare each with Y (n comparisons) So the running time of the brute-force algorithm is O(n 2 m ) Notice that the LCS problem has optimal substructure: solutions of subproblems are parts of the final solution. Subproblems: “find LCS of pairs of prefixes of X and Y”

Some observations

Setup First we’ll find the length of LCS, along the way we will leave “clues” on finding subsequence. Define X i, Y j to be the prefixes of X and Y of length i and j respectively. Define c[i,j] to be the length of LCS of X i and Y j Then the length of LCS of X and Y will be c[m,n]

The recurrence The subproblems overlap, to find LCS we need to find LCS of c[i, j-1] and of c[i-1, j]

LCS Algorithm First we’ll find the length of LCS. Later we’ll modify the algorithm to find LCS itself. Recall we want to let X i, Y j to be the prefixes of X and Y of length i and j respectively And that Define c[i,j] to be the length of LCS of X i and Y j Then the length of LCS of X and Y will be c[m,n]

LCS recursive solution We start with i = j = 0 (empty substrings of x and y) Since X 0 and Y 0 are empty strings, their LCS is always empty (i.e. c[0,0] = 0) LCS of empty string and any other string is empty, so for every i and j: c[0, j] = c[i,0] = 0

LCS recursive solution When we calculate c[i,j], we consider two cases: First case: x[i]=y[j]: one more symbol in strings X and Y matches, so the length of LCS X i and Y j equals to the length of LCS of smaller strings X i-1 and Y i-1, plus 1

LCS recursive solution Second case: x[i] != y[j] As symbols don’t match, our solution is not improved, and the length of LCS(X i, Y j ) is the same as before (i.e. maximum of LCS(X i, Y j-1 ) and LCS(X i-1,Y j )

LCS Example We’ll see how LCS algorithm works on the following example: X = ABCB Y = BDCAB LCS(X, Y) = BCB X = A B C B Y = B D C A B What is the Longest Common Subsequence of X and Y?

LCS Example (0) j i Xi A B C B YjBBACD X = ABCB; m = |X| = 4 Y = BDCAB; n = |Y| = 5 Allocate array c[6,5]

LCS Example (1) j i Xi A B C B YjBBACD for i = 1 to m c[i,0] = 0

LCS Example (2) j i Xi A B C B YjBBACD for j = 0 to n c[0,j] = 0

LCS Example (3) j i Xi A B C B YjBBACD case i=1 and j=1 A != B but, c[0,1]>=c[1,0] so c[1,1] = c[0,1], and b[1,1] =

LCS Example (4) j i Xi A B C B YjBBACD case i=1 and j=2 A != D but, c[0,2]>=c[1,1] so c[1,2] = c[0,2], and b[1,2] = 0

LCS Example (5) j i Xi A B C B YjBBACD case i=1 and j=3 A != C but, c[0,3]>=c[1,2] so c[1,3] = c[0,3], and b[1,3] = 00

LCS Example (6) j i Xi A B C B YjBBACD case i=1 and j=4 A = A so c[1,4] = c[0,2]+1, and b[1,4] =

LCS Example (7) j i Xi A B C B YjBBACD case i=1 and j=5 A != B this time c[0,5]<c[1,4] so c[1,5] = c[1, 4], and b[1,5] =

LCS Example (8) j i Xi A B C B YjBBACD case i=2 and j=1 B = B so c[2, 1] = c[1, 0]+1, and b[2, 1] =

LCS Example (9) j i Xi A B C B YjBBACD case i=2 and j=2 B != D and c[1, 2] < c[2, 1] so c[2, 2] = c[2, 1] and b[2, 2] = 1

LCS Example (10) j i Xi A B C B YjBBACD case i=2 and j=3 B != D and c[1, 3] < c[2, 2] so c[2, 3] = c[2, 2] and b[2, 3] = 11

LCS Example (11) j i Xi A B C B YjBBACD case i=2 and j=4 B != A and c[1, 4] = c[2, 3] so c[2, 4] = c[1, 4] and b[2, 2] = 111

LCS Example (12) j i Xi A B C B YjBBACD case i=2 and j=5 B = B so c[2, 5] = c[1, 4]+1 and b[2, 5] = 1112

LCS Example (13) j i Xi A B C B YjBBACD case i=3 and j=1 C != B and c[2, 1] > c[3,0] so c[3, 1] = c[2, 1] and b[3, 1] =

LCS Example (14) j i Xi A B C B YjBBACD case i=3 and j= 2 C != D and c[2, 2] = c[3, 1] so c[3, 2] = c[2, 2] and b[3, 2] =

LCS Example (15) j i Xi A B C B YjBBACD case i=3 and j= 3 C = C so c[3, 3] = c[2, 2]+1 and b[3, 3] =

LCS Example (16) j i Xi A B C B YjBBACD case i=3 and j= 4 C != A c[2, 4] < c[3, 3] so c[3, 4] = c[3, 3] and b[3, 3] =

LCS Example (17) j i Xi A B C B YjBBACD case i=3 and j= 5 C != B c[2, 5] = c[3, 4] so c[3, 5] = c[2, 5] and b[3, 5] =

LCS Example (18) j i Xi A B C B YjBBACD case i=4 and j=1 B = B so c[4, 1] = c[3, 0]+1 and b[4, 1] =

LCS Example (19) j i Xi A B C B YjBBACD case i=4 and j=2 B != D c[3, 2] = c[4, 1] so c[4, 2] = c[3, 2] and b[4, 2] =

LCS Example (20) j i Xi A B C B YjBBACD case i=4 and j= 3 B != C c[3, 3] > c[4, 2] so c[4, 3] = c[3, 3] and b[4, 3] =

LCS Example (21) j i Xi A B C B YjBBACD case i=4 and j=4 B != A c[3, 4] = c[4, 3] so c[4, 4] = c[3, 4] and b[3, 5] =

LCS Example (22) j i Xi A B C B YjBBACD case i=4 and j=5 B= B so c[4, 5] = c[3, 4]+1 and b[4, 5] =

LCS Algorithm Running Time LCS algorithm calculates the values of each entry of the array c[m,n] So the running time is clearly O(mn) as each entry is done in 3 steps. Now how to get at the solution? We use the arrows we created to guide us. We simply follow arrows back to base case 0

Finding LCS j i Xi A B C YjBBACD B

Finding LCS (2) j i Xi A B C YjBBACD B BCB LCS (reversed order): LCS (straight order):B C B (this string turned out to be a palindrome)

LCS-Length(X, Y) m = length(X), n = length(Y) for i = 1 to m do c[i, 0] = 0 for j = 0 to n do c[0, j] = 0 for i = 1 to m do for j = 1 to n do if ( x i = = y j ) then c[i, j] = c[i - 1, j - 1] + 1 else if c[i - 1, j]>=c[i, j - 1] then c[i, j] = c[i - 1, j] else c[i, j] = c[i, j - 1] return c and b

Two Common Issues  Optimal substructure  Overlapping subproblems

Optimal Substructure A problem exhibits optimal substructure if an optimal solution contains optimal solutions to its sub-problems. Build an optimal solution from optimal solutions to sub- problems 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.

Illustration of Optimal Substructure A1A2A3A4A5A6A7A8A9 A1A2A3A4A5A6A7A8A9 Suppose ((A 7 A 8 )A 9 )is optimal((A 1 A 2 )(A 3 ((A 4 A 5 )A 6 ))) Minimal Cost_A Cost_A p 0 p 6 p 9 (A 3 ((A 4 A 5 )A 6 ))(A1A2)(A1A2)Thenmust be optimal for A 1 A 2 A 3 A 4 A 5 A 6 Otherwise, if((A 4 A 5 )A 6 )(A 1 (A 2 A 3 ))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 7 A 8 )A 9 )((A 1 A 2 )(A 3 ((A 4 A 5 )A 6 )))

Recognizing subproblems Show a solution to the problem consists of making a choice. Making the choice leaves one or more sub-problems to be solved. Suppose that for a given problem, the choice that leads to an optimal solution is available. Notice something in common with a greedy solution, more on this later.

Dynamic vs. Greedy Dynamic programming uses optimal substructure in a bottom-up fashion –First find optimal solutions to subproblems and, having solved the subproblems, we find an optimal solution to the problem Greedy algorithms use optimal substructure in a top-down fashion –First make a choice – the choice that looks best at the time – and then solving a resulting subproblem

Overlapping Subproblems Divide-and-Conquer is suitable when generating brand- new problems at each step of the recursion. Dynamic-programming algorithms take advantage of overlapping subproblems by solving each subproblem once and then storing the solution in a table where it can be looked up when needed, using constant time per lookup

Assembly Line

Problem Definition e 1, e 2 : time to enter assembly lines 1 and 2 x 1, x 2 : time to exit assembly lines 1 and 2 t i,j : time to transfer from assembly line 1  2 or 2  1 a i,j : processing time in each station Time between adjacent stations are 0 2 n possible solutions

Optimal Substructure We want the fastest way through the factory (from the starting point) –What is the fastest possible way through S 1,1 (similar for S 2,1 ) Only one way  take time e 1 –The fastest possible way through S 1,j for j=2, 3,..., n (similar for S 2,j ) S 1,j-1  S 1,j : T 1,j-1 + a 1,j –If the fastest way through S 1,j is through S 1,j-1  must have taken a fastest way through S 1,j-1 Similar for S 2, i-1 An optimal solution contains an optimal solution to sub-problems  optimal substructure.

S1,1  = 9 S2,1  = 12

S1,2 = S1,1 + 9 = = 18 S2, = = 23 S2,2 = S1, = = 16 S2,1 + 5 = = 17

S1,2  18 S2,2  16 S1,3 = S1,2 + 3 = = 21 S2, = = 20 S2,3 = S1, = = 25 S2,2 + 6 = = 22

Formal Setup f i [j]: fastest possible time to go from starting point through station S i,j The fastest time to go all the way through the factory: f* = min(f 1 [n] + x 1, f 2 [n] + x 2 ) Boundary conditions, –f 1 [1] = e 1 + a 1,1 – f 2 [1] = e 2 + a 2,1

Setup Contd.. The fastest time to go through S i,j (for j=2,..., n) f 1 [j] = min(f 1 [j-1] + a 1,j, f 2 [j-1] + t 2,j-1 + a 2,j ) f 2 [j] = min(f 2 [j-1] + a 2,j, f 1 [j-1] + t 1,j-1 + a 2,j ) l i [j]: the line number whose station j-1 is used in a fastest way through S i,j (i=1, 2, and j=2, 3,..., n) –l* : the line whose station n is used in a fastest way through the entire factory