You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

产品至购物篮的最优分配算法设计技术问询

购物篮分配优化算法(优先最大化单篮产品数)

问题明确

给定一组产品,每个产品对应一个可放置的购物篮集合,需完成以下优先级从高到低的优化目标:

  1. 最大化单个购物篮中的产品数量
  2. 在满足目标1的前提下,使用尽可能少的购物篮

算法核心思路

阶段1:最大化单篮产品数量

这一步的核心是优先锁定能容纳最多产品的购物篮,尽可能把所有可选该篮的产品分配进去,确保单篮产品数达到理论最大值:

  • 统计每个购物篮的潜在可容纳产品数:遍历所有产品,统计每个篮被多少个产品列为可选放置目标
  • 选择潜在可容纳数最多的篮作为「核心篮」;若多个篮并列最多,任选其一即可
  • 将所有可选该核心篮的产品全部分配至该篮,并从待分配产品列表中移除这些产品

阶段2:用最少购物篮分配剩余产品

对剩余未分配的产品,采用贪心集合覆盖策略,以最少篮数完成分配:

  • 每次选择能覆盖当前未分配产品数量最多的购物篮
  • 将该篮可覆盖的所有未分配产品分配至该篮,移除这些产品
  • 重复上述步骤,直到所有产品都完成分配

示例验证

以题目给出的案例为例:
产品与可选篮列表:

  • 猕猴桃:1、2
  • 香蕉:1
  • 苹果:1、2
  • 菠萝:1、3
  • 椰子:2、3
  • 李子:3

阶段1执行

统计各篮潜在可容纳数:

  • 篮1:猕猴桃、香蕉、苹果、菠萝 → 4个
  • 篮2:猕猴桃、苹果、椰子 → 3个
  • 篮3:菠萝、椰子、李子 → 3个

选择篮1作为核心篮,将猕猴桃、香蕉、苹果、菠萝全部分配至篮1,剩余待分配产品为椰子、李子。

阶段2执行

剩余产品可选篮:

  • 椰子:2、3
  • 李子:3

选择能覆盖所有剩余产品的篮3,将椰子、李子分配至篮3,所有产品分配完成。最终仅使用2个购物篮,且最大篮产品数为4,完全匹配最优方案。

算法复杂度分析

  • 阶段1:O(M*N),其中M为购物篮数量,N为产品数量(用于统计各篮潜在可容纳数)
  • 阶段2:O(K*M*N),其中K为最终使用的购物篮数量(每次选择篮需遍历所有篮和剩余产品)
    对于绝大多数实际场景,该算法效率足够;若处理超大规模数据,可通过预处理产品-篮的映射表优化查询速度。

注意事项

  • 若多个篮能达到相同的最大单篮产品数,任选其一即可,最终总篮数差异极小
  • 阶段2的贪心集合覆盖是近似算法,能保证得到的篮数不超过最优解的O(logN)倍,实际表现接近最优

内容的提问来源于stack exchange,提问作者Cookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:07:16