Dynamic Programming
#1

[attachment=9857]
Dynamic Programming
Longest Common Subsequence

 Problem: Given 2 sequences, X = áx1,...,xmñ and
Y = áy1,...,ynñ, find a common subsequence whose length is maximum.
springtime ncaa tournament basketball
printing north carolina krzyzewski
Subsequence need not be consecutive, but must be in order.
 Other sequence questions
 Edit distance: Given 2 sequences, X = áx1,...,xmñ and Y = áy1,...,ynñ, what is the minimum number of deletions, insertions, and changes that you must do to change one to another?
 Protein sequence alignment: Given a score matrix on amino acid pairs, s(a,b) for a,bÎ{L} ÈA,
and 2 amino acid sequences, X = áx1,...,xmñÎAm and Y = áy1,...,ynñÎAn, find the alignment with lowest score…
 More problems
Optimal BST: Given sequence K = k1 < k2 <••• < kn of n sorted keys, with a search probability pi for each key ki, build a binary search tree (BST) with minimum expected search cost.
Matrix chain multiplication: Given a sequence of matrices A1 A2 … An, with Ai of dimension mi´ni, insert parenthesis to minimize the total number of scalar multiplications.
Minimum convex decomposition of a polygon,
Hydrogen placement in protein structures, …
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 to subproblems.
 Unlike divide and conquer, subproblems are not independent.
» Subproblems may share subsubproblems,
» However, solution to one subproblem may not affect the solutions to other subproblems of the same problem. (More on this later.)
 DP reduces computation by
» Solving subproblems in a bottom-up fashion.
» Storing solution to a subproblem the first time it is solved.
» Looking up the solution when subproblem is encountered again.
 Key: determine structure of optimal solutions
Steps in Dynamic Programming
1. Characterize structure of an optimal solution.
2. Define value of optimal solution recursively.
3. Compute optimal solution values either top-down with caching or bottom-up in a table.
4. Construct an optimal solution from computed values.
We’ll study these with the help of examples.
 Longest Common Subsequence
 Problem: Given 2 sequences, X = áx1,...,xmñ and
Y = áy1,...,ynñ, find a common subsequence whose length is maximum.
springtime ncaa tournament basketball
printing north carolina snoeyink
Subsequence need not be consecutive, but must be in order.
 Naïve Algorithm
 For every subsequence of X, check whether it’s a subsequence of Y .
 Time: Θ(n2m).
» 2m subsequences of X to check.
» Each subsequence takes Θ(n) time to check:
scan Y for first letter, for second, and so on.
 Optimal Substructure
Notation:
prefix Xi = áx1,...,xiñ is the first i letters of X.

This says what any longest common subsequence must look like;
do you believe it?
 Optimal Substructure
Proof: (case 1: xm = yn)
Any sequence Z’ that does not end in xm = yn can be made longer by adding xm = yn to the end. Therefore,
(1) longest common subsequence (LCS) Z must end in xm = yn.
(2) Zk-1 is a common subsequence of Xm-1 and Yn-1, and
(3) there is no longer CS of Xm-1 and Yn-1, or Z would not be an LCS.
 Optimal Substructure
Proof: (case 2: xm ¹ yn, and zk ¹ xm)
Since Z does not end in xm,
(1) Z is a common subsequence of Xm-1 and Y, and
(2) there is no longer CS of Xm-1 and Y, or Z would not be an LCS.
 Recursive Solution
 Define c[i, j] = length of LCS of Xi and Yj .
 We want c[m,n].
 Recursive Solution
 Recursive Solution
 Computing the length of an LCS
LCS-LENGTH (X, Y)
1. m ← length[X]
2. n ← length[Y]
3. for i ← 1 to m
4. do c[i, 0] ← 0
5. for j ← 0 to n
6. do c[0, j ] ← 0
7. for i ← 1 to m
8. do for j ← 1 to n
9. do if xi = yj
10. then c[i, j ] ← c[i-1, j-1] + 1
11. b[i, j ] ← “ ”
12. else if c[i-1, j ] ≥ c[i, j-1]
13. then c[i, j ] ← c[i- 1, j ]
14. b[i, j ] ← “↑”
15. else c[i, j ] ← c[i, j-1]
16. b[i, j ] ← “←”
17. return c and b
 Constructing an LCS
