启发式算法

概率分析与随机算法

2017-11-25  本文已影响0人  王侦

目录

0.雇佣问题

1.概率分析的含义

概率分析的一般思路是:首先对输入的分布情况进行某种假设,最常见的假设当然是均匀分布;然后以此假设为前提,对一个已知的算法进行此种分布下的复杂性和效率分析。

2.随机算法

通过使算法中某部分行为随机化
一个算法的行为不仅由输入决定,而且也由随机数生成器产生的数值决定,这个算法就是随机的。
在实践中,大多数编程环境提供了一个伪随机数生成器,它是一个确定性算法,返回值在统计上看起来是随机的。

3.随机算法与概率分析的区别

1)当算法本身做出随机选择时,称之为随机算法。将一个随机算法的运行时间称为期望运行时间。
2)进行概率分析,必须使用或者假设关于输入的分布,然后分析该算法,计算出一个平均情形下的运行时间。此时称为平均情况运行时间。

4.雇佣问题的随机算法

4.1 雇佣问题的随机化方法

让随机发生在算法上,而不是输入分布上。



4.2 随机排列数组

很多随机算法通过对给定的输入变换排列以使输入随机化。(还有其他使用随机化的方法)

4.2.1 第一个随机化方法:随机赋予优先级,按优先级重新排列

一个通常的方法是为数组的每个元素A[i]赋予一个随机的优先级P[i],然后依据优先级对数组A中的元素进行排序。



选取在1~n³之间的随机数,是为了让P中所有优先级尽可能唯一。(证明所有元素都唯一的概率至少是1-1/n,如何在两个或更多优先级相同的情况下,实现这个算法。)



4.2.2 第二个随机化方法:原址排列给定数组



5.指示器变量与随机化分析

5.1 指示器随机变量(概率与期望之间转换的一个方法)

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




指示器随机变量在分析重复随机试验时有用:



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

设X是一个随机变量,其值等于雇佣一个新办公助理的次数:



但是这种计算会很麻烦。

如下为采用指示器随机比那里来计算:




5.3 生日悖论




采用指示器随机变量的一个分析:
对屋子里k个人中的每一对(i, j),对1 <= i < j <= k,定义指示器随机变量Xij如下:



两个人生日相同的概率是1/n,因此:



5.4 球与箱子

礼券收集者问题:
一个人如果想要集齐b种礼券中的每一种,大约需要blnb张随机得到的礼券才能成功。


5.5 特征序列

假设抛投一枚标准的硬币n次,最长连续正面的序列的期望长度有多长?答案是Θ(lgn)。
1)首先证明最长的连续证明的特征序列的长度期望是O(lgn)



2)证明下界:在n次硬币抛投中,最长的正面特征序列的长度期望为Ω(lgn)



采用指示器随机变量进行分析:



5.6 在线雇佣问题



对每个可能的k,希望确定能雇佣最好应聘者的概率。然后选择最佳的k值。
M(j) = max{score(i)}表示1~j中最高的分数
S表示成功选择最好应聘者的事件
Si表示最好的应聘者是第i个面试者时成功的事件



计算Pr{Si}:

为了当第i个应聘者是最好时发生。必须满足两个条件:
1)最好的应聘者必须在位置i上,用事件Bi表示。
2)算法不能选择从位置k+1~i-1中任何一个应聘者。因此,所有score(k+1)到score(i-1)都必须小于M(k)。用Oi表示从位置k+1到i-1中没有任何应聘者入选的事件。



事件Bi仅依赖于位置i的值是否大于所有其他位置的值
事件Oi仅依赖于位置1到i-1中值的相对次序。
从位置1到i-1的排序并不影响位置i的值是否大于上述所有的值,并且位置i的值也不会影响从位置1到i-1值的次序。因此Bi和Oi是独立的。

A.12如下:




上一篇 下一篇

猜你喜欢

热点阅读