第五章 概率分析和随机算法

5.1 雇佣问题

HIRE-ASSISTANT(n)
best = 0
for i = 0 to n
	interview candidate i
	if candidate is better than candidate best
		best = i
		hire candidate i

最坏情形分析

应聘者质量按出现的次序严格递增

如何求平均情况?

随机算法

5.2 指示器随机变量

定义:
I { A } = { 1 如 果 A 发 生 0 如 果 A 不 发 生 I\lbrace A\rbrace=\begin{cases} 1\quad如果A发生\\ 0\quad如果A不发生\end{cases} I{A}={1A0A
A发生的概率 P r { A } Pr\lbrace A\rbrace Pr{A},期望 E [ X A ] E[X_A] E[XA]

引理:给定一个样本空间S和S中的一个事件A,设 X A = I { A } X_A=I\lbrace A\rbrace XA=I{A},那么 E [ X A ] = P r { A } E[X_A]=Pr\lbrace A\rbrace E[XA]=Pr{A}

用指示器随机变量分析雇佣问题
X i = I { 应 聘 者 i 被 雇 佣 } = { 1 如 果 应 聘 者 i 被 雇 佣 0 如 果 应 聘 者 i 不 被 雇 佣 X_i=I\lbrace 应聘者i被雇佣\rbrace = \begin{cases} 1\quad如果应聘者i被雇佣 \\ 0\quad如果应聘者i不被雇佣 \end{cases} Xi=I{i}={1i0i

以及
X = X 1 + X 2 + ⋯ + X n X=X_1+X_2+\cdots+X_n X=X1+X2++Xn

根据引理
E [ X i ] = P r { 应 聘 者 i 被 雇 佣 } E[X_i]=Pr\lbrace 应聘者i被雇佣\rbrace E[Xi]=Pr{i}

应聘者比应聘者1到i-1更有资格的概率是1/i,因此
E [ X i ] = 1 / i E[X_i]=1/i E[Xi]=1/i
计算得
E [ X ] = ln ⁡ n + O ( 1 ) E[X]=\ln n+O(1) E[X]=lnn+O(1)
因此尽管面试了n个人,实际上大约只雇佣他们之中的 ln ⁡ n \ln n lnn个人

5.3 随机算法

先对应聘者进行排列,然后确定最佳应聘者的随机算法。此时建立的算法的性能和假设应聘者以随即次序出现所得的结果是匹配的。

随机排列数组

PERMUTE-BY-SORTING(A)
n=A.length
let P[1...n] be a new array
for i = 1 to n
	P[i] = RANDOM(1, n^3)
sort A, using P as sort keys

引理:假设所有优先级都不同,则过程PERMUTE-BY-SORTING产生输入的均匀随机排列

另一个方法:原址排列给定数组

RANDOMIZE-IN-PLACE(A)
n = A.length
for i = 1 to n
	swap A[i] with A[RANDOM(i, n)]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值