knapsack-problem相关内容

使用动态规划来找到其和最接近给定数字M的数字的子集

给定由n个正整数组成的集合A,a1,a2,...A3和另一个正整数M,我要找出A的一个子集,它的和最接近于M。换句话说,我要找到A的一个子集A‘,使其绝对值|M-􀀀Σa∈A’|最小化,其中[Σa∈A‘a]是A’的个数的总和。我只需要返回解决方案子集A‘的元素之和,而不报告实际的子集A’。 例如,如果A为{1,4,7,12},M=15,则解的子集为A‘={4,12},因此算法只需返回4+12 ..
发布时间:2022-04-01 11:13:44 其他开发

从2维矩阵到1维矩阵的0/1背包动态规划优化

我需要从维基百科得到一些澄清:Knapsack,关于 因此,该解将在O(NW)时间和O(NW)空间中运行。此外,如果 我们只使用一维数组m[W]来存储当前的最佳值 并遍历该数组i+1次,每次从m[W]重写到m[1],我们 仅对O(W)空间获得相同的结果。 我无法理解如何将2D矩阵转换为1D矩阵以节省空间。此外,rewriting from m[W] to m[1] every time ..

动态规划和

您将如何使用动态规划来查找数组中的正整数列表,其总和最接近但不等于某个正整数 K? 我有点想不通. 解决方案 通常的措辞是您正在寻找最接近但不超过 K 的值.如果您的意思是“小于 K",它只是表示您的 K 值比平时大一.如果你的意思真的只是“不等于 K",那么你基本上会运行两次算法,一次找到小于 K 的最大和,然后再次找到大于 K 的最小和,然后选择绝对值与 K 的差异最小. ..

OpenMP - 在外循环之前具有并行时,嵌套的 for 循环会变得更快.为什么?

