算法导论习题5--概率分析和随机算法

概率论在算法分析中分两种情况:1、计算事件发生的概率值 2、计算事件发生次数的期望。
指数器随机变量是为了解决第2类问题诞生的,有了指数器随机变量,计算期望值变成了很容易的事情,而且似乎只对期望值计算有用。
计算随机变量的数学期望:
1)第一种方法
   计算随机变量的数学期望,可以先计算出随机变量的概率质量函数,然后利用期望的定义E(X)=sum_i{xbullet p_i来计算数学期望。
2)随机变量指示器

但是很多情况,计算随机变量的概率质量函数是很困难的,但是如果算法过程可以类比为伯努利实验,是由很多个实验组成,其中每个实验的概率质量函数都比较容易求得。比如帽子分发问题,随机变量 X定义为n个人得到自己帽子的总数,定义随机变量指示器 X_i ,很容易知道 X=sum_{i}{X_i},而且随机变量Xi的概率分布很容易求,这样就可以省去求X的概率质量函数了(因为 X_i之间互不独立,X的概率质量函数很难求),直接计算X的期望值。
随机变量指示器在解决生日悖论或者序列逆序问题这种计算多种变量符合某种关系的对数量的期望时非常有用,因为,直接计算这些问题的值的概率质量函数是很复杂而且容易出错的。

1、雇佣问题。

2、帽子分发问题(序列随机排列的不动点)。
问题:n个人将帽子交给一个管理员保管,管理员随机将帽子分发给n个人,请问拿到自己帽子的客户的期望数目是多少?
解答:用指数器随机变量分析这个问题很简单,设随机变量 Xi = I{第i个人拿到了自己的帽子}; 那么所有拿到自己帽子客户数量为 X=sum_{i}{X_i}, 求 E(X)就是所求的答案。
E(X)=sum_i{E(X_i)}=sum_i{pr{X_i=1},目前为止,一切都很自然。
因为任何一个人能拿到自己帽子这个随机变量的概率是 frac{1}{n},即 pr{X_i=1}=frac{1}{n}
E(X)= 1

这个问题和解决问题的办法有些类似伯努利实验,唯一的区别是伯努利实验单次实验之间是完全独立的,而帽子分发问题的 X_i,i=1,2,3...n之间不是独立的,计算随机变量计数期望可以忽略这个不独立的属性。如果是计算事件发生的概率质量函数或者事件发生的概率值,比如计算 pr{X=i},随机变量之间独立性就会影响结果了。

3、序列的逆序
问题:A[1..n]是由n个不同的数构成的数组。如果iA[j],则称(i,j)为一个逆序对。利用指示器随机变量来计算A中逆序对的期望数目是多少?
解答:在《计算机程序设计艺术》第三卷第5章介绍了一种用生成函数求得逆序的期望的方法,很复杂。《算法导论》用指数器随机变量的方法来求解的,很简单。

4、生日悖论问题
问题:n个人中,生日在同一天的人的对数的期望值(The expected number of pairs of people with the same birthday)。
解答:如果要先求出生日同一天人对数的概率分布再求期望值比较复杂。用随机变量指示器,问题简单很多。
对于 1 <= i < j <= n
X_{ij} = 1 ; 如果i和j的生日在同一天
X_{ij} = 0; 如果i和j的生日不在同一天
那么总的生日在同一天的人的对数值  n = sum_{1 leq i < j leq n} {X_{ij}}, 对于任两个人,生日在同一天的期望值为 E(X_{ij})=frac{1}{365} ;   E(n) = sum_{1 leq i < j leq n}{E(X_{ij})} = C(n,2) times E(X_{ij})


5、球与盒子(赠劵收集者问题coupon collector's problem)
问题:把相同的球随机投到b个盒子的过程,其中盒子编号为1,2...b。每次投球都是独立的,所有的球等可能落在任何一个盒子里,球落在任何一个盒子的概率都是1/b。
1)有多少球落在给定的盒子里,落在一个盒子里的球符合二项分布b(k;n,1/b)。落在给定盒子里的球的期望数是n/b。
2)在给定的盒子里至少有一个球之前,平均需要投多少球?要投的球数符合几何分布,概率为1/b,成功前的期望个数是b。
3)在每个盒子都至少有一个球之前,平均要投多少个球?为了想知道b次击中所需要投的球数。

n_i;i=1,2...b表示第i阶段的投球次数, n_i表示当第 i个盒子开始有球时该阶段的所投球数,即第i-1个盒子已经有球,在第i个盒子有球时这阶段的投球总数。所有i个盒子都至少有一个球的总投球数为 n=sum_{i}{n_i}。随机变量 n_i都符合几何分布,概率为 frac{b-i+1}{b},所以 E(n_i)=frac{b}{b-i+1}
所以 E(n)=sum_{i=1}^{b}{E(X_i)}=bsum_{i}{frac{1}{i}=b(lnb+O(1))

6、最长序列
问题:随机的抛n次硬币,连续出现硬币头方向向上的最多的次数的期望值是多少。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值