算法设计与分析_第4章_贪心算法2
- 格式:pdf
- 大小:935.55 KB
- 文档页数:29
1算法设计与分析第4章贪心算法2学习要点理解贪心算法的概念掌握贪心算法的基本要素(1)最优子结构性质(2)贪心选择性质理解贪心算法与动态规划算法的差异 理解贪心算法的一般理论3学习要点通过应用范例学习贪心设计策略(1)活动安排问题;(2)最优装载问题;(3)哈夫曼编码;(4)单源最短路径;(5)最小生成树;44背景Similar to dynamic programming. Used for optimization problems .Optimization problems typically go through a sequence of steps, with a set of choices at each step.For many optimization problems, usingdynamic programming to determine the best choices is overkill (过度的杀伤威力). 贪心算法: Simpler, more efficient5背景应用找钱四种硬币:1分,5分,1角,2角5分找六角3分,怎么给?排队时出现拥挤情况,如何做才能节省时间?6背景研究程卫芳,廖湘科,沈昌祥.有向传感器网络最大覆盖调度算法.软件学报,2009,20(4):975-984崔鹏,刘红静.测试集问题的集合覆盖贪心算法的深入近似.软件学报,2006,17(7):1494-1500刘勇,高宏,李建中.基于联合意义度量的Top-K 图模式挖掘.计算机学报,2010,2期:215-230 张海英,温玄,张田文.低信噪比多目标检测的贪心算法.计算机学报,2008,1期:142-1507贪心算法的基本要素贪心(Greedy)算法总是作出在当前看来最好的选择。
贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。
希望贪心算法得到的最终结果也是整体最优的。
算法分析与设计实验二贪心算法贪心算法(Greedy Algorithm)是一种常用的算法设计方法,其核心思想是在每一步都做出当前情况下最优选择,以期望最终得到全局最优解。
本实验主要介绍贪心算法的原理、应用和分析。
一、贪心算法的原理贪心算法的基本思路是在每一步都做出当前情况下最优选择,并且不考虑当前选择对后续选择的影响。
贪心算法通常采用贪心选择策略和最优子结构两个基本要素。
1.贪心选择策略贪心选择策略是指在每一步都选择当前情况下最优解的策略。
这种策略要求我们能够证明,通过选择当前最优解,可以使得问题的规模减小到原问题的一个子问题,并且该子问题的最优解一定包含在全局最优解中。
2.最优子结构最优子结构是指问题的最优解包含其子问题的最优解。
贪心算法求解问题的过程通常包括两个步骤,选择最优子结构和利用最优子结构得到最优解。
二、贪心算法的应用1.集合覆盖问题集合覆盖问题是指在给定的一组集合中,找出最小的子集合,使得这些子集合的并集包含所有的元素。
贪心算法可以通过每一步选择包含最多未覆盖元素的集合,直到覆盖所有元素为止。
2.挑选活动问题挑选活动问题是指在给定一组活动的起始时间和结束时间,找出最大的相容活动子集合。
贪心算法可以通过每一步选择结束时间最早的活动,之后将该活动与其他相容的活动进行比较,从而得到最大的相容活动子集合。
3.分数背包问题分数背包问题是指在给定一组物品和一个背包容量的情况下,选择部分物品放入背包,使得放入背包的物品总价值最大。
贪心算法可以通过每一步选择单位重量价值最高的物品,直到背包容量不足为止。
三、贪心算法的分析贪心算法通常具有高效性和近似最优性的特点。
由于贪心算法每一步都选择当前最优解,不进行回溯和剪枝的操作,因此贪心算法的时间复杂度较低。
然而,贪心算法并不总能得到问题的最优解,它通常只能得到近似最优解。
贪心算法的近似性证明可以分为两步。
首先,我们需要证明贪心选择策略的正确性,即每一步选择的最优解一定包含在全局最优解中。