algorithm - 将 n 个值拆分为 m 个组时避免明显代价高昂组合的算法
问题描述
我有 7 个值,我需要将它们分成 5 组。每个组应包含至少一个值。有 15 种方法可以将这些值分为 5 个。
周一 - 13 周二 - 5 周三 - 4 周四 - 4 周五 - 11 周六 - 2 周日 - 1
分组时,应保留周一、周二、周三、周四、周五、周六、周日的顺序。
假设有一个函数决定分组的好坏。
13、5、4、4、11、2、1
功能
分组 1 - 13、5、[4,4]、11、[2,1]
增加 13 个,撤回 13 个,剩余 0 个
增加 5 个,撤回 5 个,剩余 0 个
[4,4] 添加,4 撤回,4 剩余
添加 0 个,撤回 4 个,剩余 0 个
增加 11 个,撤回 11 个,剩余 0 个
[2, 1] 已添加,2 个已撤消,1 个剩余
0 添加, 1 撤回, 0 剩余
成本 = 一天结束时剩余的总和 = 4+1 = 5
我需要找到成本最低的分组。有没有办法(例如:启发式方法)来避免明显昂贵的组合,这样我就不必尝试所有的分组来找到成本最低的分组?
明显代价高昂的组合示例
13, [5,4], [4,11], 2, 1
一天结束时剩余的总和越大,分组成本越高
2周的实际预测数据
解决方案
推荐阅读
- node.js - 使用 npm install 安装 node_packages 时出现代码 ELIFECYCLE 错误
- node.js - UnhandledPromiseRejectionWarning: MongoError: Unrecognized pipeline stage name: '$setWindowFields'
- c# - Dropbox.net 获取用户最喜欢的文件夹内容
- r - 更改集群 geom_col 中的填充顺序?
- encryption - 哈希的意义何在?
- angular - Angular - 错误的包版本?
- algorithm - 为什么在恢复最长递增子序列时需要祖先数组?
- wordpress - 手动调用 Gravity Forms Product Add-ons Plugin
- c - 在 C 中计算阶乘“x! = ?”的算法
- mysql - 如何在 MySQL 中选择具有唯一组合的表的所有列?