快排为什么那样快.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录 1. 猜数字 2. 称球 3. 排序 3.1 为什么堆排比快排慢 3.2 为什么快排其实也不是那么快 3.3 基排又为什么那么快呢 4. 信息论 !信息论 ? 1. 猜数字 我们先来玩一个猜数字游戏 :我心里默念一个 1~64 之间的数 ,你来猜(你只能问答案是“是” 或 “否”的问题 )。为了保证不论在什么情况下都能以尽量少的次数猜中 ,你应该采取什么 策略呢 ?很显然 ,二分。先是猜是不是位于 1~32之间 ,排除掉一半可能性 ,然后对区间继 续二分。这种策略能够保证无论数字怎么跟你捉迷藏 ,都能在 log_2{n}次以内猜中。用算 法的术语来说就是它的下界是最好的。 我们再来回顾一下这个游戏所蕴含的本质 :为什么这种策略具有最优下界 ?答案也很简单 , 这个策略是平衡的。反之如果策略不是平衡的 ,比如问是不是在 1~10之间 ,那么一旦发现 不是在 1~10之间的话就会剩下比 N/2更多的可能性需要去考察了。 之前有人在讨论中提到 ,这种策略的本质可以概括成 “让未知世界无机可乘”。它是没有 “弱 点的” ,答案的任何一个分支都是等概率的。反之 ,一旦某个分支蕴含的可能性更多 ,当情 况落到那个分支上的时候你就郁闷了。比如猜数字游戏最糟糕的策略就是一个一个的猜 :是 1吗 ?是 2 吗 ?… 因为这种猜法最差的情况下需要 64 次才能猜对 ,下界非常糟糕。二分搜 索为什么好 ,就是因为它每次都将可能性排除一半并且无论如何都能排除一半(它是最糟情 况下表现最好的 )。 2. 称球 12个小球 ,其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏 的并且它到底是轻还是重。 这个问题是一道流传已久的智力题。网络上也有很多讲解 ,还有泛化到 N个球的情况下的 严格证明。也有零星的一些地方提到从信息论的角度来看待最优解法。本来我一直认为这道 题目除了试错之外没有其它高妙的思路了 ,只能一个个方法试 ,并尽量从结果中寻找信息 , 然后看看哪种方案最少。 然而 ,实际上它的确有其它的思路 ,一个更本质的思路 ,而且根本用不着信息论这么拗口的 知识。 我们先回顾一下猜数字游戏。为了保证任何情况下以最少次数猜中 ,我们的策略是每次都排 除恰好一半的可能性。类比到称球问题上 :坏球可能是 12个球中的任意一个 ,这就是 12 种可能性 ;而其中每种可能性下坏球可能轻也可能重。于是 “坏球是哪个球 ,是轻是重”这 个问题的答案就有 12×2=24 种可能性。 现在我们用天平来称球 ,就等同于对这 24 种可能性发问 ,由于天平的输出结果有三种 “平 衡、左倾、右倾” ,这就相当于我们的问题有三个答案 ,即可以将所有的可能性切成三份 , 根据猜数字游戏的启发 ,我们应当尽量让这三个分支概率均等 ,即平均切分所有的可能性为 三等份。如此一来的话一次称量就可以将答案的可能性缩减为原来的 1/3 ,三次就能缩减为 1/27。而总共才有 24 种可能性 ,所以理论上是完全可以 3次称出来的。 如何称的指导原则有了 ,构造一个称的策略就不是什么太困难的事情了。首先不妨解释一下 为什么最直观的称法不是最优的——6、6称 :在 6、6称的时候 ,天平平衡的可能性是 0。 刚才说了 ,最优策略应该使得天平三种状态的概率均等 ,这样才能三等分答案的所有可能性。 为了更清楚的看待这个问题 ,我们不妨假设有 6个球 ,来考虑一下 3、3称和 2、2称的区 别 : 在未称之前 ,一共有 12种可能性 :1轻、1重、2轻、2重、…、6轻、6重。现在将 1、2、 3号放在左边 ,4、5、6放在右边 3、3称了之后 ,不失一般性假设天平左倾 ,那么小球的 可能性就变成了原来的一半 (6种 ):1重、2重、3重、4 轻、5轻、6轻。即这种称法能 排除一半可能性。 现在再来看 2、2称法 ,即 1、2放左边 ,3、4 放右边 ,剩下的 5、6不称 ,放一边。假设 结果是天平平衡 ,那么可能性剩下——4 种 :5重、5轻、6重、6轻。假设天平左倾 ,可 能性也剩下 4 种 :1重、2重、3轻、4 轻。右倾和左倾的情况类似。总之 ,这种称法 ,不 管天平结果如何 ,情况都被我们缩小到了原来的三分之一 !我们充分利用了 “天平的结果状 态可能有三种”这个条件来三等分所有可能性 ,而不是二等分。 说到这里 ,剩下的事情就实在很简单了 :第二步称法 ,只要记着这样一个指导思想——你 选择的称法必须使得当天平平衡的时候答案剩下的可能性和天平左倾(右倾 )的时候答案剩 下的可能性一样多。实际上 ,这等同于你得选择一种称法 ,使得天平输出

文档评论(0)

189****6140 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档