PRINT-LCS (b, X, i, j)
1. if i = 0 or j = 0
2. then return
3. if b[i, j ] = “ ”
4. then PRINT-LCS(b, X, i-1, j-1)
5. print xi
6. elseif b[i, j ] = “↑”
7. then PRINT-LCS(b, X, i-1, j)
8. else PRINT-LCS(b, X, i, j-1)
Steps in Dynamic Programming
1. Characterize structure of an optimal solution.
2. Define value of optimal solution recursively.
3. Compute optimal solution values either top-down with caching or bottom-up in a table.
4. Construct an optimal solution from computed values.
We’ll study these with the help of examples.
 Optimal Binary Search Trees
 Problem
» Given sequence K = k1 < k2 <••• < kn of n sorted keys,
with a search probability pi for each key ki.
» Want to build a binary search tree (BST)
with minimum expected search cost.
» Actual cost = # of items examined.
» For key ki, cost = depthT(ki)+1, where depthT(ki) = depth of ki in BST T .
» Expected Search Cost
 Example
 Consider 5 keys with these search probabilities:
p1 = 0.25, p2 = 0.2, p3 = 0.05, p4 = 0.2, p5 = 0.3.
 Example
 p1 = 0.25, p2 = 0.2, p3 = 0.05, p4 = 0.2, p5 = 0.3.
 Example
Observations:
» Optimal BST may not have smallest height.
» Optimal BST may not have highest-probability key at root.
 Build by exhaustive checking?
» Construct each n-node BST.
» For each,
assign keys and compute expected search cost.
» But there are W(4n/n3/2) different BSTs with n nodes.
Optimal Substructure
 Any subtree of a BST contains keys in a contiguous range ki, ..., kj for some 1 ≤ i ≤ j ≤ n.
 If T is an optimal BST and
T contains subtree T¢ with keys ki, ... ,kj ,
then T¢ must be an optimal BST for keys ki, ..., kj.
 Proof: Cut and paste.
 Optimal Substructure
 One of the keys in ki, …,kj, say kr, where i ≤ r ≤ j,
must be the root of an optimal subtree for these keys.
 Left subtree of kr contains ki,...,kr-1.
 Right subtree of kr contains kr+1, ...,kj.
 To find an optimal BST:
» Examine all candidate roots kr , for i ≤ r ≤ j
» Determine all optimal BSTs containing ki,...,kr-1 and containing kr+1,...,kj
» Recursive Solution
 Find optimal BST for ki,...,kj, where i ≥ 1, j ≤ n, j ≥ i-1. When j = i-1, the tree is empty.
 Define e[i, j ] = expected search cost of optimal BST for ki,...,kj.
 If j = i-1, then e[i, j ] = 0.
 If j ≥ i,
» Select a root kr, for some i ≤ r ≤ j .
» Recursively make an optimal BSTs
• for ki,..,kr-1 as the left subtree, and
• for kr+1,..,kj as the right subtree.
Recursive Solution
 When the OPT subtree becomes a subtree of a node:
» Depth of every node in OPT subtree goes up by 1.
» Expected search cost increases by
 If kr is the root of an optimal BST for ki,..,kj :
» e[i, j ] = pr + (e[i, r-1] + w(i, r-1))+(e[r+1, j] + w(r+1, j))
= e[i, r-1] + e[r+1, j] + w(i, j).
 But, we don’t know kr. Hence,
 Computing an Optimal Solution
For each subproblem (i,j), store:
 expected search cost in a table e[1 ..n+1 , 0 ..n]
» Will use only entries e[i, j ], where j ≥ i-1.
 root[i, j ] = root of subtree with keys ki,..,kj, for 1 ≤ i ≤ j ≤ n.
 w[1..n+1, 0..n] = sum of probabilities
» w[i, i-1] = 0 for 1 ≤ i ≤ n.
» w[i, j ] = w[i, j-1] + pj for 1 ≤ i ≤ j ≤ n.
 Pseudo-code
