第一章算法概述.ppt
《第一章算法概述.ppt》由会员分享,可在线阅读,更多相关《第一章算法概述.ppt(22页珍藏版)》请在三一办公上搜索。
1、,第一章 算法概述,第二章 递归与分治策略,第三章 动态规划,第四章 贪心算法,第五章 回朔法,第六章 分支限界法,第七章 概率算法简介,第八章 NP完全性理论简介,算法设计与分析 目录,7.1 基本知识,7.2 随机数,7.3 随机投点计算值,7.4 线性时间选择算法,7.5 n后问题,7.6 求素数的概率算法,7.7 求最近点对的概率算法,7.8 steiner树,算法设计与分析 目录,算法设计与分析 概率算法简介,算法思路 求解问题P的概率算法 A定义如下:设I是P的一个实例,I的规模|I|=n,在用A解I的某些时刻,随机地选取变量b的值(1=b=n),由b的值决定算法的下一步选取,除了
2、选取b的动作外,A的其它动作是确定的。为简单起见,通常设b的值出现的概率是相等的。,概率算法通常是确定算法随机化后的结果,它没有扩大原有的可计算函数的范围,所以不会影响已有的可计算性概念和结果.,7.1 基本概念,概率算法:指算法的某些步骤中的某些动作是随机性的.,对所求解问题的同一实例用同一概率算法求解两次所需的时间及所得到的结果可能会有很大的差别。,算法设计与分析 概率算法简介,适用问题,(1)对有些问题,最坏情况是极个别的,可能耗费很长时间,而 绝大多数情况算法执行效率还是很快的,这时候,平均复 杂性也许更有意义.(2)在许多情况下,当算法在执行过程中面临一个选择时,随机性选择常比最优选
3、择省时。,设计步骤,(1)对给定问题P设计一个确定算法A.(2)分析算法A的各个步骤及有关操作,确定随机化的入口 和随机化方式,从而将算法A随机化,得到概率算法A.(3)论证A是一个好的算法,即证明:A比A更好。,算法设计与分析 概率算法简介,时间复杂性,分析算法A的耗费时,要确定随机变量的耗费函数,并根据问题的特征和采取的随机模式(通常等概率)估算平均耗费.,平均耗费:如果对每个实例I P,|I|=n,算法A解I的平均耗费=f(n),则称A以平均耗费f(n)解问题p.其中,平均耗费是指同一实例对A中所有可能选中的r所耗时间对r的平均.,算法设计与分析 概率算法简介,数值概率算法 用于数值问题
4、的求解。这类算法所得到的往往是近似解。且近似解的精度随计算时间的增加而不断提高。在许多情况下,要计算出问题的精确解是不可能或没必要的,此时用数值概率算法可得到满意的解。(投点法求),总能求得问题的一个解,且所求得的解总是正确的。当一个确定性算法在最坏情况下的计算复杂性与其在平均情况下的计算复杂性有较大差别时,可在这个确定性算法中引入随机性。(快速排序,搜索),舍伍德算法,概率算法分类,算法设计与分析 概率算法简介,蒙特卡罗方法(随机模拟方法)用于求问题的准确解。用蒙特卡罗算法能求得问题的一个解,但这个解未必正确。求得正确解的概率依赖于算法所用的时间。算法所用的时间越多,得到正确解的概率就越高。
5、一般情况下,无法有效判定所得到的解是否肯定正确。(求素数),拉斯维加斯算法 一旦用拉斯维加斯算法找到一个解,这个解就一定是正确解。但有时用拉斯维加斯算法会找不到解。与蒙特卡罗算法类似,拉斯维加斯算法找到正确解的概率随着它所用的计算时间的增加而提高。对于所求解问题的任一实例,用同一拉斯维加斯算法反复对该实例求解足够多次,可使求解失效的概率任意小。(n后问题),线性同余法求伪随机数由线性同余法产生的伪随机数序列 a1,a2,an.满足 a0=d an=(b a n-1+c)mod m n=1,2,其中,b0,c 0,d m.d称为随机序列的 种子.,算法设计与分析 概率算法简介,计算机的随机数是由
6、随机种子根据一定的计算方法计算出来的数值(伪随机数)。计算机中无法产生真正的随机数.,7.2 随机数,随机序列的性能与b,c,d的选取有关.m应充分大(机器大数),且 gcd(m,b)=1.故可取b为素数.d为无符号长整数,可由用户选取,也可由系统时间自动产生.,算法设计与分析 概率算法简介,7.3 随机投点法计算值(数值概率算法),问题 设有一半径为r的圆及其外切四边形,向该正方形随机地投掷n个点.设落入圆内的点数为k,假定所投入的点在正方形上均匀分布,因而所投入的点 落入圆内的概率为r2/4r2,当n足够大时,k与n之比就逼近这一概率即/4,从而 4k/n.,Double darts(in
7、t n)static RandomNumber dart;in 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),7.4 线性时间选择算法(舍伍德),问题陈述 求n个元素中的第k小元素.,算法思路对输入数组A进行二分划分,使子数组A1的元素J,则K为A2的第K-J小元.,分析:,template Type RandomizedSelect(a,int p,int r,int k)if(p=r)return a p;int i=Rand
8、omizedPartition(a,p,r),j=i-p+l if(k=j)return RandomizedSelect(a,p,i,k);else return RandomizedSelect(a,i+1,r,k-j);,Tmax=(n2)(左半总为空),若分点总是等分点,则,Tmin(n)=,dT(n)=T(n/2)+cn,得:T(n)=(n),算法设计与分析 概率算法简介,*随机选择支点的函数,算法设计与分析 概率算法简介,template int randomizedPartition(Type a,int p,int r)int i=random(p,r)swap(ai,ap)r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 算法 概述

链接地址:https://www.31ppt.com/p-5294516.html