算法合集之浅谈调整思想在信息学竞赛中的应用.docVIP

算法合集之浅谈调整思想在信息学竞赛中的应用.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法合集之浅谈调整思想在信息学竞赛中的应用

浅谈“调整”思想在信息学竞赛中的应用 浙江省绍兴市第一中学 唐文斌 摘要 当前信息学竞赛中的题目难度越来越大、数据关系越来越复杂,往往很难找到一种直接求得最优解的方法。退而求其次,先任意找到一个可行解,再对这个可行解通过一系列调整、变换,不断地对方案进行改进,最终符合我们的要求,这便是一种“调整”的思想。这种思想在信息学竞赛中有着相当广泛的应用,在一些非最优化的开放性问题中更有着杰出的表现,但是它在各类问题中的表现形式又是多种多样的。 本文将选取几个具有代表性的例题,说明“调整”思想在各类问题中的应用,并提炼出它们的共同点。 关键字 信息学竞赛 调整思想 随机化 调整/改进/变换 非最优化问题 引入 “调整”这个词语,大家应该都不会陌生,因为在日常的生活工作中经常能听到。例如我们平时洗澡的时候,如果水太烫,那么我们就把水温调低;如果水太凉,就把水温调高,这就是一种“调整”。 “调整”的本意为“改变原有的情况,使之更适应客观环境和要求”,例如“产业结构调整”、“军事战略调整”等等都是通过对结构、战略的调整改良,使之更加优秀,从而赢得更大的利益。 这种思想,在计算机科学中自然并不少见。例如解决线性规划问题的经典算法——“单纯形算法”,以及目前很流行的“模拟退火算法”,都用到了这一思想。那么,让我们来看看这一思想在信息学竞赛解题中的精彩表现把! “调整思想”在一类构造问题中的应用 [例题一]远程通信(Baltic 2001) 波罗的海上有两个小岛:Bornholm和Gotland。在每个小岛上都有一些神奇的远程通信端口,每个通信端口可以运行在两种模式下——发送模式和接收模式。Bornholm和Gotland分别有n和m个这样的端口,每个端口都连接着另一个小岛某个端口,称为“目标端口”。 请设置这n+m个端口的模式,使得所有端口都处于工作状态,即: 对于处于接收模式的端口A,另一个小岛上至少有一个以A为目标端口的端口被设置成发送模式。 对于处于发送模式的端口B,它的目标端口必须处于接收状态。 其中1≤n , m≤50000。 如下图(每个点指向的点表示它的目标端口): 那么它的一种设置方案为: 即Bornholm岛上1号、4号端口与Gotland岛上2号、5号端口被设置为接收状态,其他端口被设置为发送状态。 [分析] 我们先来观察一下样例,也许能带给我们一些比较有用的信息。可以发现,Gotland上的1号、4号端口,没有其他端口以它们为目标端口。因为所有端口都必须处于工作状态,所以这两个端口必须被设置为发送状态。 由于Gotland上的1号、4号端口被设置成发送状态,它们的目标端口(即Bornholm上的1号端口)必须为设置为接收模式。因为Bornhome上1号端口被设置为接收模式,从而导致了Gotland上的3号端口必须被设置为发送模式……以此类推,我们就可以得出答案。然而这个简单的事实并不总是能帮我们找到方案,如下图: 上图中在每个岛中各有4个端口,并且对于每个端口都有其他端口以它为目标端口。事实上上图存在两个方案:Bornholm上的端口都设置为发送模式且Gotland上的端口都设置为接收模式,或者反一下,Bornholm上的端口都设置为接收模式而Gotland上的端口都设置为发送模式。也就是说,对于上图,没有哪个端口的模式可以被直接确定,那么我们先前提到的事实就不能帮助我们求得方案了。 虽然上面的事实看起来很有用,但是我们无法直接利用它得到方案。现在我们放弃这条思路,来看一种更简单的方法: 我们设所有Bornholm上的端口都处于发送状态,所有Gotland上的端口都处于接收状态。显然这样设置并不一定满足条件,因为有些Gotland上处于接收状态的端口可能是无用的。那么,我们将通过一种“调整”的方法,改进方案使之满足要求。 我们用伪代码来描述这个“调整”算法: 1: 设置Bornholm上所有端口为发送状态 2: 设置Gotland上所有端口为接收状态 3: while Gotland上存在一个无效的接收端口x do 4: 改变端口x的状态,设置为发送状态 5: 设置端口x的目标端口的状态为接收状态 第4行与第5行两部分就是执行我们所谓的“调整”过程。很显然,经过一次调整,Gotland上的接收端口数目减少一,所以这个算法肯定是会结束的。那么,算法执行得到的方案一定可行么?我们来证明一下: [证明] 对于Gotland上的接收端口,必然每一个都是有效的,不然算法不会结束 对于Gotland上的发送端口,我们在第5行设置它的目标端口为接收状态并且其状态不会被改变,所以Gotland上的发送端口也处于工作状态。 对于Bo

文档评论(0)

JVYnJKTdYC + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档