将 n 个工作分配给 m 个人的算法 n>m

标签 algorithm

我正在从事问题论文生成器的项目,我的系统中几乎没有贡献者和验证者作为参与者。贡献者向我的系统提出问题,验证者将验证它们,那么,是否有任何特定的算法可以帮助我将问题平均分配给验证者,并且没有与问题相关的成本。

最佳答案

鉴于您创建了作业,然后才开始处理它们,我猜简单的循环法就足够了。

如果问题上确实有标签,请先对它们进行排序。第二步是运行直到队列为空,并一次将每个问题分配给验证器。

算法基础:

  1. 考虑 A 为大小为 n 的工作蜜蜂数组和 B 为大小为 m 的人员数组
  2. 对数组A进行排序,比如所有的难题都在开头。
  3. 对于 (0, n) 中的 i:将工作 A[i] 分配给人员 B[i mod m]。

遵循此算法将确保每个人的工作不会比其他人多,并且在每个级别的问题上他们都是均匀分布的。

如果你也可以根据人们验证问题的能力来标记他们(我的意思是人 A[i] 可以更快地验证问题他们 A[j] 他们添加排序步骤,从你最快的人开始的人数组 - 这将导致人 i 比人 j 多 1 个问题然后保证他也是验证过程更快,它们的总时间可能相等。

希望对您有所帮助!

关于将 n 个工作分配给 m 个人的算法 n>m,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53904262/

相关文章:

algorithm - 边界线在策略/RTS 游戏中如何运作?

algorithm - 在大型集合中有效地找到具有低汉明距离的二进制字符串

c - 确定函数的 Big-O 表示法

c - 以编程方式为图像添加凸面效果

algorithm - 分割双标签数组

php - 查找图中所有不在循环中的节点

c - 程序知道图中从 1 到 n 的所有可能路径

python - 在 Python 中将一长串洗牌次数甚至更长

algorithm - 如何获得 4D 网格的 3D 横截面?

c++ - TopCoder "Escape"解决困惑