教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

背包问题(01背包问题例题讲解)

  背包问题(01背包问题例题讲解)2021-04-07 18:30·人民邮电出版社无论是Facebook、Google、Microsoft,还是百度、阿里、腾讯……每年大厂面试时总会考察动态规划问题。而作为动态规划类问题中非常重要的一个类别——背包问题,慢慢地走到了舞台中央成为面试高频题中的"佼佼者"。
  背包问题的一个例子:应该选择哪些盒子,才能使价格尽可能地大,而保持重量小于或等于15 kg?图片源自:维基百科-背包问题
  随着面试算法岗位的人数不断增多,背包问题也不像当初那样"天真无邪",如今也是 "套路" 满满。0-1背包,多重背包,完全背包等背包问题,经历大厂面试官变题型、换表达、改套路之后,让无数面试者短时间内无法找到问题需求,内心os"这题想干嘛?"。很多人都在背包问题上,跪了......
  图片源自:谷歌图片搞笑表情包
  背包问题看起来是个简单的数学问题,但背后的算法逻辑相当复杂,短时间分析不出来,基本上就凉凉了。很多人在面试过程中可能就是因为没有做出一道背包问题,而被大厂拒之门外。如何才能快速掌握背包问题的解题套路,成为大厂offer收割机呢?
  跟人邮君一起快速掌握"背包问题"解题技巧,go!趣学算法(异步图书出品)¥77.4购买什么背包问题?
  背包问题(Knapsack problem)是一种组合优化的NP完全问题。
  问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。
  相似问题经常出现在商业、组合数学,计算复杂性理论、密码学和应用数学等领域中。也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下,总价值是否能达到V。背包问题有哪些?
  背包问题分为以下五种:
  0-1背包问题
  多重背包问题
  完全背包问题
  分组背包问题
  混合背包问题学习背包问题有什么作用?
  背包问题是互联网公司最常见的算法面试题,由于其代码量较小而思维量较大的特点而深受面试官的钟爱。此外,背包问题是学习动态规划的基础,是动态规划入门阶段必须要熟练掌握的问题。这也是为什么背包问题日渐成为大厂面试高频题中的"佼佼者"的原因所在。熟练掌握0-1 背包,多重背包,完全背包等背包问题的解法,可以加深初学者对于动态规划中状态的理解。0-1背包问题
  问题描述
  给定n个物品的权重和值,将这些物品放在容量为W的背包中,以在背包中获得最大的总价值。换句话说,给定两个整数数组value[0..n-1]和weight[0..n-1],它们分别表示与n个项目相关联的值和权重。还给定代表背包容量的整数W,找出val[]的最大值子集,以使该子集的权重之和小于或等于W。本题中value[]={60,100,120},weight[]={10,20,30},
  W=50。
  解题方法方法1:通过蛮力算法或穷举搜索进行递归。
  方法:一种简单的解决方案是考虑所有项目子集,并计算所有子集的总重量和价值。仅考虑总权重小于W的子集。从所有此类子集中,选择最大值子集。
  最佳子结构:要考虑项目的所有子集,每个项目可能有两种情况。
  情况1:该项目包含在最佳子集中。
  情况2:该商品未包含在最佳组合中。
  因此,可以从n个项目中获得的最大值是以下两个值中的最大值。
  通过n-1个项和W权重(不包括第n个项)获得的最大值。
  第n个项目的值加上n-1个项目获得的最大值,W减去第n个项目(包括第n个项目)的权重。
  如果第n个项目的权重大于 W,则第n个项目不能包括在内,情况1是唯一的可能性。
  下面是上述方法的python代码实现defknapSack(W,wt,val,n):#BaseCase  ifn==0orW==0:  return0#Ifweightofthenthitemis#morethanKnapsackofcapacityW,#thenthisitemcannotbeincluded#intheoptimalsolution  if(wt[n-1]>W):  returnknapSack(W,wt,val,n-1)#returnthemaximumoftwocases:#(1)nthitemincluded#(2)notincluded  else:  returnmax(  val[n-1]+knapSack(  W-wt[n-1],wt,val,n-1),  knapSack(W,wt,val,n-1))#endoffunctionknapSack#DriverCodeval=[60,100,120]wt=[10,20,30]W=50n=len(val)printknapSack(W,wt,val,n)
  复杂度分析
  时间复杂度: O()。
  由于存在多余的子问题。
  辅助空间: O(1)。
  由于没有额外的数据结构用于存储值。方法2:通过自下而上的方式构造临时数组K[][],可以避免重新计算相同子问题。
  方法:在动态编程中,我们将考虑与递归方法中提到的情况相同的情况。在DP[][]表中,让我们将从1到W的所有可能的权重视为列,并将权重保留为行。考虑到从1到第i的所有值,状态DP[i][j]将表示j-weight的最大值。因此,如果我们考虑wi(ith行中的权重),则可以将其填充到weight value> wi的所有列中。
  现在可以发生两种可能性:
  在给定的列中填写wi。
  不要在给定的列中填写wi。
  现在,我们必须最大限度地考虑这两种可能性,形式上,如果我们不在jth列中填充ith权重,则DP[i][j]状态将与DP[i-1][j]相同,但是如果我们填充权重,则DP[i][j]将等于wi的值+上一行中权重为j-wi的列的值。因此,我们将这两种可能性中的最大值用于填充当前状态。
  下面是上述方法的python代码实现:defknapSack(W,wt,val,n):  K=[[0forxinrange(W+1)]forxinrange(n+1)]  #BuildtableK[][]inbottomupmanner  foriinrange(n+1):  forwinrange(W+1):  ifi==0orw==0:  K[i][w]=0  elifwt[i-1]<=w:  K[i][w]=max(val[i-1]  +K[i-1][w-wt[i-1]],  K[i-1][w])  else:  K[i][w]=K[i-1][w]    returnK[n][W]#Drivercodeval=[60,100,120]wt=[10,20,30]W=50n=len(val)print(knapSack(W,wt,val,n))
  复杂度分析
  时间复杂度:O(N * W)。
  其中N是重量元素的数量,W是容量。对于每个重量元素,我们遍历所有重量容量1 <= w <= W。
  辅助空间:O(N * W)。
  使用大小为"N * W"的二维数组。方法3:使用记忆技术。
  方法:此方法基本上是递归方法的扩展,因此我们可以克服计算冗余案例的问题,从而增加了复杂性。我们可以通过简单地创建一个二维数组来解决这个问题,如果我们第一次得到它,它可以存储一个特定的状态(n,w)。现在,如果我们再次遇到相同的状态(n,w),而不是以指数复杂度进行计算,我们可以直接以固定时间返回存储在表中的结果。在此方面,此方法相对于递归方法具有优势。
  下面是上述方法的python代码实现val=[60,100,120]wt=[10,20,30]W=50n=len(val)#Weinitializethematrixwith-1atfirst.t=[[-1foriinrange(W+1)]forjinrange(n+1)]  defknapsack(wt,val,W,n):#baseconditions  ifn==0orW==0:  return0  ift[n][W]!=-1:  returnt[n][W]#choicediagramcode  ifwt[n-1]<=W:  t[n][W]=max(  val[n-1]+knapsack(  wt,val,W-wt[n-1],n-1),  knapsack(wt,val,W,n-1))  returnt[n][W]  elifwt[n-1]>W:  t[n][W]=knapsack(wt,val,W,n-1)  returnt[n][W]print(knapsack(wt,val,W,n))
  复杂度分析:
  时间复杂度:O(N * W)。
  由于避免了状态的冗余计算。
  辅助空间:O(N * W)。
  使用2D数组数据结构存储中间状态。
  推荐阅读
  趣学算法
  陈小玉 著

