跳转至

Randomized Algorithm

概率论

  • Pr(A) 表示事件 A 发生的概率
  • A¯ 表示事件 A 不发生
  • E(X) 表示随机变量 X 的期望

The Hiring Problem

面试一个人后立即决定是否录用。

面试费用 Ci,雇佣费用 ChN 个人,雇佣 M 个人。

Naive Algorithm

每次如果当前面试的人比之前所有的人都好,则雇佣。

X 为雇佣的人数,Xi 为第 i 个人是否被雇佣。

Xi={1,candidate is hired0,candidate is not hired

每个人被雇佣独立,所以

E(X)=E(i=1NXi)=i=1NE(Xi)=i=1NPr(Xi=1)=i=1N1i=lnN+O(1)

Online Version

面试的时候需要立即决定是否雇佣,且只能雇佣一次。

先面试 K 个人,找到最好的,但是不进行雇佣。然后面试后面的人,如果比之前的人好,则雇佣,结束面试。

Decide K

Si 表示第 i 个人是最好的。Si 为真,如果事件 A(第 i 个人是最好的)发生,且事件 B(第 K+1 到第 i1 个人都不被雇佣)发生。

Pr(Si)=Pr(AB)=Pr(A)Pr(B)=1NKi1=KN(i1)

得到雇佣到最好的人的概率为

Pr(S)=i=K+1NPr(Si)=i=K+1NKN(i1)=KNi=KN11i

K=N/ePr(S)=1/e

QuickSort

如果随机选取的 pivot 导致一侧元素个数小于 n/4 ,那么重新选取 pivot。选出合适 pivot 的期望次数是两次。

将子问题分为几类:

Type j:子问题 S 满足 N(34)j+1|S|<N(34)j

最多有 (43)j+1 个 Type j 的子问题。

时间开销 E(TType j)=O(N(43)j+1)×(34)j+1=O(N)

不同 type 个数 log4/3N=O(logN)

所以期望时间复杂度为 O(NlogN)