- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第14章经典算法思想
2025-6-10
1
主要内容
贪心算法
动态规划
回溯算法
2025-6-10
2
经典算法思想是经过长时间的实践积累,总结出的算法思想。通过运用经典算法思想去分析问题,采用抽象的数学模型来描述问题,然后再使用算法进行求解,能够提高算法的效率和解决问题的质量。很多重要的具有特色算法都是在经典算法思想的基础上发展起来的,例如深度学习中的神经网络就是基于动态规划和优化的思想而发展起来的。总之,经典算法思想的重要性不仅在于它们被广泛应用于解决实际问题,更重要的是这些思想具有一定的普适性和通用性,是学习算法设计者必须要了解和掌握的。
2025-6-10
3
本章讲解贪心算法、动态规划和回溯算法这三种经典算法思想,这些算法思想和普通的具体的算法,比如起泡排序、二分法、遍历二叉树等算法不同,这些算法思想不会给出具体的代码流程,仅仅是提供一种算法的设计思想或解决问题的算法思路,这些算法思想应用在不同的具体问题里,所呈现的具体代码可能有很大的差异。
。
14.1贪心算法
2025-6-10
4
⒈贪心算法
贪心算法(也称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。即不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。也就是说,不从整体最优上加以考虑,做出的只是在某种意义上的局部最优解。贪心算法的特点是一步一步地进行,以当前情况为基础,根据某个算法作最优选择,而不考虑各种可能的整体情况,通过每一步贪心选择,可得到局部最优解。由于贪心算法每一步是局部最优解,因此,如果使用贪心算法,必须要判断是否得到了最优解。
14.1贪心算法
2025-6-10
5
⒈贪心算法
例如,蒙眼爬山,蒙眼爬山者选择的策略是每次在周围选择一个最陡峭的方向爬行1小步(局部最优选择),但是蒙眼爬山者最后爬上去的山可能不是最高的山(爬山者周围是多峰山),假设蒙眼爬山者携带了一个自动通报海拔高度的小仪器,每次都报告海拔高度,当蒙眼爬山者发现周围没有陡峭的方向可走了,报告海拔高度恰好是想要的高度,那就找到了最优解,否则就知道自己旋入了局部最优解,无法继续下去了。
贪心算法仅仅是一种思想而已,不像我们熟悉的选择法排序、二分法等算法有明确的算法步骤。
2025-6-10
6
14.1贪心算法
2老鼠走迷宫
贪心策略如下(这里称二维数组元素为路点,其值为路值)。
①如果当前路点不是出口(最大值),即不是最优解,就降低优先度,将当前路值减1,进行②,如果当前路点是出口(最大值)进行④。
②在当前路点的东西南北方向选出路值比当前路值大的最大新路点,如果找到进行③,否则回到①。
③老鼠达到选出的新路点,进行①。
④结束。
如果路点的路值不会被减到等于墙的值(MIN_VALUE),就一定能到达出口,否则某个路点或墙会被当成出口(因为MIN_VALUE-1等于MAX_VALUE,老鼠陷入局部最优解)。
2025-6-10
7
14.1贪心算法
2老鼠走迷宫
例子1
ch14_1.py
ch14_1.py中的walk_maze()函数使用了贪心算法,main()函数使用walkMaze()演示了老鼠走迷宫、老鼠找到了出口.
显示效果的提示:如果路值是-1表示老鼠走过此路点1次、-2老鼠走过此路点2次……依次类推
14.2动态规划
2025-6-10
8
⒈动态规划
2025-6-10
9
14.2动态规划
2.0-1背包问题
0-1背包问题中的价值和重量仅仅是问题的一种描述形式,对于某些实际问题,重量可能是体积等其它单位,比如,集装箱装载货物的0-1背包问题,可能用体积代替重量。
2025-6-10
10
14.2动态规划
2.0-1背包问题
0-1背包是背包问题中最简单的问题,动态规划的思想很适合用于解决0-1背包问题。
2025-6-10
11
14.2动态规划
2.0-1背包问题
0-1背包是背包问题中最简单的问题,动态规划的思想很适合用于解决0-1背包问题。
2025-6-10
12
14.2动态规划
2.0-1背包问题
0-1背包是背包问题中最简单的问题,动态规划的思想很适合用于解决0-1背包问题。
2025-6-10
13
14.2动态规划
2.0-1背包问题
例子2用动态规划求解0-1背包问题
ch14_2.py
ch14_2.py中的DP()函数是背包算法,本例main()函数中使用DP()函数解决了下列两个背包问题:
①背包最多可以载量8kg的物品,现在有重量依次为2,4,5,1(单位是kg)的4件物品,对应的价值依次为7,6,8,2(单位是¥)。怎样让背包
您可能关注的文档
- 第1章 数据结构简介.pptx
- 第2章 算法复杂度.pptx
- 第3章 递归算法.pptx
- 第9章 散列结构.pptx
- 第12章 Python的实用算法.pptx
- 第11章 链表教学课件.pptx
- 第8章 二叉树教学课件.pptx
- 第6章 栈教学课件.pptx
- 第4章 数组教学课件.pptx
- 第5章 列表教学课件.pptx
- 新人教版英语9年级上册整册同步课件(2025年5月修订).pptx
- 2025年新北师大版数学7年级上册教学课件.pptx
- 2025年新人教版高中化学必修第2册教学课件.pptx
- 2024年秋季新人教PEP版三年级上册英语教学课件unit1 A 第3课时.pptx
- 人教版数学6年级上册整册同步课件.pptx
- 2025年新统编版语文7年级上册整册同步教学课件.pptx
- 2024秋新冀教版数学一年级上册课件 第一单元 熟悉的数与加减法 5.整理与复习.pptx
- 2024年秋季学期新冀教版物理八年级上册课件 第五章 一元一次方程 5.3.2 用去括号、去分母解一元一次方程.pptx
- 北师大版数学9年级上册整册同步课件(2025年7月修订).pptx
- 2024年新苏教版数学一年级上册全册课件 第四单元 10的认识和加减法第3课时 加减法实际问题.pptx
文档评论(0)