算法导论--算法的几率分析技术

对于一个算法,它可能会出现最佳状况好比O(n),也有可能出现最坏状况O(n^2),但更多的多是出现通常状况O(nlgn)。那么是否采用这个算法取决于它的平均状况,也就是它的指望值,这是一种几率分析手段。面试

下面就来具体介绍这种分析手段,前提假设您已经了解了离散数学的几率论的随机变量和指望值的相关内容。算法

离散数学中的指望值是针对总的状况,一次的总的状况加上两次的总的状况加上三次的总的状况等;而算导里的指示器是跟踪每一次的状况,而后分别相加。spa

以一个雇用问题来讲明:3d

假设你须要雇用一名新的办公室助理。你先前的雇用尝试都以失败了结,因此你决定找一个雇用代理。雇用代理天天给你推荐一个应聘者。你会面试这我的,而后决定要不要雇用他。你必须付给雇用代理一小笔费用来面试应聘者。要真正地雇用一个应聘者则要花更多的钱,由于你必须辞掉目前的办公室助理,还要付一大笔中介费用给雇用代理。你的诺言是在任什么时候候,都要找到最佳人选来担任这项职务。所以,你决定在面试完每一个应聘者后,若是这个应聘者比目前的办公助理更有资格,你就会辞掉目前的办公室助理,而后聘请这个新的应聘者。你愿意为这种策略而付出费用,但但愿可以预测这种费用会是多少。代理

面试的费用较低,譬如说为ci,而雇用的费用则较高,设为ch。假设m是已雇用的人数。那么这个算法的总费用就是O(nci+mch)。无论雇用多少人,咱们永远会面试n个应聘者,因此面试的费用永远是nci。所以,咱们只专一于分析mch,即雇用的费用上。这个量在算法的每次执行中都会改变。blog

最坏状况分析事件

在最坏状况下,咱们雇用了每一个面试的应聘者。当应聘者的资质逐渐递增时,就会出现这种状况,此时咱们雇用了n次,总的费用是O(nch)。数学

可是,较为合理的预期是应聘者并不是老是以资质递增的次序出现的。事实上,咱们既不能得知他们的出现次序,也不能控制这个次序。所以,一般咱们预期的是通常或平均状况。变量

几率分析方法

几率分析是在问题的分析中应用几率技术。大多数状况下,咱们使用几率分析来分析一个算法的运行时间。

指示器随机变量

指示器随机变量为几率与指望之间的转换提供了一个便利的方法。给定一个样本空间S和事件A,那么事件A对应的指示器随机变量I{A}定义为

举一个简单的例子,肯定在抛一枚均匀硬币时正面朝上的指望次数。样本空间为S={H,T},定义一个随机变量Y,取值H和T的几率各为1/2。接下来定义指示器随机变量XH,它对应于硬币正面朝上的状况即事件H。这个变量计算抛硬币时正面朝上的次数,若是正面朝上则其值为1,不然为0。写做:

在抛硬币时正面朝上的指望次数,就是指示器变量XH的指望值:

所以抛一枚均匀的硬币时,正面朝上的指望次数是1/2。如如下的引理所示,事件A对应的指示器随机变量的指望值等于事件A发生的几率。

咱们令指示器随机变量X对应于第i 次抛硬币时正面朝上的事件;令Yi 表示第i 次抛硬币输出结果的随机变量,有Xi=I{Yi=H}。假设随机变量X表示n次抛硬币中出现正面的总次数,因而

咱们但愿计算正面朝上的指望次数,因此咱们使用对上面的等式两边取指望,得

等式左边是n个随机变量总和的指望值。有引理5.1,容易计算出每一个随机变量的指望值。根据反映了指望的线性性质的公式E[X+Y]=E[X]+E[Y],容易计算出总和的指望值:它等于n个随机变量指望值的总和。指望的线性性质利用了指示器随机变量做为有力的分析技术;即便随机变量之间存在依赖关系也成立。如今咱们能够很容易地计算正面出现次数的指望值:

指示器随机变量极大地简化了计算过程。

利用指示器随机变量分析雇用问题

此时,咱们但愿计算雇用一个新的办公助理的指望次数。为了利用几率分析,假设应聘者以随机的顺序出现。令X做为一个随机变量,其值等于雇用一个新的办公助理的次数。

为了利用指示器随机变量,咱们不是经过定义与雇用一个新的办公助理的次数对应的变量来计算E[X],而是定义n个和每一个应聘者是否被雇用对应的变量。特别地,令X对应于第i 个应聘者被雇用这个事件的指示器随机变量。因此,

而且

由引理5.1,有

若是应聘者i 赛过从1到i-1的每个应聘者,则应聘者i 会被雇用。因为已经假设应聘者以随机的顺序出现,因此前i 个应聘者也是以随机的顺序出现的。这些前i 个应聘者中的任何一个都等可能地是目前最有资格的。应聘者i 比从应聘者1到i-1更有资格的几率是1/i,所以也以1/i 的几率被雇用。由引理5.1,能够得出结论

如今能够计算E[X]了:

即便面试了n我的,平均起来看,实际上大约只雇用他们之中的lnn我的。

相关文章
相关标签/搜索