I've been writing codes to solve a standard partition problem. I've investigated brute force, greedy, Karmarkar-Karp and complete Karmarkar-Karp algorithms.
Standard partition problem: divding a set into two subsets such that the difference between the sums of the subsets is minimized.
I'm also looking at a non-standard partition problem (this is my terminology)
Non-standard partition problem: divding a set into two subsets such that an arbitrary function of the sums of the subsets is minimized. In this case, furthermore, the set needn't be a set of reals, it could be e.g. a set of vectors.
In the special case in which the arbitrary function is $f(\sum_1, \sum_2)=|\sum_1- \sum_2|$, where $\sum_1$ is sum of subset one etc, the non-standard problem reduces to the standard problem.
At the moment, I can trivially generalise brute force and a greedy algorithm to the non-standard case. The former is slow and the latter incomplete and often poor, however.
Is there a better algorithm for this problem? I'm interested in complete and incomplete algorithms. Or is the problem just too general?
What if I make it even more general by permitting $f(s_1, s_2)$ to be minimised where $s$ denotes a subset, i.e. an arbitrary function of the subsets rather than the subsums.