我已经查看了其他问题(especially this one),但我认为他们中的任何一个都不能解决我的问题。
假设我们有N个桶(用数字标记),每个桶都包含一个有限且大于0的令牌M(i)(M可以在不同的桶之间改变)。
每个标记都有两个属性x和y(你可以像实数一样思考它们)。我的问题是找到满足的配置:
1)每个桶只能选择一个或零个元素。
2)在最终配置中选择的每个元素必须具有大于输入值X的x属性。
3)最终配置中属性y的所有元素的总和必须大于或等于输入值Y.但是,删除最终列表中的任何元素必须导致严格小于Y的总和
4)首选配置较少的元素
现在,在我看来,类似于多重约束背包问题,然而,存在一些差异,我无法真正解决(主要是桶和条件3)。
问题
因为,我不想重新发明轮子。
我的问题有名称和已知解决方案吗?
如果没有,哪一个是最接近的算法?我是否遗漏了一些明显的东西让我的问题重新回到了背包上?
注意
理想情况下,我正在寻找一个c ++(库/示例/分析),但我很高兴能够获得任何编程语言的参考。