实验五 0-1 背包问题的算法设计
一、实验原理
1. 背包问题
背包问题已经是一个很经典而且讨论很广泛的算法问题了。
背包问题泛指这类种问题:给定一组有固定价值和固定重量的物品,以及一个已知最大
承重量的背包,求在不超过背包最大承重量的前提下,能放进背包里面的物品的最大总价值。
具体各类背包问题可以分成以下 3 种不同的子问题。
1.1 0-1 背包问题
问题描述:有编号分别为 a,b,c,d,e 的五件物品,它们的重量分别是 2,2,6,5,4,它们
的价值分别是 6,3,5,4,6,每件物品数量只有一个,现在给你个承重为 10 的背包,如何让
背包里装入的物品具有最大的价值总和?
特点:每个物品只有一件,选择放或者不放。
1.2 完全背包问题
问题描述:有编号分别为 a,b,c,d 的四件物品,它们的重量分别是 2,3,4,7,它们的价
值分别是 1,3,5,9,每件物品数量无限个,现在给你个承重为 10 的背包,如何让背包里装
入的物品具有最大的价值总和?
特点:每个物品可以无限选用。
1.3 多重背包问题
问题描述:有编号分别为 a,b,c 的三件物品,它们的重量分别是 1,2,2,它们的价值
分别是 6,10,20,他们的数目分别是 10,5,2,现在给你个承重为 8 的背包,如何让背
包里装入的物品具有最大的价值总和?
特点 :每个物品都有一定的数量。
2. 解决算法
2.1 动态规划算法
动态规划原理:动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问
题的解而避免计算重复的子问题,以解决最优化问题的算法策略。
评论0