本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|浅谈必要条件的应用广东北江中学方奇【关键字】命题必要条件效率精确【摘要】必要条件是命题之间的一种逻辑关系。在解题过程中若能利用好必要条件,将有助于我们提高算法效率。针对必要条件,本文先阐述了其定义,然后结合其特点集中分析了它在解各类问题中的应用,指出利用必要条件关键在于“减少冗余,体现本质”。最后总结出一些寻找必要条件的经验【正文】在现实生活中,许多问题错综复杂,体现在信息学问题上,就会导致我们难以从纷繁的条件关系中建立有效的数学模型进行求解。有时,准确地应用必要条件,有助于我们揭示问题的本质或简化原有模型,从而找到高效的解决方法。下面,我们先来看看什么是必要条件。一必要条件的定义数学上,判断真假的语句叫做命题。常用小写拉丁字母p、q、r、s……来表示。如果由命题p经过推理可以得出命题q,也就是说,“如果p成立,那么q成立”,则记为p=q一般地,如果已知p=q,那么我们说,p是q的充分条件,q是p的必要条件。例如,“x20”是“x0”的必要条件。在这里,“x20”的解集包含了“x0”的解集。{x︱x0}∈{x︱x20}。用文氏图表示:二必要条件的应用在信息学问题中,必要条件有着广泛的应用,主要体现在下面两个方面。§1缩小求解范围大部分问题所要求解的往往是符合某一些条件的方案或具体数值。将这些条件命题记为p,其解集用A表示。回想我们的解题思路,当然不能一下就知道A的确切解,而总是通过已知条件q在较大的既定范围内B运用各种方法,如枚举、搜索、动态规划、贪心等等从中进行筛选,最终找到符合p的解集A。在这一过程中,B包括了A,A必也符合条件q,有p=q,q是p的必要条件。我们从比较“宽松”的条件q入手,在B中寻找A,使其满足比较“苛刻”的条件p。可以看到,开始界定的必要条件q的“宽松”程度,即B的范围大小直接影响着解决问题的效率。当q越逼近于p,B越趋近于A时,混合物中真金的含量比例越大,那我们要清除的沙子就会越少,效率自然也就越高了。可是,这必须建立在可行的基础上。因为,如果条件q在判断处理上难于实现或是要花费大量时间,那么无论q再怎么精确,都是毫无意义的了。于是,这就启发我们要在坚持“容易实现”这一原则下,尽力寻找“精确”的必要条件,以缩小求解范围,提高出解速度。[例1]问题描述x20x0本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|(V,E),问哪些边是构成完备匹配所必须的。共2n个顶点,n≤100。问题分析设必须边的集合为A。当且仅当某边e被去掉后,子图g不存在完备匹配,则有e∈A。这可算是条件p。思考到这里,可以得到算法①枚举图G中所有边E对于某边e,在原图中去掉,g=G-e对g求最大匹配若不存在完备匹配,则表示e∈A,否则反之。用匈牙利算法求最大匹配,时间复杂度是O(n2),枚举所有边需O(n2)。于是此算时间复杂度为O(n4),过于庞大。在上述算法中,我们按照常规思路,一开始就不经意地把初始范围B设成全题边集E,必要条件q为“满足是E中的边即可”。这样,便把求解的范围定大了。其实,若边e∈A,那么e必属于任意一个完备匹配中,这是显然的。换句话说,就是任意一个完备匹配都包含了所有必须边集A。于是,我们可以将算法①改进如下:算法②先求出G中的一个完备匹配,设为B枚举B中所有边E对于某边e,在原图中去掉,g=G-e对g求最大匹配若不存在完备匹配,则表示e∈A,否则反之。在算法②中,实际上是把初始范围B缩小为一个完备匹配,必要条件q精确为“边属于完备匹配B”。这么一来,时间复杂度下降为O(n3)从[例1]中我们可以看到利用好必要条件,对于解这类存在性问题有很大帮助。其实,应用必要条件缩小求解范围,其巨大威力还是体现在搜索算法上。一般,搜索算法如深度优先、广度优先这类不带启发性的盲目搜索,时间复杂度往往是指数级的,根本无法忍受。于是搜索过程中如何限制其范围,减少搜索量变成了关键。在这里,使用必要条件剪去一些没有希望的搜索分支,便是俗称的“剪枝”。[例2]《移棋子》(Puzzle)GDOI98问题描述试题见附录问题分析这是一道典型的搜索题。根据题设,可知:⑴在有限步内把原始状态转移至目标状态,或确定无解⑵移动步数已知⑶各个移动方向步数已知,但序列不知⑷解必须满足⑵和⑶限制采用深度优先搜索,逐一产生各种可能的移动序列,输出满足题设的即可。显然,上述全搜索在时间上令人无法忍受,我们可从以下几方面来剪枝:1各移动方向的数目由于各移动方向的数目是已知的,因此一旦某个移动方向的个数超出限制,则可不搜索此本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|方向。2空格的位置和各方向的数目由于目前状态和目标状态都已知,各方向的数目也已知,因此可确定目前状态的空格能否由此方向集合移至目标状态位置。即必须满足(目标状态空格横坐标-当前空格横坐标=4方向所剩数目-3方向所剩数目)and(目标状态空格纵坐标-当前空格纵坐标=2方向所剩数目-1方向所剩数目)3各字符的位置和各方向数目同2,我们可以根据目前状态和目标状态以及各方向的数目,确定目前状态的各字符能否由此方向集合移至目标状态位置。在上述思考过程中,我们将p定义为“操作序列能使初态达到终态”,满足p的所有操作序列集合设为A,q1、q2、q3代表3项剪枝,分别满足3项剪枝的操作序列集合设为B1、B2、B3。有p=q1p=q2p=q3A∈B1∩B2∩B3。用文氏图表示这里,共运用了3个必要条件。从图中可以看出,三管齐下的作用下,求解范围缩得更小更精确。当然,要注意的事,这3项剪枝都容易实现,且没有耗费太多的时间。(不然就的得不偿失了)通过这些优化,搜索量大大减少,程序速度有了很大提高。必要条件在动态规划方面也有应用。[例3]《Musketeers》POI9901问题描述n个人围成一圈,按顺序编上号1至n。决斗在相邻两人间进行,胜者继续留在圈中,负者被淘汰出圈外。现不知道决斗进行的顺序,只知道共进行了n-1场决斗。给出n个人之间的胜负关系,问哪些人可能成为最后的胜者。N≤100。问题分析这题与NOI95《石子合并》一题有点类似。仿照《石子合并》一题,可得到一种运用动态规划的思路。E[i,j]记录i、j之间的胜负情况。当i胜j时e[I,j]=true;当j胜I时e[i,j]=false。A[i,j,k]记录k是否能在i至j这些连续的人之间取胜(k在其中),肯定时为true,反之为false。状态转移方程为falsejvukkxyitruev])e[k,andk]1,-ua[i,andv]j,(a[u,ory])e[k,andk]j,1,a[xandy]x,a[i,(true]k,j,i[A存在此算法时间复杂度达到O(n5),空间复杂度为O(n3),太大了,必须改进。注意到编号为x的人能从所有人中胜出,必要条件是他能与自己“相遇”(把环看成链,x点拆成两个,中间的人全部被淘汰出局,x保持不败)。这样,在连续几个人的链中,只须考虑头尾两个人能否胜利会师,中间的则不予考虑,从而少了一维状态表示量。设meet[i,j]记录i和j能否相遇,能则为true,否则为false。状态转移方程为本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|false]j,i[meetjkitruek])e[j,ork](e[i,andj]meet[k,andk]meet[i,true存在这样,时间复杂度下降为O(n3),空间复杂度下降为O(n2)。在此题中,由于前后两次考虑胜负的必要条件不同,导致了两次动态规划的途径也不一样。显然,后一次由于必要条件更为精确,减少了冗余运算,算法无论时空上都有了飞跃。以上几道例题,分析了利用必要条件缩小求解范围这一特点在枚举、搜索、动态规划三类题型中的应用。可以看到,由于必要条件选择的精确,前后变化是显著的。如果说,“缩小求解范围”这一特点,还只是在原有算法上加以优化改进,那么下面我们将看到,精确选择必要条件还能揭示问题本质,引导我们设计出新的更准确体现问题内在联系的更高效的算法。§2揭示题目本质[例4]《科学实验》(Experiment)GDOI2001问题描述试题见附录。问题分析若把n1、n2块陨石碎片抽象成点,不考虑其他,那么本题就是一个求二分图最佳匹配的问题。可以用匈牙利算法或是费用流来解决。时间复杂度为O(n12n22),当n1、n2取最大值500时,必定承受不了。其实,将本题单纯地看成是匹配问题,还只是注意到了矛盾的普遍性,并没有发现矛盾的特殊性。细心思考,可以发现,该二分图的边上的权并不是随机安排的,而是等于关联该边地两点的重量之差的绝对值。这是本题模型与一般二分图最大的区别。图1图2图3这一特点意味着什么呢?经过画坐标轴,将A星和B星的陨石重量分别排序后发现,满足最佳匹配的一个必要条件是“构成匹配的边不相交”(图2相交与不相交两种情况的效果一样,于是规定只选择不相交的方案),也就是说,设某一次实验从A星上取得重量为a1的碎片,从B星上取得重量为b1的碎片;另一次实验取得a2、b2两块碎片。若要使实验效果最佳,必不存在a1a2b1b2或a1a2b1b2这两种情况。有了这个条件,问题便同时符合了无后效性和最优化原理,可以用动态规划思想求解,具体如下:先将两组数分别按从小到大排序,设n1≤n2(若n1n2,则将两组数交换)数组A[i,j]表示第一组前I块碎片和第二组前j块碎片实验的最佳效果状态转移方程为本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|ij]j[2w]i[1w]1j,1i[Aij}]j[2w]i[1w]1j,1i[A],1j,i[Amin{]j,i[A其中,w1记录第一组碎片的重量;w2记录第二组碎片的重量。新算法排序耗时O(n1logn1+n2logn2),动态规划耗时O(n1n2),所以总体来说时间复杂度为O(n1n2)。这正是必要条件切中题目要害的结果。三寻找必要条件的方法通过上面几道典型例题的分析思考,我总结出以下几点寻找必要条件的经验方法。㈠从特性中归纳共性正如[例1]中B集合的确定,这充分体现了“矛盾的普遍性寓于特殊性之中,并通过特殊性表现出来”这一哲学原理。其实这和我们思维习惯是一致的。当我们碰到一道难题时,总是尝试从最简单的特殊情况入手,逐渐深入,最终分析归纳出一般规律。㈡从多方面寻找必要条件有些时候,特别是在搜索算法终,单一的剪枝其力度是远远不够的。当内在因素相互影响难以总体把握的时候,我们可以尝试从多个侧面分析寻找必要条件,把问题肢解,最后在将各方面的必要条件综合起来使用。这样往往能起到一种合力的效果。[例2]《移