烤肉做法(家庭烤肉准备什么食材)烤肉做法(家庭烤肉准备什么食材)原创上班族的便当20200910180300白露至,秋意浓。孟秋结束,仲秋开始,转眼就进入了一年中最舒适的季节,没有夏天的酷热,也没有冬日的严寒,清如何查华为手机的北斗定位(手机定位咋查)如何查华为手机的北斗定位(手机定位咋查)现在的社会,手机现已成为了万众随身的一种设备,它可以上网和联络朋友,可以作为人们的掌上电脑。现在的手机大多数都是智能化的,可以和电脑比美,可天空书城(当当书城)天空书城(当当书城)大鱼妈咪2019081418012019年8月12日朵云书店旗舰店正式开幕台风洗礼过后的上海更加闪闪发光高高矗立的上海中心就是上海的灯塔那么朵云书店便是这塔上的十口相传(十口相传的意思)十口相传(十口相传的意思)错用汉字,容易闹笑话。在一次聚会上,某先生为了和领导套近乎,端着酒敬领导,顺口问了一句家父还好吗?满桌大笑,领导也很尴尬。我们都知道,家父是对人称呼自己父查看别人微信删除聊天记录怎么查(微信查询删除的聊天记录)查看别人微信删除聊天记录怎么查(微信查询删除的聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机空间东方盐湖城(东方盐湖城酒店)东方盐湖城(东方盐湖城酒店)五一小长假期间,位于茅山脚下的东方盐湖城举办逍遥江湖节活动,凭借13小时不间断的演艺模式,景区共接待游客7。36万人次,同比2020年增长181。99,寻物启事(寻物启事寻物启事寻物启事)寻物启事(寻物启事寻物启事寻物启事)寻物启事本人于2019年3月15日10点从县教育局前往人社局办事的路上弄丢了一个档案袋,里面装有本人毕业证原件各种荣誉证书原件各种工资表复印件,数码知识钉钉如何分小屏设置小屏教程如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多小技巧的,这些技巧很多小伙伴一般都是不知道如何来实用的,就好比最近就有很多小伙伴们想要知道钉钉如何分小屏设置微信聊天记录可以随便查(怎么样查找聊天记录微信)微信聊天记录可以随便查(怎么样查找聊天记录微信)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时垃圾桶怎么折(立体垃圾桶怎么折)大家好,欢迎来到白云之语折纸大全。今天小编为大家带来的是一款桌面垃圾桶,很多人会问什么是桌面垃圾桶?垃圾桶还能放到桌面上去?答案是当然可以。大家看上图就知道这个垃圾桶是放在电脑笔记林海音的资料(作者简介林海音)林海音的资料(作者简介林海音)在我国现代文学史上,女作家林海音的名字太重要了。她扎根两岸共同家园,作品中充满着浓浓的儿女情结与乡愁。她的文字婉转真挚,最大的魅力是让人读完会深陷眷恋
贝壳找房发布第三季度财报营收205亿元,同比增长70。9文章来源科技讯今日,贝壳找房发布了第三季度财报,财报显示,贝壳找房第三季度营收205亿元,同比增长70。9。以下是财报主要数据1。贝壳找房第三季度净营收为人民币205亿元(约合30金山云发布第三季度财报营收17。29亿元,同比增长72。6文章来源科技讯昨日晚间,金山云发布了第三季度财报,财报显示,金山云第三季度营收17。29亿元,同比增长72。6。净亏损为人民币1。053亿元(约合1550万美元),而上年同期净亏损电影魔窟(魔窟电影高清在线观看)电影魔窟(魔窟电影高清在线观看)怎样的影片才让人感到恐惧,是巨兽的嘶吼还是怪物的变异,是丧尸的摇摆还是天灾的突袭,或者是外星的入侵?老屋的鬼脸?在小编看来,巨兽不管你多大多凶,只有屈楚萧被扒黑料(屈楚萧公开自己的尺寸)屈楚萧被扒黑料(屈楚萧公开自己的尺寸)万万没想到,2020年的娱乐圈又出了一句经典渣男语录没恋爱,别挡姑娘好姻缘。4月20日,曾饰演流浪地球男主的九零后小鲜肉屈楚萧,被拍与爱情公寓屈楚萧前女友(屈楚萧生理反应采访)屈楚萧前女友(屈楚萧生理反应采访)原创我的思想家园20210521214235你是否记得?2014有一篇长帖在豆瓣网上火了,发这篇帖子的网友叫你这个贱人,帖子的名字叫与我长跑10年现代战争片(十大必看战争片)现代战争片(十大必看战争片)大家好,我是槽君,今天我们推荐10部现代战争片,当然可能有部分没有提全,不过我还是希望大家能看到一些新电影。这部最近这部比利林恩的中场战事也是很不错的,世界大战电影(十大必看丧尸电影)世界大战电影(战争给人类带来的灾难与教训永远不能让从历史中抹去,因此战争成为了电影拍摄的热门题材。真实的还原了战火硝烟中那些铁骨铮铮的军人灵魂和普通人真实的人性。让人看的热血沸腾或悬念电影(十大必看的烧脑电影)悬念电影(十大必看的烧脑电影)今天给大家推荐一部烧脑电影盗梦空间。这部电影是由克里斯托弗诺兰导演的,以梦境为主题的科幻电影,获得了第37届美国土星奖电影类最佳导演最佳编剧等奖项。男王宝强女儿(王宝强儿子和女儿判给了谁)王宝强女儿(王宝强儿子和女儿判给了谁)星二代一直都是网友们关注的焦点,能生在明星家庭里,从小衣食无忧,听起来自然是幸运的,但有些星二代在享受优越物质生活的同时,也要忍受网友对他们家郎朗野蜂飞舞(郎朗演奏野蜂飞舞)郎朗野蜂飞舞(郎朗演奏野蜂飞舞)提及世界名曲野蜂飞舞,很多人都会自然而然地想到快很快非常快这样的词汇。该作品原是俄罗斯作曲家里姆斯基科萨科夫改编的歌剧萨旦王的故事中的乐曲,但因其极刘翔女朋友(刘翔女友吴莎简历)刘翔女朋友(刘翔女友吴莎简历)原创盖饭故事TheStory202103301819033月28日,演员葛天晒出自拍视频。视频中的她,皮肤白皙,身材傲人,看起来状态不错。自从与刘翔离