algorithm - 将数组划分为具有最小总方差的子集的算法
问题描述
我有一个浮点数数组,我想将该数组分成两个子集,以使它们的总方差最小化。
总方差定义如下:
var = (var_1 * n_1 + var_2 * n_2)/(n_1 + n_2)
其中n_1
和n_2
分别是左/右元素的数量, 和 分别var_1
是var_2
左/右方差。
我的问题是:是否有任何有效的算法来找到总方差的全局最小值?该算法应该输出两个子集,每个子集都包含相应组的元素。
此外,假设每个元素都是一个 tuple (x,y)
,而不是方差,我想找到左右的全局协方差,以与上面类似的方式定义。是否有一些通用算法来处理此类分区问题?我想这应该更难,因为我能想到的所有算法都需要对数组进行排序,但是这里没有明显的比较器来对元组进行排序。
解决方案
推荐阅读
- flutter - 视频通话颤振和集市
- javascript - 堆栈导航器导致 React Native 中的背景颜色发生变化
- node.js - 用于除 get 之外的所有方法的 Nodejs Express 路由器中间件
- java - 如何转换通量
到数组列表 - pandas - Pandas - 过滤除每个 ID 的最后 X 个条目之外的所有条目
- ios - 如果 VC 未嵌入导航控制器,则 performSegue 不起作用
- android - 有人可以帮我克服在 Flutter 中使用 firebase 启用登录/注册身份验证时发生的错误吗
- python - 为 pycare (setup.py) 构建轮子 ...错误
- django - 当我删除图像时,django imageField 返回 False
- reactjs - 为反应创建一个迭代表