algorithm - 寻找在不同商店购买商品的最便宜方式,但商店收取一次性费用

标签 algorithm computer-science computer-science-theory

所以我有以下问题:

k 家商店和 n 件商品。每个商店都可以以不同的价格出售这些商品(有些商店没有所有商品)。但是如果你想在特定的商店购买,你必须支付一次性费用,每个商店都不一样。如何找到购买所有元素的最便宜方式?

我现在唯一的解决办法是尝试所有可能的商店组合并寻找最便宜的。是否有更好的方法或一些启发式近似?

最佳答案

这个问题有一个非常简单的 3-SAT 归约,所以它是 NP-hard(为每个变量和每个变量的补集引入一个存储,一次费用为 1,然后作为存储的项目变量或补码满足的所有子句,以及每个变量的特殊项目,仅在变量和补码商店出售,所有成本为 0,看看您是否可以以价格k).因此,就算法而言,不会有“更好的方法”可以保证产生比蛮力搜索复杂度更高的最佳结果。

我认为模拟退火在这里会很有效:在每个退火步骤中添加或删除商店,然后找到该商店选择的最低成本。

关于algorithm - 寻找在不同商店购买商品的最便宜方式,但商店收取一次性费用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450760/

相关文章:

c - 带标准输入的 N 叉树函数(makenode、insert)

algorithm - 从 "flat array"索引计算三角矩阵索引?

java - 使用 Java 检查重复文件内容

algorithm - SiftDown 算法比较次数

p-np - 这个 P != NP 证明缺少什么?

algorithm - 如何将具有过剩流量的预流推送网络转换为流量网络

assembly - 需要帮助制作一个简单的汇编语言程序

parsing - 是否有在您键入时解析的解析器?

闭包和上下文无关语法