浅谈计算机中背包问题的动态规划解法

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:hfg595
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:背包问题和动态规划问题是计算机专业学生算法学习中的重点。本文介绍了背包问题和动态规划的基本概念,然后通过实例详细的论述了背包型动态规划的实现过程。
  关键词:0-1背包;动态规划;背包型动态规划1什么是背包问题
  背包问题(Knapsack problem)是一种组合优化的NP完全问题。大致求解的问题类型:给定N件物品,每件物品都有自己的体积和价值,在背包总体积一定的情况下,我们如何选择,才能使得背包内物品的总价值最高。它是在1978年由Merkel和Hellman提出的。与此相类似的问题常出现在商业、组合数学、计算复杂性理论、密码学和应用数学等领域中。
  2什么是动态规划
  动态规划(dynamic programming)是运筹学的一个分支,它是解决多阶段决策过程的最优化的数学方法。20世纪50年代初美国数学家贝尔曼(R.E.Bellman)等人在研究多阶段决策过程(multistep decision process)的优化问题时,把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。1957年出版了他的名著Dynamic Programming,这是该领域的第一本著作
  3什么是背包问题的动态规划解法
  所谓背包问题的动态规划解法其实也就是运用动态规划的思想快速、高效的求得背包问题的最优解的一种解题方式。我们知道对于背包问题:对于任何一件物品,我们都可以选择往背包里放或者不放;而解决动态规划的最核心一点:就是必须求得问题的状态转移方程!背包问题的选择放或者不放这两种决策方式恰恰会导致两种不同的状态,完全符合动态规划所能解决的类型。
  4举例说明背包型动态规划的具体过程
  例如:从前有一个地主老财,他的家乡发生了战乱,为了躲避这场战乱,他决定带领全家人搬迁到一个没有战乱的地方,所以他准备了一个大箱子,想把家里的值钱的东西都带走,可是家里的东西太多了,根本不能完全带走,所以他想让他的管家帮他一下,告诉他应该装哪些东西,才能使带走的东西总价值最大,并告诉他总价值是多少。下面会给出箱子的总体积V和物品的件数N,以及每件物品的体积v和价值c;任何一件物品都不可分割,因为物品一旦分割便一文不值。为了既能说明问题,又能够使描述的最简洁,我们把数值都定义的小一些!假设箱子的总体积为10,物品的件数为5;接下来的5件物品的体积和价值分别为:第一件:体积为8 价值为2;第二件:体积为4 价值为5;第三件:体积为3 价值为5;第四件:体积为4 价值为3;第五件:体积为2价值为2。
  解题思路:首先我们初始化11个箱子,表示箱子可能会出现的11种状态:如dp[0]=0表示背包内物体所占用的体积为0时,背包内物品的总价值0;dp[1]=0表示背包内物体所占用的体积为1时,背包内物品的总价值0;••••••;dp[10]=0 表示背包内物体所占用的体积为10时,背包内物品的总价值0。接下来我们来看第一组数组:体积8 价值2,我们考虑一下如果把该物品装进箱子,箱子中物品占用的体积会达到多少呢?很明显,箱子内的物品占用的体积有可能是8体积,9体积,10体积。因为如果箱子原先是空的,那么把该物品放进去后,所有物品占用的总体积为8;如果箱子原先已经放了1体积物品了,那么把该物品放进去后,所有物品占用的总体积为9;如果箱子原先已经放了2体积物品了,那么把该物品放进去后,所有物品占用的总体积为10;如果箱子原先已经放了3体积物品了,8+3=11,大于箱子的总体积,放不下!这是考虑到把物品放进箱子里,那么什么时候我们不把物品放进箱子里呢?还以上面的数据为例:如果把这件物品放进去,达到8体积的状态,价值为dp[0]+2,那么我们用dp[8]和dp[0]+2比较,如果dp[8]  列号0,1,2,3......10表示箱子中物品占用的总体积;行号0,1,2,3,4,5表示第i=0,1,2,3,4,5件物品可放入箱子中的情况下,箱子中物品的最大价值。
  很明显,箱子中放入物品后,总的最大价值为12。
  综上所述,背包型动态规划是算法中的经典问题之一,也是ACM国际大学生程序设计竞赛中的高频考点。由于竞赛中试题对该算法的考察比较灵活,因此必须深入学习该算法的思想,熟练掌握该算法的原理,才能在赛场上取得胜利,也才能在实际生活中得到广泛应用。
  
  [参考文献]
  [1]田烽楠,王于.求解0-1背包问题算法综述.软件导刊,2009,8(1):59-61.
  [2]马,朱刚,宁爱兵.蚁群优化算法.北京:科学出版社,2010.
  [3]崔逊学.多目标进化算法及其应用.北京:国防工业出版社,2008.
  [4]于惠.遗传算法的改进研究及在背包问题中的应用.山东师范大学硕士论文,2009.
  
其他文献
农业部近日召开全国农民合作社创新发展座谈会,会议强调要从实际出发,充分尊重农民意愿,因地制宜、分类指导,强化扶持服务,引导和促进合作社规范运行、创新发展,不断增强经济
江苏省盐城市通过五举措大力拓展秸秆财富化利用,变废为宝。一是推进秸秆肥料化利用。主要通过留高茬还田、覆草还田等形式来加强肥料化利用。二是推进秸秆能源化利用。充分
电化教育是现代信息技术在教育领域应用的结果,是教育现代化的主要组成部分。电教管理是电化教育的重要内容,针对目前电教管理出现的问题,提出了电教管理的创新性建议。
惠农政策迅速传达——手机报精选并及时刊登和解析国家和江苏省发布的惠农政策.帮助读者掌握政策信息,理解政策内涵,充分利用惠农政策为发家致富保驾护航
谁更会理财谁来管年轻夫妻的生活压力比较大,面临很多开支,因此积蓄往往不多。不过随着时间的积累,薪资水平不断提高,家庭财富也在逐渐增多。由于物价水平在不断上涨,这笔钱如果放
摘要:本文首先对基于Web数据库的数据库挖掘技术和数据库挖掘的概念进行总结,对基于Web数据库的数据库挖掘技术种类、种类分类以及挖掘步骤进行分析,对Web数据库挖掘技术及应用进行研究,以期对于Web数据库挖掘技术的推广,起到一定的促进作用。  关键词:Web数据库;挖掘;网络;数据1基于Web数据库的数据库挖掘技术概述  1.1 基于Web的数据库技术  现阶段,利用Web技术和数据库技术相互结合
在高速弹射时,对乘员的最大威胁依然是座椅的不稳定和气流吹袭。本项研究的目的是为人体头颈部对高速气流吹袭的耐限提供医学依据。首先进行了风洞实验,获得了人头颈部的气动
中共中央办公厅、国务院办公厅近日印发《深化农村改革综合性实施方案》,从提高农村改革的系统性、整体性、协同性出发,聚焦农村集体产权制度、农业经营体系、农业支持保护制
在毕业生就业压力越来越大的社会大环境之下,自主创新创业成为了高校毕业生就业的新途径,培养高校英语专业学生的创新创业能力,不仅有利于解决大学生未来的就业问题,并且对于
作为小学生在学校的主要负责人,班主任的工作责任重大。可是,纵观现阶段小学班主任的工作状况,并不是十分理想,追其缘由,主要是因为传统的班级管理观念根深蒂固,使得现今很多