Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Pseudo-polynomial time algorithm (The concept and the terminology are important) Partition Problem: Input: Finite set A=(a 1, a 2, …, a n } and a size.

Similar presentations


Presentation on theme: "1 Pseudo-polynomial time algorithm (The concept and the terminology are important) Partition Problem: Input: Finite set A=(a 1, a 2, …, a n } and a size."— Presentation transcript:

1 1 Pseudo-polynomial time algorithm (The concept and the terminology are important) Partition Problem: Input: Finite set A=(a 1, a 2, …, a n } and a size s(a) (integer) for each a  A. Question: Is there a subset A’  A such that  a  A’ s(a) =  a  A –A’ s(a)? Theorem: Partition problem is NP-complete (Karp, 1972). An dynamic algorithm: For i  n and j  0.5  a  A s(a), define t(i, j) to be true if and only if there is a subset A i of {a 1, a 2, …, a i } such that  a  Ai s(a)=j. Formula: T(i,j)=true if and only if t(i-1, j)=true or t(i-1, j-s(a i ))=true.

2 2 Example i012345678910111213 1TTFFFFFFFFFFFF 2TTFFFFFFFTTFFF 3TTFFFTTFFTTFFF 4TTFTTTTFTTTFTT 5TTFTTTTFTTTTTT Figure 4.8 Table of t(i,j) for the instance of PARTITION for which A={a 1,a 2,a 3,a 4,a 5 }, s(a 1 )=1, s(a 2 )=9, s(a 3 )=5, s(a 4 )=3, and s(a 5 )=8. The answer for this instance is "yes", since t(5,13)=T, reflecting the fact that s(a 1 )+s(a 2 )+s(a 4 )=13=26/2. j

3 3 Backtracking if t(n, W) is not true then print “ no such partition” and stop; i=n; w=W; if ( t(n, W)== false) then stop; While (i> 0 ) do { if (t(i, w) == true) { if (t(i-1, W)== true) then i=i-1; else { W=W-s(a i ); i=i-1; print “a i ”} }

4 4 Time complexity The algorithm takes at most O(nB) time to fill in the table. (Each cell needs constant time to compute). Do we have a polynomial time algorithm to solve the Partition Problem and thus all NP-complete problems? –No. –O(nb) is not polynomial in terms of the input size. S(a i )=2 n =10000…0. (binary number of n+1 bits, n 0’s). So B is at least O(2 n ). The input size is O(n) if there some a i with S(a i )=2 n. B is not polynomial in terms of n (input size) in general. However, if any upper bound is imposed on B, (e.g., B is Polynomial), the problem can be solved in polynomial time for this special case. (This is called pseudo-polynomial.)

5 5 0-1 version

6 6

7 7

8 8

9 9

10 10

11 11

12 12

13 13

14 14

15 15

16 16

17 17 RNA Sequence: ACCGGUAGU

18 18 Exercise: Let T be a rooted binary tree, where each internal node in the tree has two children and every node (except the root) in T has a parent. Each leaf in the tree is assigned a letter in  ={A, C, G, T}. Figure 1 gives an example. Consider an edge e in T. Assume that every end of e is assigned a letter. The cost of e is 0 if the two letters are identical and the cost is 1 if the two letters are not identical. The problem here is to assign a letter in  to each internal node of T such that the cost of the tree is minimized, where the cost of the tree is the total cost of all edges in the tree. Design a polynomial-time dynamic programming algorithm to solve the problem.

19 19 A A C Figure 1 A

20 20 Assignment 4. (Due on May 2, 2007. Drop it in Mail Box 59) This time, Helena and I can explain the questions, but we will NOT tell you how to solve the problems. Question 1. Give a polynomial time algorithm to find the longest monotonically increasing subsequence of a sequence of n numbers. (Assume that each integer appears once in the input sequence of n numbers) Example: Consider sequence 1,8, 2,9, 3,10, 4, 5. Both subsequences 1, 2, 3, 4, 5 and 1, 8, 9, 10 are monotonically increasing subsequences. However, 1,2,3, 4, 5 is the longest.

21 21 Assignment 4. (Due on May 2, 2007) Question 2. Given an integer d and a sequence of integers s=s 1 s 2 …s n. Design a polynomial time algorithm to find the longest monotonically increasing subsequence of s such that the difference between any two consecutive numbers in the subsequence is at least d. Example: Consider the input sequence 1,7,8, 2,9, 3,10, 4, 5. The subsequence 1, 2, 3, 4, 5 is a monotonically increasing subsequence such that the difference between any two consecutive numbers in the subsequence is at least 1. 1, 3, 5 is a monotonically increasing subsequence such that the difference between any two consecutive numbers in the subsequence is at least 2.

22 22 Assignment 4. (Due on May 2, 2007) Question 3. Suppose that there are n sequences s 1, s 2, …, s n on alphabet  ={a 1, a 2, …, a m }. Every sequence s i is of length m and every letter in  appears exactly once in each s i. Design a polynomial time algorithm to compute the LCS of the n sequences. What is the time complexity of your algorithm?


Download ppt "1 Pseudo-polynomial time algorithm (The concept and the terminology are important) Partition Problem: Input: Finite set A=(a 1, a 2, …, a n } and a size."

Similar presentations


Ads by Google