首页 > 解决方案 > 将 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周的实际预测数据

预测数据

标签: algorithmdynamicheuristicsnpsimulated-annealing

解决方案


推荐阅读