110得票6回答
1D 数组聚类

假设我有一个像这样的数组:[1,1,2,3,10,11,13,67,71] 有没有一种方便的方法将数组分成像这样的东西?[[1,1,2,3],[10,11,13],[67,71]] 我查看了类似的问题,大多数人建议使用k-means对点进行聚类,例如像scipy这样的工具,但对于像我这样的初学...

30得票3回答
比起差分,集合划分可以得到更好的结果。

分割问题已知为NP难问题。根据问题的具体实例,我们可以尝试使用动态规划或一些启发式算法,例如差分(也称为Karmarkar-Karp算法)。 后者似乎非常适用于大数实例(这使得动态规划成为一个棘手的问题),但并不总是完美的。有没有一种高效的方法可以找到更好的解决方案(随机、禁忌搜索、其他近似...

14得票8回答
3-PARTITION问题

这是另一个动态规划问题,关于3-Partition(Vazirani第6章) 考虑以下3-Partition问题。给定整数a1 ... an, 我们想要确定是否可能将{1 ... n}分成三个不相交的子集I,J,K, 使得 sum(I) = sum(J) = sum(K) = 1/3 * s...

10得票5回答
将列表分为两部分,使它们的和最接近。

这是一个复杂的算法问题,需要: 将列表分为两个部分(总和)使它们的总和最接近。 列表长度为1 例如:23 65 134 32 95 123 34 1.总和=256 2.总和=250 1.列表=1 2 3 7 2.列表=4 5 6 我有一个算法,但不适用于所有输入。 初始化...

10得票6回答
获取所有可能的加和等于给定数字的组合

我正在为Android开发一个数学应用程序。在其中一个字段中,用户可以输入一个整数(无数字且大于0)。想法是获取所有可能的总和,而不重复(在这种情况下,4+1 == 1+4)。唯一已知的是这个整数。 例如: 假设用户输入4,我希望该应用程序返回: 4 3+1 2+2 2+1+1 1+...

7得票3回答
用递归回溯算法解决分区问题

嗨,我正在寻找一种算法,将一组正数分成k个部分,以便每个部分具有(大约)相同的总和...假设我们有 1,2,3,4,5,6,7,8,9,k = 3,则应该将算法分区如下1,2,3,4,5 | 6,7 | 8,9 元素的顺序不能改变...找到贪心算法很容易,但我正在寻找一种回溯版本,它始终返回...

7得票3回答
动态规划存在的问题

我遇到了理解动态规划的困难,所以我决定解决一些问题。我知道基本的动态算法,如最长公共子序列、背包问题,但我知道它们是因为我读过它们,但我自己想不出什么 :-( 例如,我们有一个自然数的子序列。我们可以对每个数字进行加减运算,最后取这个和的绝对值。对于每个子序列,找到最小可能的结果。 in1...