c++ - 如何将许多可变大小的工作单元分成大小相等的桶?
问题描述
假设我有 300 到 400 个工作单位,它们都有不同的尺寸,在某些情况下尺寸差异很大。是否可以将它们分成固定数量的存储桶,以便我可以在固定数量的工作线程之间平衡负载?
解决方案
您描述的问题称为多处理器调度问题(类似于背包问题的一般化装箱问题)。众所周知,找到最佳调度是 NP-hard 的。因此,没有已知的多项式时间算法来寻找最佳调度。
一个简单的启发式(非最优)算法是最长处理时间:
- 对工作单元进行排序,最大的在前
- 对于每个单元,放入具有最早结束时间的桶中
推荐阅读
- redirect - 针对 IIS 中的一个特定 url 重定向到 /en
- javascript - 如何使 div 可点击而不是将其放在 html 的搜索框中
- python-3.x - 如何缩短这些关于将一个文本文件的内容复制到另一个文本文件的代码?
- python - 使用 time.sleep 运行 2 个分开的代码,带有几个巧妙的循环
- java - ImageIO.read() 返回 null 但不是每次都返回
- java - 列“x.Id”与引用列“y.xId”的数据类型不同
- python - seaborn distplot y 轴密度值在几个 bin 上高于 1.0
- python - 如何进行训练测试拆分,以便 Python 中每个类都有足够的训练和测试数据?
- javascript - 导航到另一个页面后如何获取上一个 URL
- excel - 模糊查找 - 具有音节和子串匹配的 Levenshtein