[algogeeks] Re: Minimum sum of Array

2013-01-11 Thread Don
int q[S] = {0}; q[0] = 1; for(i = 0; i < N; ++i) for(j = S; j >= A[i]; --j) q[j] |= q[j-A[i]]; Then find the largest value i where q[i]=1, and the smallest sum is 2(S-i). As has been pointed out, S can be large and this method can take a long time for big input cases. On Jan 9, 3:04 pm

Re: [algogeeks] Re: Minimum sum of Array

2013-01-09 Thread prankur gupta
Hi, I have understood the solution, but here we are talking about knowing the path(elements in the subsets in this case). I saw we could use the back pointer technique, which I understood, but I'm not able to see how would I code this technique. Please try to explain me this thing. Thanks a lot i

[algogeeks] Re: Minimum sum of Array

2013-01-09 Thread Don
My solution is equivalent to using DP for the 0-1 knapsack, but the DP approach does not identify the partition, it only determines if it exists. In the same way, my solution does not determine which numbers to make negative. It only determines what the smallest possible sum is. The DP approach to

Re: [algogeeks] Re: Minimum sum of Array

2013-01-09 Thread Carl Barton
How is it a huge improvement? Your O(SN) is the same time as the dynamic programming solution for 0-1 knapsack isn't it? On 8 January 2013 14:44, Don wrote: > Yes, that is true. However, trying to find the optimal partition is > equivalent to the 0-1 knapsack problem, which is exponential time.

[algogeeks] Re: Minimum sum of Array

2013-01-08 Thread Don
Yes, that is true. However, trying to find the optimal partition is equivalent to the 0-1 knapsack problem, which is exponential time. So S*N is a huge improvement over that. Does someone have a better solution? Don On Jan 7, 10:49 am, Nikhil Karnwal wrote: > @ Don > but ur's solution complexity

Re: [algogeeks] Re: Minimum sum of Array

2013-01-07 Thread Nikhil Karnwal
@ Don but ur's solution complexity is O(S*N) which is large in case of large N and large numbers. Like in case of s=100 and N=10^5. Correct me if I am wrong. Nikhil Karnwal On Mon, Jan 7, 2013 at 9:04 PM, Don wrote: > Note that you don't need to store the entire P matrix. You really just >

[algogeeks] Re: Minimum sum of Array

2013-01-07 Thread Don
Note that you don't need to store the entire P matrix. You really just need the last column. Don On Jan 7, 10:29 am, Don wrote: > You want to partition the array A into to subsets S1 and S2 such that > you minimize |Sum(S1)-Sum(S2)|. > > The optimal sum for the subsets is S=SUM(A)/2 > > Use DP to

[algogeeks] Re: Minimum sum of Array

2013-01-07 Thread Don
You want to partition the array A into to subsets S1 and S2 such that you minimize |Sum(S1)-Sum(S2)|. The optimal sum for the subsets is S=SUM(A)/2 Use DP to build a matrix P: P[i][j] = 1 if some subset of {A[0]..A[i]} has a sum of j, 0 otherwise Now find a value of i such that P[n][i] = 1 which