有随机排列应聘者的步骤,则是随机算法(random algorithm),没有,则是概率分析(probability analysis)。
实现随机排列的两种算法:PREMUTE-BY-SORTING(A)和RANDOM-IN-PLACE。
PREMUTE-BY-SORTING算法视为每一个应聘者产生一个随机数序列,用来衡量优先级。所产生的随机数序列不出现重复的概率不小于(1-1/n),不过任然可能出现重复。RANDOM-IN-PLACE则不会有这样的问题。
The birthday paradox:
用概率来推导,要注意1+x<=e^x这个不等式的作用。
在用随机变量计算概率时,最后算出数学期望E[X]=k(k-1)/2n只要令其大于等于1即可。
解不等式k(k-1)>=2n时用求根公式可以算出k=28。
Balls and bins:
有五个盒子,试验次数符合几何分布。
成功概率(a hit) 直到第k次试验方成功的概率 期望
1. 1 1 1
2. 4/5 (1/5)^(k-1)*(4/5) 5/4
3. 3/5 (2/5)^(k-1)*(3/5) 5/3
4. 2/5 (3/5)^(k-1)*(2/5) 5/2
5. 1/5 (4/5)^(k-1)*(1/5) 5
期望可以根据几何分布的特点算出:E[X]=1/p
Streaks: 没看完。
Online hiring:
ON-LINE-MAXIMUM(k, n)
1 bestscore ← -∞
2 for i ← to k
3 do if score(i) > bestscore
4 then bestscore ← score(i)
5 for i ← k + 1 to n
6 do if score(i) > bestscore
7 then return i
8 return n
可以把应聘者分成四段来考虑:
A[1..k],A[k+1..i-1],A[i],A[i+1..n]
如果best-qualified applicant在第一个数组中,那么我们应聘到他的概率为0,所以,
Pr{S}= 。
书上说B和O是无关的,不是太懂。按照这样的思路下来的话,Pr{Oi}=k/(i-1),Pr{Bi}=1/n,Pr{Si}= Pr{Oi}* Pr{Bi}=k/(n*(i-1)),再计算Pr{S}即可。这里要用到A.12公式,这个公式看一下Figure A.1,再动笔算就能证明。最终得到
k/n(lnn-lnk)<=Pr{S}<=k/n(ln(n-1)-ln(k-1)),求导得到1/n(lnn-lnk-1), 1/n(lnn-lnk-1)=0时函数取极大值,即lnk=lnn-1=ln(n/e),k=n/3时,成功应聘到best-qualified的概率为最大,最大概率不小于1/e。