我有一个浮点数数组,我想将该数组分成两个子集,以使它们的总方差最小。
总方差定义如下:
var = (var_1 * n_1 + var_2 * n_2)/(n_1 + n_2)
其中n_1
和n_2
分别是左/右元素的数量,var_1
和var_2
分别是左/右的方差。
我的问题是:是否有任何有效的算法可以找到总方差的全局最小值?该算法应输出两个子集,每个子集包含相应组的元素。
此外,假设每个元素都是一个元组(x,y)
,并且我想找到左和右的全局协方差,而不是方差,它的定义与上述类似。是否有一些用于处理此类分区问题的通用算法?我想这应该更难,因为我能想到的所有算法都需要对数组进行排序,但是这里没有明显的比较器可以对元组进行排序。