- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从一个基本方法谈起
例5 聪明的打字员 例: 如果通过k次可达到排列356124(其中红色表示光标达到过的位置) 最后的密码如果是371194,则通过这种方案需要一共操作k+(7-5)+(6-1)+(9-2)=14+k步 最后通过所有排列方案求得的步数中取一个最小值,即为答案。 搜索的剪枝 通常情况下,搜索的剪枝考虑下面几个方面: 判重:避免枚举重复的节点 最优化剪枝:如果当前部分搜索方案比目前求得的最优方案还要差,则剪枝。 可行性剪枝:如果可以判断继续按当前方向搜索下去,必定无解或者达不到最优解,则剪枝。 例6 木棍问题 John有一组等长的木棍,他将它们随机地截断,使得每一节木棒都不超过50个单位长度。然后他又想要把这些木棒拼接恢复到裁切之前的长度,但他却忘了木棒的初始长度。 现在给你裁切之后的所有木棒的长度,请求出初始木棒的最小可能长度。 裁切后木棒根数64 例6 木棍问题 我们考虑从小到大枚举初始木棒的长度,然后判断这个长度可不可以由当前的木棒拼接而成。(枚举的边界?) 深度优先搜索(下面函数头仅供参考) bool check(int k, int now, int largest, int len, int tot) k:当前在拼第几根 now:当前这根拼了多长 largest: 当前未被用上的最长的木棍编号 len:初始木棒的长度 //可定义为全程变量 tot:初始木棒一共需要多少根 //可定义为全程变量 搜索的时候把木棒按长度排序,每次选木棒都选尽量长的。 例6 木棍问题 剪枝1:每次开始拼新棍子的时候,必定选择剩下的木棒里面最长的一根,作为组成该棍子的第一根木棒。如果此路不通,则可以直接回溯。 剪枝2:由于长度相同的木棒是没有差别的,可以它们合并起来,每次只需枚举该长度用多少根即可。 剪枝3:…… 例7 金明的预算方案 金明在做预算,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的。 如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有0个、1个或2个附件。附件不再有从属于自己的附件。金明想买的东西很多,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是10元的整数倍)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,……,jk,则所求的总和为: v[j1]*w[j1]+v[j2]*w[j2]+ …+v[jk]*w[jk]。(其中*为乘号) 请你帮助金明设计一个满足要求的购物单。 例7 金明的预算方案 例: Input: 1000 5 800 2 0 400 5 1 300 5 1 400 3 0 500 2 0 Output: 2200 N32000 M60 例7 金明的预算方案 把每个主件和属于它的附件组合在一起,构成属于这个主件的不同方案。 例如 800 2 0 400 3 1 100 5 1 该主件有两个附件,则它的不同方案有(1)(1,2)(1,3)(1,2,3) 由于每个主件至多有2个附件,所以至多有4个方案 例7 金明的预算方案 考虑深度优先搜索: Void search(int Money, int k) //Money表示还剩多少钱,k表示当前枚举到第几个主件 在搜索内部枚举使用该主件的第几个方案 该算法效率不高,原因是存在着大量的重复计算:对于同样的(Money, k),我们可能要进行多次计算; 而对于当前的搜索状态(Money, k),接下来的搜索结果与之前的枚举无关 例7 金明的预算方案 我们考虑用数组f [Money][k]从(Money, k)开始搜索得到的最优值。 记忆化搜索! 冗余计算没有了,算法效率大大提高。这就是动态规划的一种表现形式。 算法的时间复杂度为O(Nm) 动态规划的实质 从上面的分析可以看出,动态规划可以看成是对搜索的一种记忆化优化 动态规划就是将搜索时重复结算的状态保存下来,以空间换时间。 记忆化搜索往往是按自顶向下的方向求解,而我们平常所写的动态规划往往是自底向上的方向求解。 故实质上可以看成是记忆化搜索的一种非递归形式 例8 Help Jimmy Help Jimmy 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者
您可能关注的文档
- 五庙乡防台风和山洪灾害.doc
- 五年级下册口语交际习作1 2.ppt
- 交通行业特有工种.doc
- 人才质量,控制有方.docx
- 人教版二年级上复习资料有用.doc
- 人教版七年级英语下册unit 4 Section B.ppt
- 人教版小学品德与社会六年级上册教案(全册)13-14学年.doc
- 京都袛园祭 历史与魅力的融合.doc
- 人生启示—学做有钱人.ppt
- 人物描写(课用).ppt
- 2024年云阳县公务员考试行测试卷历年真题及答案详解(有一套).docx
- 2024年垫江县公务员考试行测试卷历年真题及答案详解(名师系列).docx
- 2024年巴音郭楞蒙古自治州公务员考试行测试卷历年真题精选答案详解.docx
- 2024年毕节地区公务员考试行测试卷历年真题含答案详解.docx
- 2024年怀化市公务员考试行测真题及一套完整答案详解.docx
- 2023年龙岩市公务员考试行测试卷历年真题及答案详解(名校卷).docx
- 2024年咸宁市公务员考试行测试卷历年真题及完整答案详解.docx
- 2024年云浮市公务员考试行测试卷历年真题带答案详解.docx
- 2024年七台河市公务员考试行测试卷历年真题及答案详解(典优).docx
- 2024年大理州公务员考试行测真题及答案详解(全优).docx
文档评论(0)