国家集训队2006论文集 黄晓愉

国家集训队2006论文集 黄晓愉

ID:20304957

大小:244.50 KB

页数:18页

时间:2018-10-12

国家集训队2006论文集 黄晓愉_第1页
国家集训队2006论文集 黄晓愉_第2页
国家集训队2006论文集 黄晓愉_第3页
国家集训队2006论文集 黄晓愉_第4页
国家集训队2006论文集 黄晓愉_第5页
资源描述:

《国家集训队2006论文集 黄晓愉》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、深度优先搜索问题的优化技巧重庆一中黄晓愉深度优先搜索的优化技巧在深度优先搜索中如何运用题目中的约束条件为我们提供剪枝是影响程序效率的关键。而搜索的顺序和搜索的对象对于这一点是十分重要的。搜索顺序的选择我们先来看一道比较简单的题目:(zju1937)已知一个数列a0,a1......am其中a0=1am=na0

2、,而对于每个数的取值,我们显然可以采用从小到大搜索和从大到小搜索两种搜索方法。由于题目要求的是m的最小值,也就是需要我们尽快构造出n,所以每次构造的数应当是尽可能大的数。不同搜索顺序效率比较两种搜索顺序比较:N时间/s显然,不同的顺序导致了程序效率的不同1、从小到大搜索每个数值2、从大到小搜索每个数值以往比赛中的情况IOI2000中的BLOCKNOI2005中的智慧珠将木块从大到小经过旋转和反转后,依次放入进行搜索满分!!将珠子从大到小进行搜索,不加任何其他剪枝90分!!搜索对象的选择(USACO-

3、weight)已知原数列a1,a2……an中前1项,前2项,前3项……前n项的和,以及后1项,后2项,后3项……后n项的和,但是所有的数据都已经被打乱了顺序,还知道数列中的数存在集合S中,求原数列。当存在多组可能数列的时候求左边的数最小的数列。其中n<=1000,S∈{1..500}一个例子假如原数列为11525,S={1,2,4,5}那么知道的值就是:1=12=1+17=1+1+59=1+1+5+214=1+1+5+2+55=57=2+512=5+2+513=1+5+2+514=1+1+5+2+5

4、(12791457121314)一般方法从左往右依次搜索原数列每个数可能的值,然后与所知道的值进行比较。如何改进?太慢了但是这个算法最坏的情况下扩展的节点为5001000,这个算法从已知入手分析s2s0s1s3s4t4t3t2t1t0我们用Si表示前I个数的和Ti表示后I个数的和对题目中数据分类s0s1s2s3s4t4t3t2t1t0集合A集合B任意I满足:Si+Tn-I=Sn=Tn分析在集合A和集合B中:{S0

5、2t1t0X1X2X3X5X6X7X8X4Xi∈SSi-Si-1Ti-Ti-1猜想?在搜索中从小到大搜索每个Si和Ti的位置。由具体分析对于原数列:11525,S={1,2,4,5}由它得到的值为:12791457121314排序后为:125779121314141312977521原数列:11525这样,对于这个数据,我们已经构造出了原数列。改变搜索对象题目的约束条件集中在Si和Ti中,我们改变搜索的对象,不再搜索原数列中每个数的值,而是搜索给出的数中出现在Si或者Ti中的位置。又由于Si+1与S

6、i的约束关系,提示我们在搜索中按照Si中i递增或者递减的顺序进行搜索。推而广之当我们已经搜索出原数列的a1,a2……ai和an,an-1……aj,此时搜索排序后第k小的数W[k],只可能有两种存在的可能:Try(I,j)W[k]W[k]-Si∈S?W[k]-Tj∈S?Try(I+1,j)Try(I,j-1)elseExitA[I+1]=W[k]A[j-1]=W[k]这个算法在最坏情况下扩展的节点为21000(实际中远远小于这个数),在搜索的同时可以利用Si+Tn-I=Sn=Tn这个约束条件进行剪枝。

7、程序效率得到显著的提高。两个程序效率对比:小结原始的搜索方法搜索量巨大,我们通过分析,选择适当的搜索对象,在搜索量减少的同时充分利用了题目的约束条件,成为了程序的一个有利的剪枝,使题目得到较好的解决。总结我们在搜索得过程中,灵活得改变搜索的顺序和搜索的对象可以使程序效率得到很大的提升。而这需要我们在做题的过程中多思考、多分析、多总结。谢谢大家

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。