《算法设计与分析》-第七章-随机算法及计算复杂性概要课件.ppt
《《算法设计与分析》-第七章-随机算法及计算复杂性概要课件.ppt》由会员分享,可在线阅读,更多相关《《算法设计与分析》-第七章-随机算法及计算复杂性概要课件.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 随机算法及随机算法及NP完全问题完全问题 l7.1 随机算法引言l7.2 随机算法的类型l7.3 随机数发生器l7.4 数值概率算法l7.5 舍伍德(Sherwood)算法l7.6 拉斯维加斯(Las Vegas)算法l7.7 蒙特卡罗(Monte Carlo)算法l7.8 NP完全问题7.1 随机算法引言随机算法引言l确定性的算法:算法的每一个计算步骤都是确定的,对于相同的输出,每一次执行过程都会产生相同的输出。l随机算法:非形式描述随机算法为使用随机函数产生器的算法。算法中的一些判定依赖于随机函数产生器的输出。随机算法对于相同的输入,在不同的运行过程中会得到不同的输出。对于相
2、同的输入,随机算法的执行时间也可能随不同的运行过程而不同。8.1 随机算法引言随机算法引言l随机算法的优点:1、执行时间和空间,小于同一问题的已知最好的确定性算法;2、实现比较简单,容易理解。l很多确定性的算法,其性能很坏。可用随机选择的方法来改善算法的性能。l某些方面可能不正确,对特定的输入,算法的每一次运行不一定得到相同结果。出现这种不正确的可能性很小,以致可以安全地不予理睬。7.2 随机算法的类型随机算法的类型 l数值概率算法l拉斯维加斯(Las Vegas)算法l蒙特卡罗(Monte Carlo)算法l舍伍德(Sherwood)算法。7.2 随机算法的类型随机算法的类型l1、数值概率算
3、法:用于数值问题的求解。所得到的解几乎都是近似解,近似解的精度随着计算时间的增加而不断地提高。l2、舍伍德(Sherwood)算法:很多具有很好的平均运行时间的确定性算法,在最坏的情况下性能很坏。引入随机性加以改造,可以消除或减少一般情况和最坏情况的差别。7.2 随机算法的类型随机算法的类型l3、拉斯维加斯(Las Vegas)算法:要么给出问题的正确答案,要么得不到答案。反复求解多次,可使失效的概率任意小。l4、蒙特卡罗(Monte Carlo)算法:总能得到问题的答案,偶然产生不正确的答案。重复运行,每一次都进行随机选择,可使不正确答案的概率变得任意小。7.3 随机数发生器随机数发生器 l
4、产生随机数的公式:产生065535的随机数 序列,b、c、d为正整数,称为所产生的随机序列的种子。常数b、c,对所产生的随机序列的随机性能有很大的关系,b通常取一素数。7.3 随机数发生器随机数发生器l#defineMULTIPLIER0 x015A4E35L;l#defineINCREMENT1;lstatic unsigned long seed;lvoid random_seed(unsigned long d)llif(d=0)l seed=time(0);lelsel seed=d;llunsigned int random(unsigned long low,unsigned lo
5、ng high)llseed=MULTIPLIER*seed+INCREMENT;lreturn(seed 16)%(high low)+low);l7.4 数值概率算法数值概率算法l l例:用随机投点法计算例:用随机投点法计算 值值l设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为 。所以当n足够大时,k与n之比就逼近这一概率。从而7.4 数值概率算法数值概率算法lpublic double darts(int n)l /用随机投点法计算值l int k=0;l for(int i=1;i=n
6、;i+)l double x=dart.fRandom();l double y=dart.fRandom();l if(x*x+y*y)=1)k+;l l return 4*k/(double)n;l 7.5 舍伍德舍伍德(Sherwood)算法算法一、确定性算法的平均运行时间lTA(x):确定性算法对输入实例的运行时间。lXn:规模为的所有输入实例全体。l算法的平均运行时间:l存在实例 ,。l例:快速排序算法l当输入数据均匀分布时,运行时间是 。l当输入数据按递增或递减顺序排列时,算法的运行时间变坏7.5 舍伍德舍伍德(Sherwood)算法算法二、舍伍德算法的基本思想消除不同输入实例对算
7、法性能的影响,使随机算法对规模为的每一个实例,都有:三、期望运行时间:l 当s(n)与 相比很小可以忽略时,舍伍德算法有很好的性能。l对所有输入实例而言,运行时间相对均匀。时间复杂性与确定性算法的时间复杂性相当.7.5 舍伍德舍伍德(Sherwood)算法算法l随机快速排序算法 l算法算法9.1 随机选择枢点的快速排序算法l输入:输入:数组A,数组元素的的起始位置low,终止位置highl输出:输出:按非降顺序排序的数组Al 1.template l2.void quicksort_random(Type A,int low,int high)l3.l 4.random_seed(0);/*选
8、择系统当前时间作为随机数种子*/l 5.r_quicksort(A,low,high);/*递归调用随机快速排序算法*/l 6.7.5 舍伍德舍伍德(Sherwood)算法算法l1.void r_quicksort(Type A,int low,int high)l2.l 3.int k;l 4.if(low0,使得对的所有实例p,都有p(x)=,则失败的概率小于1-。l连续运行k次,失败的概率降低为(1-)k。lk充分大,(1-)k趋于0。7.6 拉斯维加斯(拉斯维加斯(Las Vegas)算法)算法l例:识别重复元素l考虑一个有n个数字的数组a,其中有n/2个不同的元素,其余元素是另一个元
9、素的拷贝,即数组中共有(n/2)+1个不同的元素。问题是要识别重复的元素。l确定性算法:至少需要(n/2)+2个时间步。7.6 拉斯维加斯(拉斯维加斯(Las Vegas)算法)算法l拉斯维加斯(Las Vegas)算法int RepeatedElement(Type a,int n)while(1)int i=random()%n+1;int j=random()%n+1;if(i!=j)&(ai=aj)return(i);7.6 拉斯维加斯(拉斯维加斯(Las Vegas)算法)算法lwhile循环则任何一次迭代中退出的概率为p=.当n 10时,p 1/5,则不退出的 概率 4/5。l算法
10、在前calogn(c为固定常数)次迭代内不退出的概率(4/5)calogn=n-calog(4/5),若取c 1/log(5/4),则其值 n-a,l因此,算法在calogn次迭代以内终止的概率 1-n-a。每次迭代花费O(1)的时间,算法的执行时间为O(logn)。7.7 蒙特卡罗(蒙特卡罗(Monte Carlo)算法)算法 l蒙特卡罗算法则在一般情况下可以保证对问题的所有实例都以高概率给出正确解,但是通常无法判定一个具体解是否正确。l设p是一个实数,且1/2p1。如果一个蒙特卡罗算法对于问题的任一实例得到正确解的概率不小于p,则称该蒙特卡罗算法是p正确的,且称p-1/2是该算法的优势。l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法设计与分析 算法 设计 分析 第七 随机 计算复杂性 概要 课件
限制150内