9得票1回答
使用动态规划优化无界背包问题

我想知道是否有可能修改(或使用)无界背包问题的DP算法,以使背包中物品的总价值最小化,同时使总重量至少为某个最小约束C。 UKP最大化问题的自底向上DP算法: let w = set of weights (0-indexed) and v = set of values (0-in...

116得票5回答
为什么背包问题是伪多项式?

我知道背包问题是NP完全问题,但它可以通过DP解决。人们说DP解法是伪多项式,因为它在“输入长度”(即编码输入所需的位数)上是指数级别的。不幸的是我还没有理解这个概念。有人能够慢慢地向我解释一下什么是伪多项式吗?

9得票2回答
基于一个字段,获取一个大对象列表中最有效的组合

我希望在给定预算和最大限制组合的情况下,最大化星级数量。 示例问题: 有500欧元的预算,只访问允许的最大餐厅数量或更少,用餐并收集最多的星级。 我希望编写一个高效算法,可以处理多达1百万个餐厅实例,最多可选择10个餐厅。 请注意,这是我昨天提出的问题的跨贴: Java:根据字段从大...

33得票3回答
具有依赖项权重的0/1背包问题?

标准的 0/1 背包问题要求每个物品的重量都不依赖于其他物品,因此动态规划是解决该问题的一种有效算法。但现在我遇到了一个类似但是扩展了的问题: 新物品的重量取决于已经放入背包中的先前物品。 例如,我们有五个物品 a, b, c, d 和 e,它们的重量分别为 w_a, ..., w...

8得票2回答
解决分配珠子难题的算法?

假设您有一个圆圈(如下所示),其中有 N 个点,您在插槽中分布了 N 个珠子。 这是一个例子: 每个珠子可以顺时针移动 X 个插槽,这需要花费 X ^ 2 美元。 您的目标是最终在每个插槽中放置一个珠子。 您需要花费的最少金额是多少? 此问题的更有趣的变体:分配珠子难题的算法(2)?

7得票2回答
为什么这个0/1背包问题的DP解决方案在使用GCC时不能给出正确的输出?

#include<stdio.h> int max(int a,int b) { if(a>b) return a; else return b; } void knapsack(int m,int n,int w[],in...

7得票4回答
遗传算法和动态规划哪种方法更适合解决经典的0-1背包问题?

假设我有以下问题: 背包容量= 2000万 物品数量= 500 每个物品的重量是介于100到2000万之间的随机数 每个物品的利润是介于1到10之间的随机数 那么对于我的问题,哪种方法最好?遗传算法还是动态规划? 请给我一个简单的解释,因为我是新手...

8得票5回答
曲棍球游戏池算法

这是一个小有趣的项目,我开始尝试最大化赢得我们办公室冰球比赛的机会。我正在尝试找到在最大薪资帽下能给我带来最多积分的20名球员。 例如,假设原始数据由以下信息组成: 球员姓名 位置(前锋、后卫、守门员) 本赛季预计得分 薪资 现在我想要在X薪资帽下选出使我获得最多积分的20名球员。以...

16得票2回答
变形背包问题 - 最小总价值超过“W”

假设有常见的n个物品集合(每个集合数量不限),其中包括它们的权重和价值:w1, v1 w2, v2 ... wn, vn 给定一组物品,每个物品有一个重量 w 和一个价值 v,以及一个目标重量 W,需要选择物品使得总重量至少为 W 且总价值最小化。 这看起来像是整数/无限背包问题的一个变种(...

18得票4回答
如果子问题没有重叠,那么DP如何帮助解决0/1背包问题?

考虑典型背包问题的以下输入。V = [10,8,12] W = [2,3,7] i = 1,2,3 C = 10 我尝试使用带记忆化的递归来解决这个示例,但没有发现重叠子问题。递归过程的签名:knapsack(int c, int i) 最初被称为knapsack(10,1) 解决方...