Search code examples
time-complexitycomplexity-theorypartitionreduction

Reducing partition prob to decision prob


We have the related and well known problems:

1) PARTITION (decision problem): Given a set S of n natural numbers. Is it possible to find a subset T of S such that the sum of the numbers of T is equal to the sum of the numbers of T\S?

2) PARTITION (general problem): Given a set S of n natural numbers. Assuming the answer of the decision problem 1) to this set is 'yes' then find such a subset.

Simple question: How can we solve 2) in polynomial time if we have an algorithm that solves 1) in polynomial time?


Solution

  • Solution: Suppose we want to partition a set S of n natural numbers with the sum equal to a number b and we have a blackbox algorithm that solves the decision problem in polynomial time.

    1: If the answer of the partition problem of S is no, then return. 2: Pick an element x of S. 3: If x is equal to b/2 return S\x (partition found). 4. Merge x with another element y of S (set x=x+y and set S=S\y) which is not processed yet. 5: Solve the decision problem for S. 6: If the answer is no then revert step 4, mark y as processed. 7: Go back to step 3.

    Each time we repeat step 2 we have to solve a decision problem in polynomial time. Since we only have to repeat step 2 at most n-1 times, the overall time complexity is also polynomial.