145
社区成员
发帖
与我相关
我的任务
分享一、 概括第四章学习内容,总结第四章学习心得。
1学习内容
1.1贪心算法的概念:贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。
1.2贪心算法的特点:
(1)随着算法的进行,将积累起其它两个集合:一个包含已经被考虑过并被选出的候选对象,另一个包含已经被考虑过但被丢弃的候选对象。(2)有一个函数来检查一个候选对象的集合是否提供了问题的解答。该函数不考虑此时的解决方法是否最优。
(3)还有一个函数检查是否一个候选对象的集合是可行的,也即是否可能往该集合上添加更多的候选对象以获得一个解。和上一个函数一样,此时不考虑解决方法的最优性。
(4)选择函数可以指出哪一个剩余的候选对象最有希望构成问题的解。
(5)为了解决问题,需要寻找一个构成解的候选对象集合,它可以优化目标函数,贪婪算法一步一步的进行。起初,算法选出的侯选对象的集合为空。接下来的每一步中,根据选择函数,算法从剩余候选对象中选出最有希望构成涌的对象。如果集合中加上诙竣后不可行,那么该对象就被丢弃并不再考虑,否则就加到集合里。每一次都扩充集合,并检查该集合是否构成解。如果贪婪算法正确工作,那么找到的第一个解通常是最优的。
1.3可用贪心算法求解问题的特征:
(1)最优子结构性质:一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质,也称此问题满足最优性原理。这是贪心算法可行的第一个基本要素。最优子结构性质是某问题可用动态规划算法或贪心算法求解的关键特性。
(2)贪心选择性质:贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择(贪心选择)得到。贪心算法通常以自顶向下的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题,然后再求解一次贪心选择后产生的子问题解。
2心得体会
本章主要针对贪心算法进行系统学习,针对贪心算法的概念、基本要素等进行了学习,结合0-1背包问题和背包问题对贪心算法和动态规划算法进行了区分,以及针对贪心算法所应用到的实例即哈夫曼编码、单源最短路径、最小生成树等知识点进行了复习与巩固,增强了对其应用的能力。
二、以{0-1}背包问题和背包问题为例,讨论动态规划算法与贪心算法的异同。
不同点:
贪心算法对于背包问题不能得到最优解,算法无法保证将背包装满,部分背包闲置,空间使每公斤背包空间的价值降低。 动态规划算法比较了选择和不选择物品的所有可能方案,最后在所有方案中找出最好的选择,并导出许多相互重叠的子问题,这正是动态规划算法求解的一个重要特征。动态规划算法通常以递推的方式求解各个子问题,某个子问题的解依赖于已知子问题的最优解再作出选择。贪心算法通常以一系列的局部贪心选择和求解,每个局部阶段,先作贪心选择再解决子问题。
相同点:
动贪心算法和态规划算法都要求问题具有最优子结构性质。
三、 算法实验1:完成教材114页算法实现题4-2,总结实验出现问题及解决方法。



算法实验2:完成教材118页算法实现题4-14,总结实验出现问题及解决方法。
