algorithm - 寻找最便宜子集的有效算法

标签 algorithm

主题
我们有一个商品目录 [{id, prodno, qty, price}] 和商品 bundle [{id, price, items:[{prodno, qty}]}].
我们必须找到最便宜的子集 - 结果 {price, [[{id, qty}]]},其中包含指定的项目 - query [{prodno, qty}].
示例:

items = [
  {id:1, prodno:'A', qty:1, price:1},
  {id:2, prodno:'A', qty:5, price:3},
  {id:3, prodno:'B', qty:10, price:1}
]  
bundles = [
  {id:4, price:3, items:[
    {prodno:'A', qty:2},
    {prodno:'B', qty:5}
  ]}
]  
query = [
  {prodno:'A', qty:5},
  {prodno:'B', qty:4}
]  
result = {price:4, [
  [{id:2, qty:1},{id:3, qty:1}]
]}

我们已请求 5xA 和 4xB 并检索到 1 个最便宜的子集(给出 5xA 和 10xB)。

最佳答案

这本质上是集合 covering problem 的变体.
如果我没记错的话,贪心算法对这类问题效果很好,但可能还有更复杂的算法可以做得更好。

关于algorithm - 寻找最便宜子集的有效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30499958/

相关文章:

从中心开始用较小的矩形填充大矩形的算法

sql-server - 校正多个地理传感器读数中的噪声

algorithm - 到所有节点的非循环路径

c# - 为基于 Kinect 的手势识别构建 HMM

algorithm - 关于来自 wiki 的加泰罗尼亚数字的表达

algorithm - 二维坐标归一化

c++ - 为什么我的凸包周长计算不起作用?

algorithm - 从至少有两个元素相等的列表中找出所有最大的子列表

algorithm - 在 Scala 中,按组合键对列表进行排序的正确方法是什么

algorithm - 哈希表索引设计