简单的贪心算法ppt_第1页
简单的贪心算法ppt_第2页
简单的贪心算法ppt_第3页
简单的贪心算法ppt_第4页
简单的贪心算法ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/2/21贪心算法简谈与应用举例组员:学院:通信与信息工程2023/2/22

※简谈:

算法思想

算法过程

算法分析

※应用举例:

常见应用2023/2/23ﻻ算法思想找钱的方法:25+25+10+5+1+1我们有种直觉的倾向:在找零钱时,直觉告诉我们使用面值大的硬币,剩余的金额就越少,这样找的硬币数目最少。

假设提供了数目不限的面值为25美分、10美分、5美分、及1美分的硬币。假设一个小孩买了33美分的糖果(需要找给小孩67美分)。引例——找零钱2023/2/24ﻻ算法思想

在现实生活中,我们经常为下意识的做贪心的选择,例如在购买商品时候总是寻求物美价廉的物品,在质量相同情况下,价格低的首选。贪心——抱歉我找不到更好的词去形容——是个好东西。贪心是对的,贪心是奏效的。——电影《华尔街》2023/2/25ﻻ算法思想将问题的求解过程看作是一系列选择,每次选择一个输入,每次选择都是当前状态下的最好选择(局部最优解)。每作一次选择后,所求问题会简化为一个规模更小的子问题。从而通过每一步的最优解逐步达到整体的最优解。2023/2/26ﻻ算法过程顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。找的硬币总数最少→使剩余金额最少找硬币的时候:【标准转化】贪心猜想(贪心策略)原现2023/2/27ﻻ算法过程[贪心算法步骤]从问题的某一初始解出发;

while

能朝给定总目标前进一步

do

求出可行解的一个解元素;

由所有解元素组合成问题的一个可行解;真正意义要求解原问题将原问题变成更小子问题的步骤理解2023/2/28ﻻ算法过程

【贪心算法一般步骤】1、设计数据找规律2、进行贪心猜想3、正确性证明(严格证明和一般证明)·严格证明:数学归纳和反证法·一般证明:列举反例4、程序实现2023/2/29ﻻ算法分析【适用问题】具备贪心选择和最优子结构性质的最优化问题【常见应用】会议安排问题,哈夫曼编码问题,等等【算法优点】求解速度快,时间复杂性有较低的阶.【算法缺点】需证明是最优解.整体的最优解可通过一系列局部最优解达到.每次的选择可以依赖以前作出的选择,但不能依赖于后面的选择问题的整体最优解中包含着它子问题的最优解2023/2/210ﻻ常见应用1、会议安排问题【问题陈述】设有n个会议E={1,2,…,n}要使用同一资源,同一时间内只允许一个会议使用该资源.设会议i的起止时间区间[si,fi),如果选择了会议i,则它在时间区间[si,fi)内占用该资源;若[si,fi)与[sj,fj)不相交,则称会议i与j是相容的.求解目标是在所给的会议集合中选出最大相容会议子集.【算法思路】将n个会议按结束时间非减序排列,依次考虑会议i,若i与已选择的会议相容,则添加此会议到相容会议子集.【例】设待安排的11个会议起止时间按结束时间的非减序排列事件编号1234567891011发生时刻130535688212结束时刻45678910111213142023/2/211ﻻ常见应用

会议安排问题贪心算法:voidGreedySelector(intn,Types[],Typef[],boolA[]){A[1]=true;intj=1;for(inti=2;i<=n;i++){if(s[i]>=f[j]){A[i]=true;j=i;}elseA[i]=false;}}2023/2/2122023/2/212ﻻ常见应用2、哈夫曼编码【问题陈述】哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。【算法思路】(1)以n个字母为结点构成n棵仅含一个点的二叉树集合,字母的频率即为结点的权。(2)每次从二叉树集合中找出两个权最小者合并为一棵二叉树:增加一个根结点将这两棵树作为左右子树。新树的权为两棵子树的权之和。(3)反复进行步骤(2)直到只剩一棵树为止。a:0000b:11c:1000d:1001e:101f:01g:0001h:001有八种字符:abcdefgh,其在通信联络中出现的概率分别为:0.050.290.070.080.140.230.030.11,试设计哈夫曼编码。设权w=(5,29,7,8,14,23,3,11)n=8

构造过程:529781423311538297814231178152923111411191429234229581000000000111111129232914232023/2/214谈谈自己的想法——2023/2/215选择需慎重

贪心算法在对问题求解时,总是作出在当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解。eg:数字三角形问题:有一个数字三角形(如右图)。现有一只蚂蚁从顶层开始向下走,每走下一级时,可向左下方向或右下方向走。求走到底层后它所经过的数的最大值。解:如果用贪心法,每次向最大的方向走,得到结果为1+6+8+2+3=20。可是明明还有另一条路,1+3+6+6+7=23。问题出在哪?每次的选择对后面的步骤会有影响!第三级选了8,就选不到第四、五级较大的数了。

1638262165324762023/2/216综述

贪心算法是一种分级处理方法,它得到某种度量意义下一个问题的最优解,所做的每一次选择都是当前状态下的贪心选择,通过一系列的选择来得到最终解。这种策略是一种很简洁的方法,适用于许多问题,但并不能依赖于它,因为它还有一下不足:(1)不能保证求得的最后解是最佳的,由于贪心策略总是从局部看来是最优的选择,因此从整体上考虑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论