knapsack problem 背包问题 贪婪算法GA

knapsack problem 背包问题贪婪算法GA

给点n个物品,第j个物品的重量,价值,背包的容量为。应选哪些物品放入包内使物品总价值最大?

规划模型

max

s.t.

贪婪算法(GA)

1、按价值密度从大到小依次放入包内直到放不下,设此时放了s个物品

2、将所得价值与最大价值()所比较,取最大的作为输出

贪婪算法与最优解竞争比(近似比)为

证明:

时间: 2024-10-12 22:56:27

knapsack problem 背包问题 贪婪算法GA的相关文章

FZU 2214 ——Knapsack problem——————【01背包的超大背包】

2214 Knapsack problem Accept: 6    Submit: 9Time Limit: 3000 mSec    Memory Limit : 32768 KB  Problem Description Given a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the items into a knapsack so that the total

2018.3.5-6 knapsack problem, sequence alignment and optimal binary search trees

这周继续dynamic programming,这三个算法都是dynamic programming的. knapsack problem有一种greedy的解法,虽然简单但是不保证正确,这里光头哥讲的是dynamic的解法.其实和上次那个max weight independent set的算法差不多,同样是每个物件都判断一遍有这个物件和没这个物件两种情况,用bottom-up的方法来解,然后得到一个最大的value值,这时因为没有得到具体的选择方案,所以最后还需要一部重构的步骤得到具体方案.

FZU 2214 Knapsack problem(背包问题)

Description 题目描述 Given a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the items into a knapsack so that the total weight is less than or equal to a given limit B and the total value is as large as possible. Find

0-1背包问题(0-1 knapsack problem)

0-1背包问题描述:一个正在抢劫商店的小偷发现了n个商品,第i个商品价值 vi 美元,重 wi 磅,vi 和 wi 都是整数.这个小偷希望拿走价值尽量高的商品,但他的背包最多能容纳 S 磅重的商品,S 是一个整数,那么他应该如何拿才能使得背包中的商品价值之和最大. 0-1背包问题的特点在于这类问题只能做出二元选择,比如上面描述的问题中每个商品不可拆分,小偷要么把它拿走,要么把它留下:不能拿走商品的一部分.所以有可能最后结果小偷的背包还有多余的空间,但却不能再多放商店的商品了.这也是使用动态规划求

0-1背包问题(the knapsack problem)

---恢复内容开始--- 关键原理:动态规划. tab[i][j] = max(tab[i-1][j-weight[i]]+value[i],tab[i-1][j]) ({i,j|0<i<=n,0<=j<=total}) i表示放第i个物品,j表示背包所容纳的重量,那么tab[i-1][j-weight[i]]+value[i]表示放入第i物品. 流程: 状态转移方程:

(01背包 当容量特别大的时候) Knapsack problem (fzu 2214)

http://acm.fzu.edu.cn/problem.php?pid=2214 Problem Description Given a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the items into a knapsack so that the total weight is less than or equal to a given limit B and

【AC自动机+DP】HNU 13108 Just Another Knapsack Problem

通道:http://acm.hnu.cn/online/?action=problem&type=show&id=13108&courseid=296 题意:N个匹配串及权值,求完全匹配模式串的最大值. 思路:建AC自动机,dp[i]到达i的最大值,dp[i]=max(dp[i-L]+W); 代码:https://github.com/Mithril0rd/Rojo/blob/master/hnu13108.cpp

HNU 13108-Just Another Knapsack Problem (ac自动机上的dp)

题意: 给你一个母串,多个模式串及其价值,求用模式串拼接成母串(不重叠不遗漏),能获得的最大价值. 分析: ac自动机中,在字典树上查找时,用dp,dp[i]拼成母串以i为结尾的子串,获得的最大价值,dp[i]=max(dp[i],dp[i-len]+val[tmp]).,len是模式串的长度,val[tmp]为其价值. #include <cstdio> #include <cstring> #include <cmath> #include <queue>

FZU 2214 Knapsack problem (01背包)

题意:给你n种物品,每种只有一个,第i种物品的价值为Vi,重量为Wi,把这些物品放入一个重量限制为B的背包中,使得背包内的物品在重量不超过B的前提下,价值尽量大,输出最大价值 1 <= n <= 500 1 <= B, w[i] <= 1000000000 1 <= v[1]+v[2]+...+v[n] <= 5000 思路:我们从范围中可以看到这个物品的重量和背包所能承受的重量特别大,我们不能使用常规的01背包,我们可以把问题转化一下,我们定义d(i,j)是把第i个物