简单的贪心算法

上传人:101****457 文档编号:89304140 上传时间:2019-05-23 格式:PPT 页数:17 大小:570KB
返回 下载 相关 举报
简单的贪心算法_第1页
第1页 / 共17页
简单的贪心算法_第2页
第2页 / 共17页
简单的贪心算法_第3页
第3页 / 共17页
简单的贪心算法_第4页
第4页 / 共17页
简单的贪心算法_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《简单的贪心算法》由会员分享,可在线阅读,更多相关《简单的贪心算法(17页珍藏版)》请在金锄头文库上搜索。

1、2019/5/23,1,贪心算法简谈与应用举例,组员: 学院:通信与信息工程,2019/5/23,2,简谈: 算法思想 算法过程 算法分析 应用举例: 常见应用,2019/5/23,3,算法思想,找钱的方法: 25+25+10+5+1+1 我们有种直觉的倾向: 在找零钱时,直觉告诉我们使用面值大的硬币,剩余的金额就越少,这样找的硬币数目最少。,假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的硬币。 假设一个小孩买了33美分的糖果(需要找给小孩67美分)。,引例找零钱,2019/5/23,4,算法思想,在现实生活中,我们经常为下意识的做贪心的选择,例如在购买商品时候总是寻求物

2、美价廉的物品,在质量相同情况下,价格低的首选。 贪心抱歉我找不到更好的词去形容是个好东西。贪心是对的,贪心是奏效的。 电影华尔街,2019/5/23,5,算法思想,将问题的求解过程看作是一系列选择,每次选择一个输入,每次选择都是当前状态下的最好选择(局部最优解)。每作一次选择后,所求问题会简化为一个规模更小的子问题。从而通过每一步的最优解逐步达到整体的最优解。,2019/5/23,6,算法过程,顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。,找的硬币总数最少使剩余金额最少,找硬币的时候:,【标准转化】,贪心猜想

3、(贪心策略),原,现,2019/5/23,7,算法过程,贪心算法步骤,从问题的某一初始解出发; while 能朝给定总目标前进一步 do 求出可行解的一个解元素; 由所有解元素组合成问题的一个可行解;,真正意义要求解原问题,将原问题变成更小子问题的步骤,理解,2019/5/23,8,算法过程,【贪心算法一般步骤】,1、设计数据找规律 2、进行贪心猜想 3、正确性证明(严格证明和一般证明) 严格证明:数学归纳和反证法 一般证明:列举反例 4、程序实现,2019/5/23,9,算法分析,【适用问题】 具备贪心选择和最优子结构性质的最优化问题 【常见应用】会议安排问题,哈夫曼编码问题, 等等 【算法

4、优点】求解速度快,时间复杂性有较低的阶. 【算法缺点】需证明是最优解.,整体的最优解可通过一系列局部最优解达到. 每次的选择可以依赖以前作出的选择, 但不能依赖于后面的选择,问题的整体最优解中包含着它子问题的最优解,2019/5/23,10,常见应用,1、会议安排问题,【问题陈述】设有n个会议E=1,2,n要使用同一资源,同一时间内只允许一个会议使用该资源. 设会议i的起止时间区间si, fi) ,如果选择了会议i,则它在时间区间si, fi)内占用该资源;若si, fi)与sj, fj)不相交 , 则称会议 i 与 j 是 相容 的 . 求解目标是在所给的会议集合中选出最大相容会议子集. 【

5、算法思路】将n个会议按结束时间非减序排列,依次考虑会议i, 若i与已选择的会议相容,则添加此会议到相容会议子集. 【例】设待安排的11个会议起止时间按结束时间的非减序排列,2019/5/23,11,常见应用,会议安排问题贪心算法: void GreedySelector(int n, Type s, Type f, bool A) A1=true; int j=1; for (int i=2;i=fj) Ai=true; j=i; else Ai=false; ,2019/5/23,12,2019/5/23,12,常见应用,2、哈夫曼编码,【问题陈述】哈夫曼编码是广泛地用于数据文件压缩的十分有

6、效的编码方法。其压缩率通常在20%90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。 【算法思路】 (1)以n个字母为结点构成n棵仅含一个点的二叉树集合,字母的频率即为结点的权。 (2)每次从二叉树集合中找出两个权最小者合并为一棵二叉树: 增加一个根结点将这两棵树作为左右子树。新树的权为两棵子树的权之和。 (3)反复进行步骤(2)直到只剩一棵树为止。,a: 0000 b :11 c: 1000 d: 1001 e: 101 f :01 g: 0001 h:001,有八种字符:a b c d e f g h ,其在通信联络中出现的概率分别为:0.0

7、5 0.29 0.07 0.08 0.14 0.23 0.03 0.11 ,试设计哈夫曼编码。 设权 w = ( 5 , 29 , 7 ,8 , 14 , 23 ,3 , 11) n = 8 构造过程:,5,29,7,8,14,23,3,11,5,3,8,7,8,15,11,19,14,29,23,42,29,58,100,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2019/5/23,14,谈谈自己的想法,2019/5/23,15,选择需慎重 贪心算法在对问题求解时,总是作出在当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解。,eg:数

8、字三角形问题:有一个数字三角形(如右图)。现有一只蚂蚁从顶层开始向下走,每走下一级时,可向左下方向或右下方向走。求走到底层后它所经 过的数的最大值。 解:如果用贪心法,每次向最大的方向 走,得到结果为1+6+8+2+3=20。可是明明还有另一条路,1+3+6+6+7=23。 问题出在哪?每次的选择对后面的步骤会有影响!第三级选了8,就选不到第四、五级较大的数了。,1 6 3 8 2 6 2 1 6 5 3 2 4 7 6,2019/5/23,16,综述,贪心算法是一种分级处理方法,它得到某种度量意义下一个问题的最优解,所做的每一次选择都是当前状态下的贪心选择,通过一系列的选择来得到最终解。这种策略是一种很简洁的方法,适用于许多问题,但并不能依赖于它,因为它还有一下不足: (1)不能保证求得的最后解是最佳的,由于贪心策略总 是从局部看来是最优的选择,因此从整体上考虑并不一定是最优解; (2)贪心算法只能用来求某些最大或最小解的问题; (3)贪心算法只能确定某些问题的可行性范围。 因此,贪心算法具有局限性,并不是总能得到最优解。,2019/5/23,17,欢迎老师和同学们批评指正! 谢谢观看,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号