'''算法导论 原书第三版''''''1.雇佣模型:有n个人,开始面试,如果第i个人比1到i-1个人都要好,就雇佣他。注意前面雇佣的人就不会解聘的。问:最后趋近于雇佣几个人。答案:log(n),因为第i个人被雇佣的概率是表示当前只有i个人,他恰好拍到第一名,所以概率是1/i。所以答案是sum(1/i)。所以log(n)2.洗牌算法:for i in n:swap A[i] with random(i,n)证明:首先n=1,2时候显然成立,如果n=k成立。那么n=k+1时候第一个位置概率显然是变成了1/(k+1),。。。最后一个位置只在最后一次洗了一次所以也是1/(k+1),证毕3.permute-without-identity洗牌算法的修改版:好像不能保证每一个元素放在任何位置的概率都相同,因为总共排列情况是n!-1他不是n的倍数。退而求其次:只保证任何情况都能遍历到,而不保证等概率。上面洗牌算法后面加个判断,if 新牌==就排,就继续洗一次4.生日悖论:一年有n个天,那么要ln(n)个人就能保证有2个人同天出生的概率大于1/25.箱子和球:有n个箱子,每一次往里面放一个球,nln(n)次投球能保证我们指定的箱子里面有一个球.这个计算略微复杂:第i次投球成功使得有球的箱子数目加1的概率是(n-i+1)/n,那么根据不努力实验知道期望增加n/(n-i+1),sum(n/(n-i+1))趋近于nln(n)6.特征序列。连续扔一个硬币n次,最长连续证明的序列的期望的长度有多长:Oln(n),计算很复杂7.在线雇佣问题:好变态的问题:我们愿意雇佣接近最好的应聘者,只雇佣一次。要求,每次面试我们必须马上提供给应聘者,或者马上拒绝改应聘者,如何再最小化面试次数和最大化应聘者的质量这连个方面取得平衡。答案是k=n/e,这样至少保证了1/e的概率面试到最好的应聘者。也就是公司为了省钱只面试前百分之40不到的人也行。但是面试的人要更少就会效果非常差。'''