database - 从表中查找组合的算法或伪代码
问题描述
我有一张桌子,上面有数千个具有很多属性的项目(大约 15 个以上)。我想选择以下结果:
- 选择所有项目组合以使每个属性至少具有 100%?正好 100% 会很好,但那不是必需的,所以它可以多一点或少一点(可能 +-2%)。
- 所有组合都将是一个大数据集,因此我认为最好按价格对它们进行排序并仅选择最便宜的 10 个。
- 另外,如果我想修改之前的选择,以便一个或多个属性不能超过某个值,例如 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 中的相同。但按价格排序/选择最便宜的。
- 我只想要钠含量不超过 30 毫克的组合
解决方案
推荐阅读
- javascript - 图像未在reactjs中加载
- java - 微服务、共享实体或其他地狱之间的通信
- ruby-on-rails - Rails 5 - LoadError:加载“mysql2”Active Record 适配器时出错。mysql2 不是捆绑包的一部分
- acumatica - 站点地图节点问题 Acumatica ERP
- python - Jupyter 中不同的显示结果取决于内核(新用户问题)
- json - 执行 kubectl patch 命令时如何修复 json unmarshal 错误?
- php - 如何解决laravel中json数据的插入问题
- java - 覆盖列表的 add 方法以检查属性是否等于另一个实例属性
- java - IntelliJ for Java 中是否有与 .NET C# Stylecop 等效的方法来检查和修复 IntelliJ 中的代码样式?
- java - 使用 BufferedReader 转到文件中的下一行