算法导论第五章总结

有随机排列应聘者的步骤,则是随机算法(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 ito k
3      do if score(i) > bestscore
4            then bestscorescore(i)
5 for ik + 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。

 

 

你可能感兴趣的:(算法导论)