算法合集之《浅谈二分策略的应用》

算法合集之《浅谈二分策略的应用》

ID:15895189

大小:69.10 KB

页数:8页

时间:2018-08-06

算法合集之《浅谈二分策略的应用》_第1页
算法合集之《浅谈二分策略的应用》_第2页
算法合集之《浅谈二分策略的应用》_第3页
算法合集之《浅谈二分策略的应用》_第4页
算法合集之《浅谈二分策略的应用》_第5页
资源描述:

《算法合集之《浅谈二分策略的应用》》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、浅谈二分策略的应用华东师大二附中杨俊【摘要】本文着重讨论三种不同类型的二分问题,意在加深大家对二分的认识。它们所考虑的对象从一般有序序列,到退化了的有序序列,最后到无序序列。事实上它们也正代表了二分策略的三种不同应用。【关键字】二分、序、应用【正文】“二分”,相信这个词大家都再熟悉不过了。二分是一种筛选的法则,它源于一个很简单的想法——在最坏情况下排除尽可能多的干扰,以尽可能快地求得目标。二分算法的高效,源于它对信息的充分利用,尽可能去除冗余,减少不必要的计算,以极大化算法效率。事实上许多二分问题都可以用判定树或其它

2、一些定理来证明,它达到了问题复杂度的下界。尽管二分思想本身很简单,但它的扩展性之强、应用面之广,或许仍是我们所未预见的。大家也看到,近年来各类竞赛试题中,二分思想的应用不乏令人眼前一亮的例子。下面是作者归纳的二分思想的三种不同类型的应用,希望能让读者有所收获。类型一:二分查找——应用于一般有序序列申明:这里所指的有序序列,并不局限于我们通常所指的,按从小到大或是从大到小排好序的序列。它仅包含两层意思:第一,它是一个序列,一维的;第二,该序列是有序的,即序列中的任意两个元素都是可以比较的。也就是拥有我们平时所说的全序关

3、系。虽说二分查找大家都再熟悉不过了,但这里还是先简要地回顾一下二分查找的一般实现过程:(1)确定待查找元素所在范围(2)选择一个在该范围内的某元素作为基准(3)将待查找元素的关键字与基准元素的关键字作比较,并确定待查找元素新的更精确的范围(4)如果新确定的范围足够精确,输出结果;否则转至(2)让我们看一个经典问题——顺序统计问题[问题描述]给定一个由n个不同的数组成的集合S,求其中第i小的元素。[分析]相信大家对这个问题都很熟悉,让我们回顾一下二分查找是如何应用于该问题上的。(1)确定待查找元素在S中(1)在n个元素

4、中随机取出一个记为x,将x作基准(2)设S中比元素x小的有p个。如果ip,表示我们所要寻找的元素比x大,我们就将范围确定为S中比x大的元素,求该范围内第i-p-1个元素;如果i=p,表示第i小的元素就是x。(3)如果找出x,输出;否则转至(2)因为x是随机选出的,由简单的概率分析,可得算法的复杂度期望值为O(n)。[小结]举这个例子,是想提醒大家两点:第一,不要想当然认为二分查找就一定与logn有关。算法中的第(3)

5、步,即我们通常所说的“分”并不要求每一次都必须在O(1)时间进行,“分”可以是建立在对序列的有效处理之上(比如上面这个例子中使用了类似于快速排序中的集合分割)。第二,二分算法的“分”并不要求每次都必须平均(因为有时候可能很难做到这一点),只要不是每次都不平均就已经可以产生高效的算法了,这样也给使用随机化算法带来了契机。近年来由于交互式试题的出现,也给予二分查找更多活力。相当多的二分查找问题都是以交互式试题的形式给出的。比如说,就上面这个例子,摇身一变就成了一道交互式的中等硬度问题(IOI2000)。两个题目如出一辙:

6、你问第i小的,我问第(N+1)/2小的;解法当然也就依样画葫芦:你用随机取出的x,依照与x大小关系分成两段,我就随机取出x,y,依照与x,y大小关系分成三段;你的复杂度期望是O(n),我的询问次数的期望也是O(N)。(具体细节这里不再展开,有兴趣的同学可以参考前辈的解题报告2000-2002集训队论文《中等硬度解题报告》高岳)类型二:二分枚举——应用于退化了的有序序列二分策略并不总是应用于上述这样显式的有序序列中,它可能借助于问题某种潜在的关联性,用于一些隐含的退化了的有序序列中。与先前介绍的二分查找相比,最大的区别

7、在于这里的二分在判断选择哪一个部分递归调用时没有比较运算。我们还是先看一个问题——BTP职业网球赛(USACOcontestdec02)[问题描述]有N头奶牛(N是2K),都是网球高手,每头奶牛都有一个BTP排名(恰好为1—N)。下周将要进行一场淘汰赛,N头奶牛分成N/2组,每组两头奶牛比赛,决出N/2位胜者;N/2位胜者继而分成N/4组比赛……直至剩下一头牛是冠军。比赛既要讲求实力,又要考虑到运气。如果两头奶牛的BTP排名相差大于给定整数K,则排名靠前的奶牛总是赢排名靠后的;否则,双方都有可能获胜。现在观众们想知道

8、,哪头奶牛是所有可能成为冠军的牛中排名最后的,并要求你列举出一个可能的比赛安排使该奶牛获胜。(限制N≤65536)[分析]由于N很大,我们猜想可以通过贪心方法解决。我们希望排名靠前的选手总是“爆冷”输给排名靠后的选手。于是我们让1输给K+1、2输给K+2……每一轮中每一局总是选择未比赛的排名最前的选手,输给一个排名最靠后的选手(如果有的话)。但

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

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

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