- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
论随机化算法的原理与设计
上海市控江中学 周咏基
[关键字]
随机化算法,稳定性
[摘要]
本文提出了一种新的解决信息学问题的算法—— 随机化算
法,并讨论了其原理与设计方法。论文首先给出随机化算法的定
义,说明了由于“运气”的影响,必须对随机化算法的稳定性进
行分析。然后分“随机不影响算法的执行结果” ,“随机影响执行
结果的正确性” ,“随机影响执行结果的优劣”三种情况,以从基
本算法到竞赛试题中用随机化算法有效解决问题的例子,详细分
析了三种情况的随机化算法的原理与设计方法。最后总结出随机
化算法的基本原理和共同性质,提出设计随机化算法的一般方
法,并指出随机化算法的适用范围和一个有效的随机化算法应具
备的特点。
[正文]
1.引论
在这篇论文中,我们将研究一种新概念的算法—— 随机化算法。顾名思义,
随机化就是指使用了随机函数。这里的随机函数不妨是Borland Pascal(或Turbo
Pascal) 中的RANDOM(N) ,其返回值为[0,N-1]中的某个整数,且返回每个整数都
是等概率的[1] 。
一个含有随机函数的算法很可能[2]受到不确定因素的支配。人们通常认为,
一个受到不确定因素支配的算法肯定不是一个有效的算法—— 正是在这种思维
方式的支配下,随机化算法一直被冷落——但是,在接下来的讨论中,我们将看
到完全相反的事情发生:对于一些特定的问题,随机化算法恰恰成了十分有效的
解题工具,有时甚至比一般的非随机化算法做得更好。
随机化算法的定义
随机化算法是这样一种算法,在算法中使用了随机函数,且随机函数的返回
值直接或间接地影响了算法的执行流程或执行结果。
根据这个定义,并不是所有的用了随机函数的算法都可称为随机化算法。例
如,某个算法包含
i←RANDOM(N) ,
- 36 - IOI’99 中国集训队优秀论文选
论随机化算法的原理与设计
但变量i 除了在这里被赋予一个随机值之外,在其它地方从未出现过。显然,如
果这个算法没有在其它地方用过随机函数,上面这条语句就无法影响执行的流程
或结果,这个算法就不能称为随机化算法。
另一方面,若一个算法是随机化算法,则它执行的流程或结果就会受其中使
用的随机函数的影响。我们按影响的性质和程度分三种情况:
1.随机不影响执行结果。这时,随机必然影响了执行的流程,其效应多表
现为算法的时间效率的波动。
2 .随机影响执行结果的正确性。在这种情况中,原问题要求我们求出某个
[3]
可行解,或者原问题为判定性问题 ,随机的效应表现为执行得到正确解的概率。
3 .随机影响执行结果的优劣。这时,随机的效应表现为实际执行结果与理
论上的最优解或期望结果的差异。
第2 ,3 种情况中,随机的影响还可能伴随有对执行流程的影响。
我们后面的讨论就分这三种情况进行。在讨论之前,我们还要澄清一个问题。
随机化和“运气”
由于随机化算法的执行情况受到不确定因素的支配,因此即使同一个算法在
多次执行中用同样的输入,其执行情况也会不同,至少略有差异。差异表现为出
解速度快慢,解正确与否,解的优劣等等。例如:一个随机化算法可能在两次执
行中,前一次得到的解较优,后一次的较劣。现在的问题是:在大多情况中,尤
其是竞赛时,对于同样的输入,只允许程序运行一次,根据运行结果判定算法的
好坏。如此一来,我们就会把出劣解的一次运行归咎于运气不佳,反之亦然。然
而,比赛比的是谁的算法更有效,而不是谁的运气更好。
既然我们使用了随机函数,我们就无法摆脱运气的影响,所以我们的目标是
尽量将运气的影响降到最低。也就是说,我们必须使算法的执行情况较为稳定。
因此,在接下来的对算法的分析中,我们将从以下四方面分析算法的性能。
1.时间效率;
2 .解的正确性;
3 .解的优劣程度(解与最优解的接近程度) ;
4 .稳定性,即算法对同样的输入的执行情况的变化。变化越小则越稳定。
非随机化算法的稳定性
文档评论(0)