问题
Related questions:
- Algorithm to Divide a list of numbers into 2 equal sum lists
- divide list in two parts that their sum closest to each other
Let's assume I have a list, which contains exactly 2k
elements. Now, I'm willing to split it into two parts, where each part has a length of k
while trying to make the sum of the parts as equal as possible.
Quick example:
[3, 4, 4, 1, 2, 1]
might be splitted to [1, 4, 3] and [1, 2, 4]
and the sum difference will be 1
Now - if the parts can have arbitrary lengths, this is a variation of the Partition problem and we know that's it's weakly NP-Complete.
But does the restriction about splitting the list into equal parts (let's say it's always
k
and2k
) make this problem solvable in polynomial time? Any proofs to that (or a proof scheme for the fact that it's stillNP
)?
回答1:
It is still NP
complete. Proof by reduction of PP
(your full variation of the Partition problem) to QPP
(equal parts partition problem):
Take an arbitrary list of length k
plus additional k
elements all valued as zero.
We need to find the best performing partition in terms of PP
. Let us find one using an algorithm for QPP
and forget about all the additional k
zero elements. Shifting zeroes around cannot affect this or any competing partition, so this is still one of the best performing unrestricted partitions of the arbitrary list of length k
.
来源:https://stackoverflow.com/questions/10857755/divide-list-into-two-equal-parts-algorithm