下载此文档

论文--浅析非完美算法在信息学竞赛中的应用.doc


文档分类:IT计算机 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
浅析非完美算法在信息学竞赛中的应用【目录】摘要 2关键字 2正文 2引言 2非完美算法的一些基本方法 3随机贪心法 3抽样测试法 4部分忽略法 8完美算法的依据——RP类问题与Monte-Carlo算法 11非完美算法的共性 11非完美算法的优点与缺点 12总结 13感谢 13参考文献 13附录 13【摘要】非完美算法就是用算法正确性的少量损失来换取时间、空间效率以及编程复杂度的算法。本文介绍了非完美算法的几种重要方法及非完美算法的优缺点,从中,可以看出:并不是完全正确的算法就一定好过非完美算法,有可能因为非完美算法的不完全性,反而使不正确的算法在很多方面比正确算法表现得更好。【关键字】非完美算法随机化贪心法抽样测试法部分忽略法【正文】一、引言在平时,我们研究的算法基本都是完全正确的算法,我们所追求的,也是尽量使我们的算法正确。但在实际应用中,有很多情况都不会对数据进行天衣无缝的正确处理。如:图片、音频、视频的压缩存储,很多压缩率比较高的方法都是有损压缩;很多密码验证的方法都是采用多对一的运算方法,通过验证的不代表密码真正正确;搜索引擎所提供的搜索,并不能将所有满足条件的都找到……显然,我们不会因为它们的不完美而不使用它们,它们的存在,有着它们的实际意义:图片、音频、视频的压缩存储,如果不损失一些,不可能将文件压缩得很小;密码验证虽是多对一,但找到两个所对的是同一个何尝容易;搜索引擎虽不能搜索到100%的结果,但其方便、快捷是无以伦比的……那么,在信息学竞赛中是否也可以用非完美算法解题呢?本文试图介绍一些比较有用的常见非完美算法,并希望读者能从此得到一些启发。在开始此文前,希望读者能认同一点:在信息学乃至整个计算机科学领域,不一定绝对正确的算法就是最好的算法,有可能一个在绝大多数情况下正确的算法(非完美算法)比一个完全正确的算法更有前途。或者,由于它没有完全正确的算法考虑得全面,而使得它的空间或时间使用得较少;或者,由于它没有正确的算法那么严谨,使得编程实现时较容易;或者,由于所用的知识没有正确算法那么深奥,使得它更容易被接受。二、《论随机化算法的原理与设计》中有写过,为了此文的完整性,这里将通过一个实例简要的说明。法随机化贪心是目前用得较广泛的一种非完美算法。特别是对求较优解的题目,这种方法可以说是首选。随机贪心,就是用随机与贪心结合,在算法的每一步,都尽量使决策取得优,但不一定是最优决策。通过多次运行,使得算法能取得一个较优的解。有时,由于决策的优劣判断较复杂,直接用多次随机也能得到较优的结果。例:传染病控制题目来源:NOIP2003,原题请见附录。题目大意给出一棵传染病传播树,其中根结点是被感染结点。每个时刻,被感染结点都会将传染病传播到它的子结点。但是,如果某时刻t切段A与其父结点B之间的边,则时刻t以后,传染病不会从B传染给A(即A不会患病)。每个时刻,只能切断一条传播途径。问每个时刻怎样切段传播途径,使最少的人被感染。说明本题的标准算法是搜索。关于如何用搜索解决此题,请参见附件《传染病控制解题报告》,此解题报告由周戈林同学提供。分析显然,如果某个结点已被感染,则以后没有必要切断它与它的父结点之间的传播途径,因为这样和不切断没有区别(即切断已被感染的结点与其父结点之间的传播途径是无效的);如果在一个时刻,切断A与A的父结点之间的传播途径是有效的,切断B与B的父结点之间的传播途径也是有效的,同时,B是A的子孙结点,则切断A与A的父结点的传播途径优于切断B与B的父结点的传播途径。由于第t时刻被感染的显然只可能是前t层的。因此可得到,第t时刻切断的必然是第t层与第t+1层之间的传播途径。本题可以用随机贪心来做。根据经验,每次将一个结点数最多的子树从原树中切开,结果会比较好。但这样并不能适应所有情况,有时,选结点数第二多的或第三多的反而能使以后的最终结果要好一些。所以,可以多次贪心,每次都随机的选一个能切断的结点数较多的方案切(或者说每次使能切断的结点数多的方案数被切的几率大一些),这样,虽然大多数情况下其结果都比贪心要差,但只要随机到一定的数量,这中间出现正确答案的概率就很大了。上面加概率的随机贪心有一点难处理的就是怎样设置每种情况被选择的概率。其实,对于此题,只要将每种情况被选到的概率都设成同样大(即被选中的概率与其子结点数无关)就可以了。这样,这种方法就变成了纯粹的随机法,这种方法也能使此题得到满分。小结随机贪心是信息学竞赛中的一个重要工具,由于一般情况下它都是基于简单的贪心,所以往往编程复杂性会比较低,同时运行的时间复杂度也会比较低。随机多次是随机贪心的一个重要手段,通过多次运行,往往能使程序得到非常优的结果。,即从统计总体中,任意抽

论文--浅析非完美算法在信息学竞赛中的应用 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zl201163zl
  • 文件大小182 KB
  • 时间2019-07-16