首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从最少数量的商店购买购物清单上的所有商品

从最少数量的商店购买购物清单上的所有商品
EN

Stack Overflow用户
提问于 2014-05-01 18:55:44
回答 1查看 1.5K关注 0票数 1

我有一份我想买的n件物品的清单。(每个项目都是不同的)

代码语言:javascript
运行
复制
list = {item1, item2, item3 .... itemn}

我知道k家商店和这些商店的商品清单。

代码语言:javascript
运行
复制
shop1 = {item3, item5, item6 ...}
shop2 = {item1, item5, item8 ...}
...
shopk = {item1, item6, item8 ...}

保证我清单上的每一件物品至少在一家k店都能买到。一旦你参观了一家商店,你就可以购买你选择的一个或更多的商品。

问题我想尽量减少我需要去的商店的数量来购买我清单上的所有商品。

My Solution1,我用了Brute和回忆录。这给出了最优解,但复杂度很高(O(n!))不符合我的要求。(有时K和n最多可达300 )

My Solution2 --我使用了一个贪婪的解决方案,在这个解决方案中,我访问了我列表上提供最大数量商品的商店。购买项目,并将所有这些项目从列表中删除。我重复一遍,除非我的购物单不是空的。(所有必需物品均未购买)

尽管解决方案2运行得非常快,但不幸的是,该解决方案并不是最优的。

在搜索Solution3时发现了一个类似的问题,使用二分图和流解决了这个问题。(我仍在试图建立一个类比,并检查这种方法是否适用于我的问题)

这是一个已知的问题吗?如果没有,是否可以修改解决方案2以获得最优解?

如果你能用任何语言或任何方法或关键字(算法名)建议一些代码片段来帮助我解决这个问题,我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-01 19:00:41

这是一个已知的问题吗?

是的,这是一个集合覆盖问题 (具体来说,它的未加权品种)。众所周知,它是NP-完全的,所以你目前只限于近似的或太慢的解决办法是不实际的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23414532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档