OPTIMAL-BST(p, q, n)
1. for i ← 1 to n + 1
2. do e[i, i- 1] ← 0
3. w[i, i- 1] ← 0
4. for l ← 1 to n
5. do for i ← 1 to n-l + 1
6. do j ←i + l-1
7. e[i, j ]←∞
8. w[i, j ] ← w[i, j-1] + pj
9. for r ←i to j
10. do t ← e[i, r-1] + e[r + 1, j ] + w[i, j ]
11. if t < e[i, j ]
12. then e[i, j ] ← t
13. root[i, j ] ←r
14. return e and root
Elements of Dynamic Programming
 Optimal substructure
 Overlapping subproblems
Optimal Substructure
 Show that a solution to a problem consists of making a choice, which leaves one or more subproblems to solve.
 Suppose that you are given this last choice that leads to an optimal solution.
 Given this choice, determine which subproblems arise and how to characterize the resulting space of subproblems.
 Show that the solutions to the subproblems used within the optimal solution must themselves be optimal. Usually use cut-and-paste.
 Need to ensure that a wide enough range of choices and subproblems are considered.
 Optimal substructure varies across problem domains:
» 1. How many subproblems are used in an optimal solution.
» 2. How many choices in determining which subproblem(s) to use.
 Informally, running time depends on (# of subproblems overall) ´ (# of choices).
 How many subproblems and choices do the examples considered contain?
 Dynamic programming uses optimal substructure bottom up.
» First find optimal solutions to subproblems.
» Then choose which to use in optimal solution to the problem.
 Does optimal substructure apply to all optimization problems? No.
 Applies to determining the shortest path but NOT the longest simple path of an unweighted directed graph.
 Why?
» Shortest path has independent subproblems.
» Solution to one subproblem does not affect solution to another subproblem of the same problem.
» Subproblems are not independent in longest simple path.
• Solution to one subproblem affects the solutions to other subproblems.
» Example:
Overlapping Subproblems
 The space of subproblems must be “small”.
 The total number of distinct subproblems is a polynomial in the input size.
» A recursive algorithm is exponential because it solves the same problems repeatedly.
» If divide-and-conquer is applicable, then each problem solved will be brand new.
Reply
#2

ASP Dot Net/programming development has a very wide variety of web application development and solution. Provides crystal reporting services 2008. With a very broad and vast use in the development of business to business (B2B) and business to develop client applications (B2C) has become a favorite choice of developer.
Reply

Important Note..!

If you are not satisfied with above reply ,..Please

ASK HERE

So that we will collect data for you and will made reply to the request....OR try below "QUICK REPLY" box to add a reply to this page
Popular Searches: dynamic programming seminar topics, grx basketball, sait basketball, fdu devils basketball, seminar on dynamic programming, cpci basketball, recursively,

[-]
Quick Reply
Message
Type your reply to this message here.

Image Verification
Please enter the text contained within the image into the text box below it. This process is used to prevent automated spam bots.
Image Verification
(case insensitive)

Possibly Related Threads...
Thread Author Replies Views Last Post
  Dynamic Search Algorithm in Unstructured Peer-to-Peer Networks seminar surveyer 3 2,816 14-07-2015, 02:24 PM
Last Post: seminar report asees
  Dynamic Synchronous Transfer Mode computer science crazy 3 4,568 19-02-2014, 03:29 AM
Last Post: Guest
  Dynamic programming language seminar projects crazy 2 3,179 03-01-2013, 12:31 PM
Last Post: seminar details
  Distributed Cache Updating for the Dynamic Source Routing Protocol seminar class 3 2,286 17-11-2012, 01:26 PM
Last Post: seminar details
  SEMINAR ON MICROENGINE PROGRAMMING IN NWP computer girl 0 992 09-06-2012, 03:09 PM
Last Post: computer girl
  UAV DevBoard: Getting Started with PIC Programming computer girl 0 1,011 09-06-2012, 11:35 AM
Last Post: computer girl
Music D Programming Language Computer Science Clay 2 2,563 14-03-2012, 02:35 PM
Last Post: seminar paper
Thumbs Down Extreme Programming (XP) computer science crazy 2 2,071 14-03-2012, 11:57 AM
Last Post: seminar paper
  DYNAMIC MEMORY MANAGEMENT projectsofme 1 1,967 05-03-2012, 09:20 AM
Last Post: seminar paper
Photo Genetic Programming (Download Full Report And Abstract) computer science crazy 3 3,847 29-02-2012, 09:35 AM
Last Post: seminar paper

Forum Jump: