数形结合思想在信息学竞赛中的应用.doc

上传人:cl****1 文档编号:561529382 上传时间:2023-12-13 格式:DOC 页数:12 大小:364.01KB
返回 下载 相关 举报
数形结合思想在信息学竞赛中的应用.doc_第1页
第1页 / 共12页
数形结合思想在信息学竞赛中的应用.doc_第2页
第2页 / 共12页
数形结合思想在信息学竞赛中的应用.doc_第3页
第3页 / 共12页
数形结合思想在信息学竞赛中的应用.doc_第4页
第4页 / 共12页
数形结合思想在信息学竞赛中的应用.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数形结合思想在信息学竞赛中的应用.doc》由会员分享,可在线阅读,更多相关《数形结合思想在信息学竞赛中的应用.doc(12页珍藏版)》请在金锄头文库上搜索。

1、浅谈数形结合思想在信息学竞赛中的应用 安徽 周源浅谈数形结合思想在信息学竞赛中的应用安徽 周源目录目录1摘要2关键字2引子3以形助数3例一Raney引理的证明3题意简述3分析3目标图形化3小结4例二最大平均值问题(USACO 2003 March Open)4题意简述4分析5目标图形化5构造下凸折线5维护下凸折线6最后的优化:利用图形的单调性7小结7以数助形7例三画室(POI oi V Stage I)8题意简述8分析8目标数值化9动态规划解题9小结10总结10附录11关于2003年上海市选拔赛题Sequence11题意简述11分析11论文附件12参考文献12摘要数与形是数学中两个最古老而又最

2、基本的对象,数形结合又是一种重要的数学思想。本文主要以当今信息学奥赛中几道试题为例,从以形助数和以数助形两个侧重点讨论了数形结合思想在信息学竞赛解题中广阔的应用前景。最后文章分析指出数形结合思想的两个重要特性并由此提出“数形结合”重在有机的结合,希望对同学们在实际比赛中灵活的运用数形结合思想有一些帮助。关键字信息学竞赛 数学思想 数形结合思想以数助形 以形助数辩证矛盾 多元性 个体差异性思维、编程、时间、空间复杂度引子数与形是数学中两个最古老而又最基本的对象,数形结合又是一种重要的数学思想。在当今信息学竞赛中,某些纷繁复杂的试题背后,往往蕴含着丰富的几何背景,而计算几何类问题却又需要借助计算机

3、强大的实数运算能力。正如华罗庚先生所说的“数形结合千般好”,在算法和程序设计中,巧妙地运用数形结合思想,可以顺利的破解问题,化难为易,找到问题的解题思路。数形结合思想常包括以形助数、以数助形两个方面。以形助数正如前文所述,一些试题中繁杂的代数关系身后往往隐藏着丰富的几何背景,而借助背景图形的性质,可以使那些原本复杂的数量关系和抽象的概念,显得直观,从而找到设计算法的捷径。例一Raney引理的证明题意简述设整数序列A = Ai, i=1, 2, , N,且部分和Sk=A1+Ak,序列中所有的数字的和SN=1。证明:在A的N个循环表示 先设一个序列是环状的,则从其任意一个字符处断开以后形成的非环序

4、列即为该序列的一个循环表示。中,有且仅有一个序列B,满足B的任意部分和Si均大于零。分析先来看一个例子,若有序列A = ,其6个循环表示为1. 2. 3. 4. 5. 6. 其中只有第4个序列,部分和为3, 1, 1, 2, 6, 1,满足成为序列B的条件。若要用一般的代数或是组合方法来证明这个有趣的结论,似乎无从下手,但若要想到了用“形”来帮忙,问题就简单多了。目标图形化周期性的推广A序列,得到一个无穷序列,便于观察其循环表示,得到:同时计算这个序列的部分和Si,因为这个序列是周期性的,因此对于所有的k0,均有Sk+N=Sk+1。如果做出这个函数的图像,则可以说函数有一个“平均斜率”为:每沿

5、横轴正方向走N个单位,函数值就增加1。于是如下图所示,可以用两条斜率为的直线“夹住”函数包含的所有点:图 1 无穷序列的部分和函数图像图示中N=6,且使用了上文举的例子。注意较低的那条直线,在每连续的N个单位长度中,它与函数图像有且仅有一个交点,这是因为斜率是的直线在每N个单位长度中最多到达一次整数点。这个交点是在这以后的N个点中的最低值,因此由此处的后一个位置导出的循环表示的所有部分和均为正数。而同时每连续N个单位长度仅有一个交点也证明了解的唯一性。小结一个简单的几何论证就证明了著名的Raney引理,其简练是其他方法不能企及的。Raney引理有很广泛的应用,Catalan数以及扩展Catal

6、an数的组合公式就可以用该引理轻松解决。比如今年上海市选拔赛第二天比赛中的序列(Sequence)以及OIBH练习赛中的项链,使用Raney引理都是最简单的方法之一。 用Raney引理解答Sequence的过程,详见附录。用几何图形辅助思考,不只停留在组合计数这一类中,更渗透在算法设计和优化的每一个分支中,近年来流行的“斜率优化”法是另一个很好的例子。例二最大平均值问题(USACO 2003 March Open)题意简述读入一列正数,a1, a2, , aN,以及一个数F。定义,ij。求Maxave(a, b), 1a, bN,且ab-F+1,即求一段长度大于等于F且平均值最大的子串。范围:

7、FN105。分析简单的枚举算法可以这样描述:每次枚举一对满足条件的(a, b),即ab-F+1,检查ave(a, b),并更新当前最大值。然而这题中N很大,N2的枚举算法显然不能使用,但是能不能优化一下这个效率不高的算法呢?答案是肯定的。目标图形化首先一定会设序列ai的部分和:Si=a1+a2+ai,特别的定义S0=0。这样可以很简洁的表示出目标函数!如果将S函数绘在平面直角坐标系内,这就是过点Sj和点Si-1直线的斜率!于是问题转化为:平面上已知N+1个点,Pi(i, Si),0iN,求横向距离大于等于F的任意两点连线的最大斜率。构造下凸折线有序化一下,规定对ij,只检查Pj向Pi的连线,对

8、Pi不检查与Pj的连线。也就是说对任意一点,仅检查该点与在其前方的点的斜率。于是我们定义点Pi的检查集合为Gi = Pj, 0ji-F特别的,当iF时,Gi为空集。其明确的物理意义为:在平方级算法中,若要检查ave(a, b),那么一定有PaGb;因此平方级的算法也可以这样描述,首先依次枚举Pb点,再枚举PaGb,同时检查k(PaPb)。若将Pi和Gi同时列出,则不妨称Pi为检查点,Gi中的元素都是Pi的被检查点。当我们考察一个点Pt时,朴素的平方级算法依次选取Gt中的每一个被检查点p,考察直线pPt的斜率。但仔细观察,若集合内存在三个点Pi, Pj, Pk,且ijk(Pj, Pk),就很容易

9、可以证明Pj点是多余的。图 2若k(Pt, Pj) k(Pt, Pi),那么可以看出,Pt点一定要在直线PiPj的上方,即阴影所示的1号区域。同理若k(Pt, Pj) k(Pt, Pk),那么Pt点一定要在直线PjPk的下方,即阴影所示的2号区域。综合上述两种情况,若PtPj的斜率同时大于PtPi和PtPk的,Pt点一定要落在两阴影的重叠部分,但这部分显然不满足开始时tj的假设。于是,Pt落在任何一个合法的位置时,PtPj的斜率要么小于PtPi,要么小于PtPk,即不可能成为最大值,因此Pj点多余,完全可以从检查集合中删去。这个结论告诉我们,任何一个点Pt的检查集合中,不可能存在一个对最优结果

10、有贡献的上凸点,因此我们可以删去每一个上凸点,剩下的则是一个下凸折线。最后需要在这个下凸折线上找一点与Pt点构成的直线斜率最大显然这条直线是在与折线相切时斜率最大,如图所示。图 3维护下凸折线这一小节中,我们的目标是:用尽可能少的时间得到每一个检查点的下凸折线。算法首先从PF开始执行:它是检查集合非空的最左边的一个点,集合内仅有一个元素P0,而这显然满足下凸折线的要求,接着向右不停的检查新的点:PF+1, PF+2, , PN。检查的过程中,维护这个下凸折线:每检查一个新的点Pt,就可以向折线最右端加入一个新的点Pt-F,同时新点的加入可能会导致折线右端的一些点变成上凸点,我们用一个类似于构造

11、凸包的过程依次删去这些上凸点,从而保证折线的下凸性。由于每个点仅被加入和删除一次,所以每次维护下凸折线的平摊复杂度为O(1),即我们用O(N)的时间得到了每个检查集合的下凸折线。最后的优化:利用图形的单调性最后一个问题就是如何求过Pt点,且与折线相切的直线了。一种直接的方法就是二分,每次查找的复杂度是O(log2N)。但是从图形的性质上很容易得到另一种更简便更迅速的方法:由于折线上过每一个点切线的斜率都是一定的 由于折线没有连续性,因此更准确的应该说,过每一个点切线斜率的范围都一定的。,而且根据下凸函数斜率的单调性,如果在检查点Pt时找到了折线上的已知一个切点A,那么A以前的所有点都可以删除了

12、:过这些点的切线斜率一定小于已知最优解,不会做出更大的贡献了。于是另外保留一个指针不回溯的向后移动以寻找切线斜率即可,平摊复杂度为为O(1)。至此,此题算法时空复杂度均为O(N),得到了圆满的解决。小结回顾本题的解题过程,一开始就确立了以平面几何为思考工具的正确路线,很快就发现了检查集合中对最优解有贡献的点构成一个下凸函数这个重要结论,之后借助计算几何中求凸包的方法维护一个下凸折线,最后还利用下凸函数斜率的单调性发现了找切线简单方法。题解围绕平面几何这个中心,以斜率为主线,整个解题过程一气呵成,又避免了令人头晕的代数式变换,堪称以形助数的经典例题。顺便提一下:这种方法在加速决策过程,很多动态规

13、划算法都可以运用本题“斜率优化”的方法提高算法效率。如IOI 2002的batch和BOI 2003的euro等。至于这类题目的共同特点,还是很值得研究的,但不在本文讨论范围内,因而不再讨论,但欢迎有兴趣的同学以后和我交流。以数助形古希腊的毕达哥拉斯认为“万物皆数”,的确,数是反映事物本质特征的最好方法之一。数学发展史上,正是在解析几何创立之后,人们才对各种繁杂的曲线有了更深入的了解。如今信息时代中,计算机处理各类事物,最终无不是归结于二进制数的基本运算,数的重要性可见一斑。在当今信息学竞赛中,一些试题给出的描述中图形极为复杂,容易使选手陷入“迷魂阵”,在这种情况下,以数助形,一举抓住其本质特

14、征,不失为解题的一种好方法。例三画室(POI oi V Stage I)题意简述定义尺寸为0的方阵为一个1*1的矩阵,在其唯一的一个方格中有一个小孔。对于i0,递归的定义尺寸为i的方阵如下图所示:图 4给定方阵的尺寸N,以及另外两个参数X和Y。准备两个尺寸为N的方阵,一个叠放在另一个上面,再将上面的方阵向右移动X列,同时向上移动Y行。如此操作之后,求两个方阵有多少个公共的孔。如右上图,尺寸为2的方阵,向右平移2列,向上平移2行。则两个方阵有3个公共小孔。范围:N100。分析直接分析两个方阵相交后的情况是可行的,我曾经看过一些集训队前辈的解题报告,都是这么分析的,但是方法很繁,思考量很大。下图是某解题报告中的一个说明附图,报告中先标出两个方阵的相交区域,再分情况讨论。显然可以看出,直接从“形”来分析本题,路子是很坎坷的。图 5目标数值化我们不如换至和“形”相对的另一面“数”来思考,按照下图所示的x, y方向为每行每列从0开始编号,最大至2N-1,于是每一个方格都有唯一的坐标(x,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号