首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于平均值的集合数和

关于平均值的集合数和
EN

Stack Overflow用户
提问于 2014-05-14 11:53:36
回答 1查看 45关注 0票数 0

我得到了数字2,5,7,1,4,3的向量f,我想要创建n线程,它应该有空闲数量的数“围绕”主向量。假设n是2

代码语言:javascript
复制
2 + 5 + 7 + 1 + 4 + 3 = 22 / n = 11

所以我需要创建一对:

代码语言:javascript
复制
[7 4] because it's 11
[2 5 3 1] because it's 11 (or near eleven)

是否可以避免这样的算法:

  1. 使向量f (长度从2到6)的所有可能组合
  2. 过滤所有生成的组合,以找到和约为11的n

我之所以问这个问题,是因为我必须用y作业启动x任务(线程)。为该作业时间定义后,每个作业都应该是重新运行(我们结束该作业所需的作业时间在此主向量f中估计)。

你能给我点建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-05-14 12:25:22

这在很大程度上取决于你想要如何回答这个问题,以及数字的分布。例如,如果分布在一个区间内几乎是一致的,那么对列表进行排序并挑选出每个数字将非常有效。

这里{1,2,3,4,5,7}是排序的数字,所以取{1,3,5} & {2,4,7}。如果元素数除以组数,那么取第一个和最后一个数字更好。如果n=3取{1,7}{2,5}{3,4}。

如果这些数字是{1,10,100,1000,10000},那么所有这些启发式算法都不能很好地工作。(即指数分布)。

如果你能告诉我们更多关于数字分布的信息,那么很有可能有人能做出一个合理的启发。

从您的问题来看,这些数字似乎与线程的运行时间有关,因此您希望在多个线程之间平均分配工作。如果是这样的话,那么这不是正确的解决方案--使用带固定线程池和优先级队列的executor服务,该队列高度优先于运行时间最长的任务,在这种情况下,它总是启动最长的剩余任务,这通常会确保所有线程大致一起完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23653998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档