algorithm - 编程算法: how evenly distribute categories across columns

标签 algorithm

我有多个类别,每个类别都有多个元素。我现在正在寻找一种编程算法,将这些类别分布在预定义数量的列中,而无需分解类别,保持类别顺序,并使每列中的元素数量尽可能保持最佳。

例如: 将 5 个类别分布在 3 列中

Data:
category A, 7 elements
category B, 7 elements
category C, 3 elements
category D, 2 elements
category E, 8 elements

结果:

Column 1: category A, 7 elements
Column 2: category B and C, 10 elements
Column 3: category D and E, 10 elements

最佳答案

您拥有元素总数,因此可以将该数字除以列数以获得每列中的预期元素数。然后,您的工作就是最小化差值的平方和(因此,如果您必须存储 8 个元素,而您存储了 10 个元素,则该列的平方差为 2² = 4)。

然后,您可以编写一个递归函数,对于每个类别,决定是将该类别移动到下一列,还是保留在当前列中。这是一个 bool 决策,因此您可以从创建最小差异的分支开始,然后从创建最大差异的分支开始。该函数将跟踪迄今为止找到的最佳解决方案,如果当前的平方差之和大于该解决方案的总和,则立即停止。

关于algorithm - 编程算法: how evenly distribute categories across columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4459826/

相关文章:

python - OCaml 中的 Cholesky 分解

algorithm - 如何找到给定 N 次切割的无限杆的最大段数

algorithm - 是谷歌愚蠢还是我?可能发生冲突的哈希集与经典安全算法

java - Java中的无损JPEG旋转(90/180/270度)?

c++ - 用于最小值、最大值、中值、平均值的 OpenMp C++ 算法

algorithm - 通过以下链接找到从网页 A 到网页 B 的最快方法

c - USACO 数字三角形

python - 找到放置 block 的最佳策略的算法

algorithm - 如何在 0-1 矩阵中找到至少有 K 个 1 的最小子矩形

algorithm - 二分图中的最佳匹配(例如,将标签与图上的点相关联)