《技术参考贪心策略》PPT课件

《技术参考贪心策略》PPT课件

ID:36891864

大小:261.10 KB

页数:33页

时间:2019-05-10

《技术参考贪心策略》PPT课件_第1页
《技术参考贪心策略》PPT课件_第2页
《技术参考贪心策略》PPT课件_第3页
《技术参考贪心策略》PPT课件_第4页
《技术参考贪心策略》PPT课件_第5页
资源描述:

《《技术参考贪心策略》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、贪心策略特点理论基础应用本讲着重探讨的是贪心策略的数学模型、理论基础("矩形胚"结构)和贪心策略的特点。(贪心选择性质和局部最优解)介绍了3种体现"贪心"思想的图形算法:Dijkstra算法、Prim算法和Kruskal算法,并着重给出了近几年来在各级各类程序设计竞赛中出现的一些题目。一、贪心策略的定义【定义1】贪心策略是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或较优解)的一种解题方法。二、贪心算法的特点1、贪心选择性质:所谓贪心选择性质是指应用同一规则f,将原问题变为一个相似的、但规模更小的子问题、而后的每一步都是当前看似最佳的选择。这种选择依赖于已做

2、出的选择,但不依赖于未做出的选择。从全局来看,运用贪心策略解决的问题在程序的运行过程中无回溯过程。2、局部最优解:我们通过特点2向大家介绍了贪心策略的数学描述。由于运用贪心策略解题在每一次都取得了最优解,但能够保证局部最优解得不一定是贪心算法。如大家所熟悉得动态规划算法就可以满足局部最优解,在广度优先搜索(BFS)中的解题过程亦可以满足局部最优解。在遇到具体问题时,许多选手往往分不清哪些题该用贪心策略求解,哪些题该用动态规划法求解。在此,我们对两种解题策略进行比较。三、贪心策略的理论基础--矩阵胚正如前文所说的那样,贪心策略是最接近人类认知思维的一种解题策略。但是,越是显

3、而易见的方法往往越难以证明。下面我们就来介绍贪心策略的理论--矩阵胚。   "矩阵胚"理论是一种能够确定贪心策略何时能够产生最优解的理论,虽然这套理论还很不完善,但在求解最优化问题时发挥着越来越重要的作用。【定义3】矩阵胚是一个序对M=[S,I],其中S是一个有序非空集合,I是S的一个非空子集,成为S的一个独立子集。如果M是一个N×M的矩阵的话,即若M是无向图G的矩阵胚的话,则S为图的边集,I是所有构成森林的一组边的子集。  如果对S的每一个元素X(X∈S)赋予一个正的权值W(X),则称矩阵胚M=(S,I)为一个加权矩阵胚。适宜于用贪心策略来求解的许多问题都可以归结为在

4、加权矩阵胚中找一个具有最大权值的独立子集的问题,即给定一个加权矩阵胚,M=(S,I),若能找出一个独立且具有最大可能权值的子集A,且A不被M中比它更大的独立子集所包含,那么A为最优子集,也是一个最大的独立子集。针对绝大多数的信息学问题,只要它具备了"矩阵胚"的结构,便可用贪心策略求解。矩阵胚理论对于我们判断贪心策略是否适用于某一复杂问题是十分有效的。四、几种典型的贪心算法贪心策略在图论中有着极其重要的应用。诸如Kruskal、Prim、Dijkstra等体现"贪心"思想的图形算法更是广泛地应用于树与图的处理。下面就分别来介绍Kruskal算法、Prim算法和Dijkstr

5、a算法。Ⅰ、库鲁斯卡尔(Kruskal)算法五、贪心策略的应用在现实世界中,我们可以将问题分为两大类。其中一类被称为P类问题,它存在有效算法,可求得最优解;另一类问题被称为NPC类问题,这类问题到目前为止人们尚未找到求得最优解的有效算法,这就需要每一位程序设计人员根据自己对题目的理解设计出求较优解的方法。下面我们着重分析贪心策略在求解P类问题中的应用。贪心策略在求P类最优解问题中的应用在现实生活中,P类问题是十分有限的,而NPC类问题则是普遍的、广泛的。在国际信息学奥林匹克竞赛的发展过程中,由于受到评测手段的限制,在1989年至1996年的8年赛事中,始终是以P类问题为主

6、的,且只允许求最优解。在这些问题中,有的题目可以用贪心策略来直接求解,有的题目运用贪心策略后可以使问题得到极大的简化,使得程序对大信息量的处理提供了可能。[例1]删数问题试题描述键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按左右次序组成一个新的正整数。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。试题背景此题出自NOI94试题分析这是一道运用贪心策略求解的典型问题。此题所需处理的数据从表面上看是一个整数。其实,大家通过对此题得深入分析便知:本题所给出的高精度正整数在具体做题时将它看作由若干个数字所组成的一串数,这是求解本题的一个重要突破。

7、这样便建立起了贪心策略的数学描述。[例2]数列极差问题试题描述在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。编程任务:对于给定的数列,编程计算出极差M。试题背景这是1997年福建队选拔赛的一道题目。试题分析当看到此题时,我们会发现求max与求min是两个相似的过程。若我们把求解max与min的过程分开,着重探讨求max的问题

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。