- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈贪心策略的特点与在信息学竞赛中的应用
【关键字】贪心策略特点理论基础应川
【摘要】
本文着巫探讨的是贪心策略的数学模型、理论基础(〃矩形胚〃结构)和贪心策略的特点。(贪 心选择性质和局部最优解)介绍了 3种体现〃贪心〃思想的图形算法:Dijkstra算法、Prim算法 和Kruskal算法,并着重给出了近几年來在各级各类程序设计竞赛中出现的一些题H。
【正文】
一、贪心策略的定义
【定义】贪心策略是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或 较优解)的一种解题方法。
其实,从〃贪心策略〃一词我们便可以看出,贪心策略总是做岀在当前看来是戢优的选择,也 就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解,而 许多问题自身的特性决定了该题运用贪心策略可以得到址优解或较优解。
二、贪心算法的特点
通过上文的介绍,可能有人会问:贪心算法有什么样的特点呢?我认为,适用于贪心算法解 决的问题应具有以下2个特点:
1、 贪心选择性质:
所谓贪心选择性质是指应用同一规则F,将原问题变为一个相似的、但规模更小的子问题、 而后的每一步都是当询看似最佳的选择。这种选择依赖丁?已做出的选择,但不依赖丁?未做出的选 择。从全局來看,运用贪心策略解决的问题在程序的运行过程中无冋溯过程。关于贪心选择性质, 读者可在后文给出的贪心策略状态空间图中得到深刻地体会。
2、 局部最优解:
我们通过特点2向大家介绍了贪心策略的数学描述。由于运用贪心策略解题在每一次都取得 了最优解,但能够保证局部最优解得不一定是贪心算法。如人家所熟悉得动态规划算法就可以满 足局部最优解,在广度优先搜索(BFS)中的解题过程亦可以满足局部最优解。
在遇到具体问题时,许多选手往往分不清哪些题该用贪心策略求解,哪些题该用动态规划法 求解。在此,我们対两种解题策略进行比较。
贪心策略动态规划
贪心策略
相同点1时间效率较高、适用于对问题的求解有严 格时间限制的题目。
相同点
2均能保证局部最优解。
所占空间较小所占空间较大
所占空间较小
所占空间较大
某次具体选择必是某次具体选择不一定
某次具体选择必是
某次具体选择不一定
最优选择
最优选择
是最优选择
解题大体框架:
线形图或树
线形
? /Kc/ X.
4 D
A—B—C—D为最优选 驚扉;代噩吉点B、
C也为最优选择
图一
【引例】在一个NXM的方格阵中,每一格子赋子一个数(即为权人规定每次移动时只 能向上或向右。现试找出一条路径,使其从左下角至右上角所经过的权之和最大。
3
4
6
1
2
10
我们以2X3的矩阵为例。
若按贪心策略求解,所得路径为:1-3-4->6;
若按动态规划法求解,所得路径为:l-2-10-6o
由于贪心策略自身的特点,使得数字10所在的格子成为一个“坏格子”,即运用贪心
策略找不到它,而运用动态规划法求解的第一歩(
策略找不到它,而运用动态规划法求解的第一歩(1-2)并不是最优选择,但却保证了
若已證-订羽臥2'则%2、%、??之臥賊—定不在数列A中。对于一元素a“(2WpWni),设 J严,若保证全局最优解,则必在数列A中,但运用贪心策略求解时a“不在 数列A中。由此可见,贪心策略并不到达间题状态的全部空间。若用空间图来表示贪心
算法和动态规划算法(如下图),我们可以蓿楚地看到,贪心算法
间题状态空间动态规划所用空间贪心策略所用空间
间题状态空间
动态规划所用空间
贪心策略所用空间
是一种对输入数据进行不断收缩的过程°它并不到达间题的全部状态空间°这是由本文 所述的贪心策略的线形解题框架所决定的。
三、贪心策略的理论基础??矩阵胚
止如前文所说的那样,贪心策略是最接近人类认知思维的一-种解题策略。但是,越是显而易 见的方法往往越难以证明。下面我们就來介绍贪心策略的理论一炖阵胚。
〃矩阵胚”理论是一种能够确立贪心策略何时能够产牛最优解的理论,虽然这套理论还很不完 善,但在求解最优化问题时发挥着越來越朿耍的作川。
【定义3】矩阵胚是一个序对M二[S, I],其中S是一个有序非空集合,I是S的一个非空 子集,成为S的一个独立子集。
如果M是一个NXM的矩阵的话,即
an? ai2 a 加 =
ail,ai2 ai?
S是M的各个行,S= (apa2 a J, I是裁形无关的若干行a,, a』.,a去……
若\1是无向图G的矩阵胚的话,则S为图的边集,T是所有构成森林的一组边的子集。
如果对S的每一个元素X (XGS)赋予一个正的权值W (X),则称矩阵胚\1二(S, I)为一 个加权矩阵胚。
适宜于用贪心策略來求解的许多问题都可以归结为在加权炬阵胚中找一个具有最人权值的 独立子集的问题,即给定一个加权矩阵胚,\1二(S, I),若能找出一个独立
文档评论(0)