计算机算法设计与分析--第7章 随机化算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

提纲
一、随机化算法的基本思想 二、随机数 三、数值随机化算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
2018年11月22日
13
3.1用随机投点法计算值
设有一半径为r的圆及其外切四边形。向该正方形随机地投掷 n个点。设落入圆内的点数为k。由于所投入的点在正方形上 均匀分布,因而所投入的点落入圆内的概率为
随机化算法分析的目标
平均时间复杂性: 时间复杂性随机变量的均值 获得正确解的概率 获得优化解的概率 解的精确度估计
2018年11月22日 10
提纲
一、随机化概率算法的基本思想 二、随机数 三、数值随机化算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
2018年11月22日 22
Hale Waihona Puke Baidu
2018年11月22日
11
二、随机数
在现实计算机上无法产生真正的随机数,因此 在概率算法中使用的随机数都是一定程度上随 机的,即伪随机数。 线性同余法是产生伪随机数的最常用的方法。 由线性同余法产生的随机序列a0,a1,…,an满足: a0 d n 1,2, a n (ban 1 c) modm
2018年11月22日
4
1.1 随机化算法的基本概念
例如,判断表达式f(x1, x2, …, xn)是否恒等于0。 随机化算法首先生成一个随机n元向量(r1, r2, …, rn),并计算f(r1, r2, …, rn)的值,如果 f(r1, r2, …, rn)≠0,则f(x1, x2, …, xn)≠0;如果 f(r1, r2, …, rn)=0,则或者f(x1, x2, …, xn)恒 等于0,或者是(r1, r2, …, rn)比较特殊,如 果这样重复几次,继续得到f(r1, r2, …, rn)= 0的结果,那么就可以得出f(x1, x2, …, xn)恒 等于0的结论,并且测试的随机向量越多, 这个结果出错的可能性就越小。
2018年11月22日
18
五、Las Vegas算法基本思想
拉斯维加斯算法的一个显著特征是它所作的随机性决策有可能导 致算法找不到所需的解。 void obstinate(Object x, Object y) {// 反复调用拉斯维加斯算法LV(x,y),直到找到问题的一个解y bool success= false; while (!success) success=lv(x,y); } 设p(x)是对输入x调用拉斯维加斯算法获得问题的一个解的概率。 一个正确的拉斯维加斯算法应该对所有输入x均有p(x)>0。 设t(x)是算法obstinate找到具体实例x的一个解所需的平均时 间 ,s(x)和e(x)分别是算法对于具体实例x求解成功或求解失败所 需的平均时间,则有: t ( x) p( x) s( x) (1 p( x))(e( x) t ( x)) 解此方程可得: 1 p( x) t ( x) s ( x) e( x ) p( x)
Monte Carlo算法
主要用于求解需要准确解的问题 算法可能给出错误解 获得精确解概率与算法执行时间成正比
2018年11月22日 8
1.3 概率算法的分类
Las Vegas算法
一旦找到一个解, 该解一定是正确的 找到解的概率与算法执行时间成正比 增加对问题反复求解次数, 可使求解无效 的概率任意小
Pr { y f ( x)}
0

0
dydx f ( x)dx
0
假设向单位正方形内随机地投入n个点(xi,yi)。如果有m个点落入
m G内,则随机点落入G内的概率 I n 2018年11月22日
15
提纲
一、随机化算法的基本思想 二、随机数 三、数值随机化算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
对于一个解所给问题的蒙特卡罗算法MC(x),如果存在问题实例的 子集X使得: (1)当xX时,MC(x)返回的解是正确的; (2)当xX时,正确解是y0,但MC(x)返回的解未必是y0。 称上述算法MC(x)是偏y0的算法。 重复调用一个一致的,p正确偏y0蒙特卡罗算法k次,可得到一个 O(1-(1-p)k)正确的蒙特卡罗算法,且所得算法仍是一个一致的偏y0 蒙特卡罗算法。
2018年11月22日 19
提纲
一、随机化算法的基本思想 二、随机数 三、数值随机化算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
2018年11月22日
20
六、Monte Carlo算法基本思想
•在实际应用中常会遇到一些问题,不论采用确定性算法或概率算 法都无法保证每次都能得到正确的解答。蒙特卡罗算法则在一般 情况下可以保证对问题的所有实例都以高概率给出正确解,但是 通常无法判定一个具体解是否正确。 •设p是一个实数,且1/2<p<1。如果一个蒙特卡罗算法对于问题的 任一实例得到正确解的概率不小于p,则称该蒙特卡罗算法是p正 确的,且称p-1/2是该算法的优势。 •如果对于同一实例,蒙特卡罗算法不会给出2个不同的正确解答, 则称该蒙特卡罗算法是一致的。 •有些蒙特卡罗算法除了具有描述问题实例的输入参数外,还具有 描述错误解可接受概率的参数。这类算法的计算时间复杂性通常 由问题的实例规模以及错误解可接受概率的函数来描述。
2018年11月22日
r 2
以当n足够大时,k与n之比就逼近这一概率。从而 4k
n
4r 2


4
。所
14
3.2 计算定积分
设f(x)是[0,1]上的连续函数,且0f(x)1。
需要计算的积分为 I f ( x ) dx
0 1
,积分I等于图中的面积G。
在图所示单位正方形内均匀地作投点试验,则随机点落在曲线下 1 f ( x) 1 面的概率为
其中b0,c0,dm。d称为该随机序列的种子。如何选取该 方法中的常数b、c和m直接关系到所产生的随机序列的随机性 能。这是随机性理论研究的内容,已超出本书讨论的范围。从 直观上看,m应取得充分大,因此可取m为机器大数,另外应 取gcd(m,b)=1,因此可取b为一素数。
2018年11月22日 12
t B ( x) t A (n) s(n)
这就是舍伍德算法设计的基本思想。当s(n)与tA(n)相比可忽略时, 舍伍德算法可获得很好的平均性能。
2018年11月22日 17
提纲
一、随机化算法的基本思想 二、随机数 三、数值随机化算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
计算机算法设计与分析
Design and Analysis of Computer Algorithms
第七章随机化(概率)算法 Randomized Algorithms
提纲
一、随机化算法的基本思想 二、随机数 三、数值概率算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
2018年11月22日
2
提纲
一、随机化算法的基本思想 二、随机数 三、数值概率算法 四、舍伍德(Sherwood)算法 五、拉斯维加斯(Las Vegas)算法 六、蒙特卡罗(Monte Carlo)算法
2018年11月22日
3
1.1随机化算法的基本思想
是一种使用概率和统计方法在其执行过程中对于下 一计算步骤作出随机选择的算法。 随机化算法把“对于所有合理的输入都必须给出正 确的输出”这一求解问题的条件放宽,把随机性的 选择注入到算法中,在算法执行某些步骤时,可以 随机地选择下一步该如何进行,同时允许结果以较 小的概率出现错误,并以此为代价,获得算法运行 时间的大幅度减少。
2018年11月22日
6
1.2 随机化算法的基本特征
随机化算法的随机性:
对于同一实例的多次执行, 效果可能完全不同; 时间复杂性的一个随机变量; 解的正确性和准确性也是随机的。
2018年11月22日
7
1.3 随机化算法的分类
数值随机化算法
主要用于数值问题求解 算法的输出往往是近似解 近似解的精确度与算法执行时间成正比
2018年11月22日
16
四、Sherwood算法基本思想
设A是一个确定性算法,当它的输入实例为x时所需的计算时间 记为tA(x)。设Xn是算法A的输入规模为n的实例的全体,则当问 题的输入规模为n时,算法A所需的平均时间为:
t A ( n)
x X n
t
A
( x) / | X n |
这显然不能排除存在x∈Xn使得 t A ( x) t A (n) 的可能性。希望 获得一个概率算法B,使得对问题的输入规模为n的每一个实例 均有:
2018年11月22日 21
六、Monte Carlo算法基本思想
对于一个一致的p正确蒙特卡罗算法,要提高获得正确解的概率, 只要执行该算法若干次,并选择出现频次最高的解即可。 如果重复调用一个一致的(1/2+)正确的蒙特卡罗算法2m-1次,得 到正确解的概率至少为1-,其中,
2 m m 1 2i 1 1 ( 1 4 ) 2 i ( ) 2 4 m i 0 i 4
2018年11月22日 5
1.2 随机化算法的基本特征
一般情况下,随机化算法具有以下基本特征: (1)算法的输入包括两部分,一部分是原问题的输入, 另一部分是一个供算法进行随机选择的随机数序列; (2)算法在运行过程中,包括一处或若干处随机选择, 根据随机值来决定算法的运行; (3)算法的结果不能保证一定是正确的,但可以限定 其出错概率; (4)算法在不同的运行中,对于相同的输入实例可以 有不同的结果,因此,对于相同的输入实例,概率 算法的执行时间可能不同。
double Darts(int n) { // 用随机投点法计算值 static RandomNumber dart; int k=0; for (int i=1;i <=n;i++) { double x=dart.fRandom(); double y=dart.fRandom(); if ((x*x+y*y)<=1) k++; } return 4*k/double(n); }
Sherwood算法
一定能够求得一个正确解 确定算法的最坏与平均复杂性差别大时 , 加入随机性, 即得到Sherwood算法 消除最坏行为与特定实例的联系
2018年11月22日 9
1.4 随机化算法的性能分析
随机化算法分析的特征
每次运行实例仅依赖于随机选择 , 不依赖于输入 的分布 确定算法的平均复杂性分析: 依赖于输入的分布 对于每个输入都要考虑算法的概率统计性能
相关文档
最新文档