首页 > 解决方案 > 从表中查找组合的算法或伪代码

问题描述

我有一张桌子,上面有数千个具有很多属性的项目(大约 15 个以上)。我想选择以下结果:

  1. 选择所有项目组合以使每个属性至少具有 100%?正好 100% 会很好,但那不是必需的,所以它可以多一点或少一点(可能 +-2%)。
  2. 所有组合都将是一个大数据集,因此我认为最好按价格对它们进行排序并仅选择最便宜的 10 个。
  3. 另外,如果我想修改之前的选择,以便一个或多个属性不能超过某个值,例如 50%?
| ----------- | ------------ | ----------- | ----------- | ----- |
|  item name  |  attribute 1 | attribute 2 | attribute 3 | price |
|   item 1    |     25%      |     1%      |     5%      |   1€  |
|   item 2    |     10%      |    10%      |    10%      |   2€  |
|   item 3    |      5%      |    20%      |     5%      |   3€  |
|   item 4    |     20%      |    15%      |    50%      |  12€  |

我不知道是否有针对我的问题的现有算法(我希望如此)或者我的问题有一个我可以用谷歌搜索的名称,但我会感谢任何我应该如何进行的提示。

我现在能想到的唯一方法是暴力破解所有组合并删除不可用的组合。但我认为这不是正确的方法(也许我错了,这是唯一的方法)。

商品数量、价格和属性值会随时间而变化。如果它们是静态的,我将只运行一次蛮力选项并完成它。

对不起,如果这个问题已经被问过。

编辑:

例如,我可以提供有关食物的营养信息(所有数字都是虚构的):

每日碳水化合物/脂肪/蛋白质摄入量为225g/30g/65g

| ----------- | --------------- | ------- | --------- | ------ | ----- |
|  item name  |  carbohydrates  |   fat   |  protein  | sodium | price |
|    apple    |       10g       |   1g    |    5g     |   1mg  |   1€  |
|    banana   |       20g       |   2g    |   10g     |   1mg  |   2€  |
|    pear     |       15g       |   3g    |    5g     |   5mg  |   3€  |
| ----------- | --------------- | ------- | --------- | ------ | ----- |
  1. 给我找到可以达到每日摄入量的食物组合。
  2. 现在我想要与 1 中的相同。但按价格排序/选择最便宜的。
  3. 我只想要钠含量不超过 30 毫克的组合

标签: databasealgorithm

解决方案


推荐阅读