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

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


本章大概介绍了概率论的知识,都是些理论知识和其部分运用。

先来介绍一下雇佣问题:


假设你要雇佣一个新的办公室助理,雇佣代理每天想你推荐一个应聘者(连续推荐n个),你面试这个人,如果这个应聘者比目前的办公室助理更优秀,你就会辞掉当前的办公室助理,然后聘用这个新的。面试一个人需付给雇佣代理一笔费用,聘用办公助理也需要费用。

假设面试费用为Ci,雇佣的费用为Ch,假设整个过程中雇佣了m次,于是总的费用是 nCi+mCh。由于n是固定值,总费用的变化取决于m值。

这个场景用来当做一般计算范式的模型,通常情况下我们需要检查队列中的每个成员,并且维护一个目前的获胜者,来找出序列中的最大或最小值。雇佣问题是对哪一个成员当前获胜的更新频繁程度建立模型。


最坏情况

最坏情况下,我们雇佣了每一个应聘者,m=n。

概率分析:

概率分析是在问题分析中应用概率的理念,大多数情况下,我们采用概率分析来分析一个算法的运行时间,有时也来分析其他的量。

假设应聘者以随机顺序出现,等价于这个排名列表是数字1到n的n!种排列中的任意一个。或者,我们也称这些排名构成一个随机排列,也就是说,在n!种排列中,每一种以等概率出现。


随机算法:

为了模拟随机输入,我们利用一个随机数生成器

更一般的,如果算法的行为不仅由输入界决定,而且也由随机数生成器产生的数值决定,则称这个算法是随机的

当分析一个随机算法的运行时间时,我们以运行时间的期望值衡量,其中输入的值由随机生成器生成。

我们将一个随机算法的运行时间称为期望运行时间,以此来区分这类算法和那些输入是随机的算法。一般而言,当概率分布是在算法的输入上时,我们讨论的是平均情况运行时间,当算法本身做出随机选择时,我们讨论其期望时间。




指示器随机变量

给定一个样本空间S和一个事件A,那么事件A对应的指示器变量I{A}定义为:

I{A}=1 如果A发生     

I{A}=0 如果A不发生



一个事件A对应的指示器变量的期望值等于事件A发生的概率。

根据反映期望线性性质的等式,容易计算出总和的期望值:它等于n个随机变量的期望

值。期望的线性性质利用指示器随机变量作为一种强大

的分析技术。当随机变量之间存在关系时也成立。


随机算法:

随机算法的特点就是不依赖于其输入的值,即使其输入的为一个固定值,随机算法也会

产生相应的不同分布。


随机排列数组:


思路:可以先生成一组大小不相同的数作为其对应数组元素的优先级,然后根据优先级

进行排列。


还有另一种方法:

RANDOMIZE_IN_PLACE(int A[],int n)
{
    for(inti=1;i<=n;i++)
    {
       swap(A[i],A[RANDOM(i,n)]);
    }
}


这种方法也能随机生成一个概率相同的排列







几个应用:

1.生日悖论

X(i,j)表示ij生日相同


X=k*(k-1)/(2*n)

所以要X>=1n=365时,只需k=28



2.球与箱子

同样,先计算出单个情况下的概率,然后再把所有情况的概率加起来,作为事情发生的

总概率


由于一下涉及概率论等数学知识,由于能力有限,不再详细介绍。










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