2023年算法合集之信息学竞赛中搜索问题的常见优化技巧.doc
《2023年算法合集之信息学竞赛中搜索问题的常见优化技巧.doc》由会员分享,可在线阅读,更多相关《2023年算法合集之信息学竞赛中搜索问题的常见优化技巧.doc(12页珍藏版)》请在咨信网上搜索。
1、信息学竞赛中搜索问题常用优化技巧重庆一中 黄晓愉【摘要】结合例题分析归纳了信息学竞赛中处理搜索问题所常用思索措施与解题措施,从深度优先搜索和广度优先搜索两个方面探讨了提高程序效率合用技巧。 【关键词】信息学;搜索次序;搜索对象;Hash表 5剪枝。在信息学竞赛中处理搜索问题一般采用两种措施进行,即:深度优先搜索和广度优先搜索。一、深度优先搜索优化技巧咱们在做题时候,常常碰到此类题目给出约束条件,求一种满足约束条件方案,此类问题咱们叫它“约束满足”问题。对于约束满足问题,咱们一般可以从搜索次序和搜索对象入手,进而提高程序效率。搜索次序及对象:在处理约束满足问题时候,题目给出约束条件越强,对于搜索
2、中剪枝就越有利。之因此深度优先搜索效率在很大程度上优于穷举,就是由于它在搜索过程中很好运用了题目中约束条件进行剪枝,到达提高程序效率目。显然,在同样一棵搜索树中,越在靠近根接点位置运用约束条件剪枝效果就越好。怎样在搜索中最大化运用题目约束条件为咱们提供剪枝根据,是提高深度优先搜索效率一种很重要地方。而不一样搜索次序和搜索对象就直接影响到咱们对于题目约束条件运用。下面,咱们就从搜索次序和搜索对象两方面来探讨一下不一样措施对程序效率影响。(1)搜索次序选用:咱们先来看一道比较简朴题目: (zju1937)已知一种数列a0,a1.am其中a0 = 1 am = n a0 a1 a2 . am-1 a
3、m 对于每个k(1=k=m),ak=ai+aj (0 = i,j = k-1),这里i与j可以相等。现给定n值,规定m最小值(并不规定输出),及这个数列值(也许存在多种数列,只输出任一种满足条件就可以了)。分析由于ak=ai+aj(0=i,jk),因此咱们在搜索过程中可以采用由小到大搜索数列每一项搜索次序进行试算。在一般搜索时候咱们习惯于从小到大依次搜索每个数取值,不过在这到题目中按照这样次序搜索编程运算其成果(效率)十分不理想:N102030405060708090100200300400500用时0.030.010.030.050.200.341.801.808.9110.1Too lon
4、gToo longToo longToo long由于题目规定是m最小值,也就是需要咱们尽快得到数n,因此每次构造数应当是尽量大数,根据题目这个特性,咱们将搜索次序改为从大到小搜索每个数,新程序效率如下:N102030405060708090100200300400500用时0.010.010.010.010.010.010.030.010.030.030.131.481.522.88显然,后一种搜索次序得到程序效率大大地优于第一种搜索次序得到程序。当然,这道题尚有很大优化余地,不过搜索次序这种思想在搜索题目中是广泛运用。也许人们会觉得这种单一运用搜索次序来优化程序措施很一般,不过这种看似简朴
5、措施在考试中出现得也不少,例如IOI中BLOCK,只要将木块从大到小通过旋转和反转后,依次放入进行搜索,对于比赛中数据就可以得到满分。近来一次出现是NOI中智慧珠,同样只是将珠子从大到小进行搜索,不加任何其她剪枝就可以在比赛中获得90分。可见,选用合适搜索次序对于提高程序效率是编程设计最有效技巧之一,运用良好搜索次序来对搜索题目进行优化是一种性价比很高算法。(2)搜索对象选用:让咱们再来看看下面一道题:(USACOweight)已知原数列a1,a2an中前1项,前2项,前3项前n项和,以及后1项,后2项,后3项后n项和,不过所有数据都已经被打乱了次序,还懂得数列中数存在集合中,求原数列。当存在
6、多组也许数列时候求左边数最小数列。其中n=1000,S1.500例如,假如原数列为1 1 5 2 5,S=1,2,4,5那么懂得值就是 (1 2 7 9 14 5 7 12 13 14)1 = 1 5 = 52 = 1+1 7 = 2+57 = 1+1+5 12 = 5+2+59 = 1+1+5+2 13 = 1+5+2+514 = 1+1+5+2+5 14 = 1+1+5+2+5分析由于题目中1.500,最坏状况下每个数可以取到值有500种,从数学方面很难找到有很好措施予以处理,而采用搜索措施却是一种很好处理措施,根据数列从左往右依次搜索原数列每个数也许值,然后与所懂得值进行比较。这样,咱们
7、得到了一种最简朴搜索措施A。不过搜索措施A这个算法最坏状况下扩展节点为5001000,运算速度太慢了。在这个算法中,咱们对数列中每个数分别进行了500次搜索,由此导致了搜索量如此之大。怎样有效减少搜索量是提高本题算法效率关键。而前面提到运用搜索次序措施在本题中由于规定了左边数最小而无法运用。让咱们换个角度对这个问题进行思索:搜索措施B:回过头来看看题目提供应咱们约束条件,咱们用Si体现前I项和,用Ti体现后I项和。根据题目,咱们得到数据应当是数列中S1,S2,S3Sn,以及T1,T2,T3Tn。其中任意Si+1-Si 和Ti+1-Ti都属于集合。另一种比较轻易发现约束条件是对于任意I,有Sn=
8、Tn=Si+Tn-I。同样,在搜索过程中最大化这些约束条件是提高程序效率关键。那么当咱们任意从已知数据中取出两个数时候,只会出现两种状况:1、两个数同属于Si,或者Ti2、两数分别属于Ti和Si。当两数同属于Si或者Ti时,两个数之差,就是图中Sj-Si那一段,而当j=I+1时,Sj-Si必然属于题目给出集合。由此,当每次得到一种数Si或者Ti时,假如咱们已知Si-1或者Ti-1,便可以判断出此时Si或者Ti与否合法。因此咱们在搜索中尽量运用Si-1和Ti-1推得Si和Ti也许,便能尽量运用题目约束条件。由于题目约束条件集中在Si和Ti中,咱们变化搜索对象,不再搜索原数列中每个数值,而是搜索给
9、出数中出目前Si或者Ti中位置。又由于约束条件中得出Si+1与Si约束关系,提醒咱们在搜索中按照Si中i递增或者递减次序进行搜索。例如,对于数据组:1 1 5 2 5,由它得到值为1 2 7 9 14 5 7 12 13 14排序后为:1 2 5 7 7 9 12 13 14 14由于最大两个数为所有数和,在搜索中不用考虑它们,去掉14: 1 2 5 7 7 9 12 13观测发现,数列中最小数1,只也许出目前所求数列头部或者尾部。再假设1位置已经得到了,去掉它后来,咱们再观测剩余数中最小数2,显然也只也许在目前状态头部或者尾部加上一种数得到2。这样,每搜索一种数,都只会将它放在头部和尾部,也
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 算法 信息学 竞赛 搜索 问题 常见 优化 技巧
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。