我目前正在实施一种动态规划算法来解决背包问题.因此我的代码有两个 for 循环,一个外循环和一个内循环. 从逻辑的角度来看,我可以并行化内部 for 循环,因为那里的计算彼此独立.由于依赖关系,无法并行化外部 for 循环. 所以这是我的第一种方法: for(int i=1; i THRESHOLD)for(int c=1; c 代码运行良好,算法正确解决问题.然后我在考虑优化 ..
发布时间:2022-01-07 13:23:12 C/C++开发

使用动态变量优化背包

我正在尝试解决一个优化问题,它与背包问题非常相似,但无法使用动态规划解决.我要解决的问题和这个问题很相似: 解决方案 您确实可以使用 CPLEX 解决此问题.让我在 OPL 中向您展示这一点. 模型(.mod) {string} Categories=...;{string} 组[类别]=...;{string} allGroups=union (c in category) gr ..

如何递归解决“经典"背包算法?

这是我的任务 背包问题是计算机科学中的经典之作.在最简单的形式它涉及尝试将不同重量的物品放入一个背包,以便背包最终具有指定的总重量.您不需要适合所有项目.例如,假设你想要你的背包正好重 20 磅,你有五件物品,重量分别为 11、8、7、6 和 5 磅.对于少量物品,人类很擅长通过检查来解决这个问题.那么你大概可以算出只有8、7、5项的组合加起来是 20. 我真的不知道从哪里开始编写这个 ..
发布时间:2021-12-06 19:59:01 Java开发

使用动态规划解决多项选择背包 (MCKP)?

示例数据 对于这个问题,让我们假设以下项目: 物品:苹果、香蕉、胡萝卜、牛排、洋葱 值:2、2、4、5、3 权重:3、1、3、4、2 最大重量:7 目标: MCKP 是一种背包问题,附加约束是“[T]他的项目被细分为k个类别... 并且必须从每个类别中提取一个项目" 我已经编写了使用递归调用和记忆化的动态编程来解决 0/1 KS 问题的代码.我的问题是是否可以将 ..
发布时间:2021-10-26 18:46:44 PHP

如何解决背包问题的这种变体?

我正在尝试解决此问题:邮局中有 n个客户排队等候发送包裹. a [0],a [1],...,a [n-1] 是n位客户从第一个人到第n个人的运输成本的列表.邮政工作人员需要一分钟的时间来完成客户发送包裹所需的信息.但是,所有客户都忙于等待一段时间. t [0],t [1],...,t [n-1] 是n位客户可以在邮局消费的分钟数列表.帮助邮政工作人员找到一种服务客户的方法,以便使邮局获得最大的收益 ..
发布时间:2021-05-28 19:32:59 其他开发

打印背包里麻袋里的物品

假设您是小偷,您入侵了一所房子.在里面发现了以下物品: 一个重3磅,价值50美元的花瓶. 一个重6磅,价值30美元的银块. 这幅画重4磅,价值40美元. 镜子重5磅,价值10美元. 这个10磅大小的背包问题的解决方案是90美元. 通过动态编程制成的表是:- ..
发布时间:2021-05-03 19:05:24 其他开发

如何降低0〜1背包的时间复杂度

关于0〜1背包问题, f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} c [i]表示第i种商品的成本, w [i]表示第i种商品的价值. 我读了一个文档,说时间复杂度可以优化,尤其是当V较大时.如下所示 i=1...N v=V...0 可以更改为 i=1...n bound=max{V-sum{w[i ..
发布时间:2021-02-15 19:05:17 其他开发

在列表中查找要求和的最小数量的值

因此,如果给我一个排序后的列表/数组,即[1,6,8,15,40],数组的大小和所需的数字. 您将如何从该列表中找到所需的最小数目的值,以求和成请求的数目? 例如,给定数组[1,6,8,15,40],我请求数字23,它将使列表(8和15)中的2个值等于23.然后函数将返回2( #个值).此外,数组中的数字数量不受限制(因此您的函数将始终返回一个值) 感谢您的帮助 解决方案 ..
发布时间:2021-02-15 19:05:14 其他开发

如何从python中的文件制作元组列表

好的,我有一个像这样的文件. panite,1,1800 ruby,2,100 diamond,0.75,900 emerald,3,250 amethyst,2,50 opal,1,300 sapphire,0.5,750 benitoite,1,2000 malachite,1,60 我们的老师给了我们使用try/except的代码来帮助我们打开文件.我需要打开文件并阅读每一行,并将 ..
发布时间:2021-02-15 19:05:11 Python

递归背包Java

我正忙于完成一项家庭作业,我认为该解决方案过于复杂,需要任何愿意提供该解决方案的人提供一些帮助.让我解释一下分配的一些基本规则. 下面是指向具有确切问题信息的另一篇文章的链接. 如何递归求解“经典"背包算法? 将给出一组数字,例如:15、11、8、7、6、5.第一个数字始终对应于背包的目标或容量.我必须做的是递归地检查所有数字,看看是否有任何数字加起来有背包容量.如果是这样,我将 ..
发布时间:2021-02-15 19:05:08 Java开发

递归背包Java-错误

还有另一个背包问题...我了解背包问题的概念,但是我在代码的某些部分遇到了麻烦.我想相信自己已经朝着正确的方向前进了,但也许没有? Let's say I have a list of 1,2,3,6,7 and my goal weight is 4: The items that will equal this weight are 1 and 3. My first iteratio ..
发布时间:2021-02-15 19:05:02 Java开发

背包问题,但允许过度填充

假设我有5个项目(名称,大小,值),如下所示: ("ITEM01", 100, 10000) ("ITEM02", 24, 576) ("ITEM03", 24, 576) ("ITEM04", 51, 2500) ("ITEM05", 155, 25) 我必须获得最接近的匹配,总大小为150(每个项目只能添加一次). 这与背包问题非常相似,但不完全相同,因为在这种情况下,我的首选 ..
发布时间:2021-02-15 19:04:59 Python

背包0-1路径重建(需要采取的项目)

我知道如何使用动态编程方法解决背包0-1问题,但是在确定要取哪些物品而不影响O(N * C)(N个物品,C容量)的复杂性方面遇到了麻烦. 有什么想法(我希望采用自下而上的方法)? 解决方案 此处是对O(n)次重构路径的修改 int knapsack(int weight[], int profit[], int no_of_items, int capacity) { ..

背包问题(经典)

因此,我必须在上课时解决背包问题.到目前为止,我已经提出了以下建议.我的比较器是确定两个主题中哪个主题更好的函数(通过查看相应的(值,工作)元组). 我决定对工作量小于maxWork的可能主题进行迭代,为了找出在任何给定回合中哪个主题是最佳选择,我将最近的主题与我们尚未使用的所有其他主题进行了比较 def greedyAdvisor(subjects, maxWork, compara ..
发布时间:2021-02-15 19:04:52 Python