algorithm - 将一组给定的数字 N 分成两组,使它们的总和之差最小?

标签 algorithm numbers partition-problem

您最多可以从集合中排除一个元素以实现目标。 示例:-

N=3

给出的数字是 1,2,5

所以,

第 1 组应该是:- [1]

第 2 组应该是:- [2]

我们排除了 5 个,因为我们可以在不属于任何一组的情况下实现较小的差异。

N=4

数字 = 1,2,2,5

集合 1 = [1,2,2]

组 2 = [5]

最好的算法是什么? 我知道这是一个 NP 完全问题。 我认为蛮力会给我正确的解决方案,但如果可用的话,我需要一个算法。

最佳答案

I know that this a NP-complete problem.

不完全是,partition optimisation problem甚至已知是 NP 难的。

And I think that brute force would give me the correct solution but I need an algorithm if available.

NP-hard 意味着没有已知算法(确定解决方案)比蛮力法表现得更好。

所以你可能需要一个 approximation ,但只有您知道哪一个适合您的需求。

What is best algorithm for this?

定义“最佳”。

关于algorithm - 将一组给定的数字 N 分成两组,使它们的总和之差最小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380501/

相关文章:

algorithm - 寻找用于按字典顺序访问多重集的所有 k 组合的非递归算法

python - 检查矩阵中的某些元素是否具有内聚性

algorithm - 如何在 Karmarkar-Karp 启发式多路分区算法中重建分区?

algorithm - 找到极端高阶元素关系的优先级函数/字母顺序

java - 最大乘积子数组的范围(Kadane 算法变体)

javascript - 输入数字时按 Enter 键提交

c - C 中的正数和负数程序

javascript - 代码 war 挑战

algorithm - 将一组值分成两组具有相似值和的相同或相似大小

algorithm - 划分整数集