- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贪心算法的图文讲解
智能信息处理-----贪心算法 贪心算法的定义 贪心算法的基本思想 贪心算法的实现思路 贪心算法的基本要素 贪心算法的特点 贪心算法存在的问题 贪心算法 (又称贪婪算法)可以简单描述为:对一组数据进行排序,找出最小值,进行处理,再找出最小值,再处理,也就是说贪心算法是一种依据某种贪心标准,从问题的初始状态出发,在每一步选择中都直接去求每一步的最优解,最终通过若干次的贪心选择得出整个问题的最优解的算法 。 贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,通过一系列的选择来得到一个问题的解,而它所做的每一次选择都是当前状态下某种意义的最好或最优的选择,即贪心选择,从而得到结果是最好或最优的算法。 贪心的基本思想 用局部解构造全局解,即从问题的某一个初始解逐步逼近给定的目标,以尽可能快地求得更好的解。当某个算法中的某一步不能再继续前进时,算法停止。贪心算法思想的本质就是分治,或者说:分治是贪心的基础。每次都形成局部最优解,换一种方法说,就是每次都处理出一个最好的方案。 利用贪心策略解题,需要解决两个问题: (1)该题是否适合于用贪心策略求解; (2)如何选择贪心标准,以得到问题的最优/较优解。 贪心算法的实现思路 应用同一规则F,将原问题变为一个相似的、但规模更小的子问题; 从问题的某一初始解出发: while 能朝给定总目标前进一步 Do 求出可行解的一个解元素; 由所有解元素组合成问题的一个可行解。 贪心算法的基本要素 贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选择最终导致问题的整体最优解。首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。做了贪心选择后,原问题简化为规模更小的类似子问题。然后,用数学归纳法证明,通过每一步做贪心选择,最终可得到问题的整体最优解。其中,证明贪心选择后的问题简化为规模更小的类似子问题的关键在于利用该问题的最优子结构性质。(先做选择,再解问题的自顶向下的方式) 最优子结构性质 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。问题的最优子结构性质是该问题可用贪心算法或动态规划算法求解的关键特征。贪心算法的每一次操作都对结果产生直接影响,而动态规划则不是。贪心算法对每个子问题的解决方案都做出选择,不能回退;动态规划则会根据以前的选择结果对当前进行选择,有回退功能。动态规划主要运用于二维或三维问题,而贪心一般是一维问题。 在动态规划算法中,每步所做的选择往往依赖于相关子问题的解。因而只有在解出相关子问题后,才能做出选择。而在贪心算法中,仅在当前状态下做出最好选择,即局部最优选择。然后再去解做出这个选择后产生的相应的子问题。贪心算法所做的贪心选择可以依赖于以往所做过的选择,但决不依赖于将来所做的选择,也不依赖于子问题的解。正是由于这种差别,动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式做出相继的贪心选择,每做一次贪心选择就将所求问题简化为规模更小的子问题。 贪心算法的特点 贪心算法最大的特点就是快,但同时存在两大难点: (1)如何贪心 具有应当采用贪心算法的问题,当“贪心序列”中的每项互异且当问题没有重叠性时,看起来总能通过贪心算法取得(近似)最优解的。当一个问题具有多个最优解时,贪心算法并不能求出所有最优解。一般单纯的贪心算法是顺序处理问题的,而且每个结果是可以在处理完一个数据后即时输出的。 (2)贪心的正确性 要证明贪心性质的正确性,才是贪心算法的真正挑战,因为并不是每次局部最优解都会与整体最优解之间有联系,往往靠贪心算法生成的解不是最优解。 贪心算法存在的问题 不能保证求得的最后解是最佳的。由于贪心策略总是采用从局部看来是最优的选择,因此并不从整体上加以考虑; 贪心算法只能用来求某些最大或最小解的问题; 贪心算法只能确定某些问题的可行性范围。 汽车加油问题 问题的提出 一辆汽车加满油后,可行使N千米。旅途中有若干个加油站。若要使沿途加油次数最少,设计一个有效算法,对于给定的N和k个加油站位置,指出应在哪些加油站停靠加油才能使加油次数最少。 编码分析 把两加油站的距离放在数组中,a[1..k]表示从起始位置开始跑,经过k个加油站,a[i]表示第i-1个加油站到第i个加油站的距离。汽车在运行的过程中如果能跑到下一个站则不加油,否则要加油。 对于这个问题我们有以下几种情况:设加油次数为k,每个加油站间距离为a[i];i=0,1,2,3……n (1)始点
您可能关注的文档
最近下载
- GB∕T 37903-2019 数控压力机可靠性评定方法.pdf
- SL 274-2020 碾压式土石坝设计规范.docx
- 《植物生产与环境》课程标准.pdf VIP
- 《植物生产与环境》课程标准.pdf
- bosch博世 GBH 5-38 X GBH 5-38 D 使用说明书.pdf
- 最新版入团志愿书模板.pdf
- 职业技术学院园林技术专业《植物生产环境》课程标准 .pdf VIP
- 国内某600MW机组双烟道直流炉省煤器旁路特性研究.pdf VIP
- 《中医基础理论》课件——津液的代谢和生理功能.pptx VIP
- 8 推翻帝制 民族觉醒 第一课时说课稿 -2023-2024学年道德与法治五年级下册统编版.docx
文档评论(0)