- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析 第3部分 求解困难问题 第11章 随机算法 11.1 ? 基本概念 11.1.1 随机算法概述 11.1.2 随机数发生器 11.1.3? 随机算法分类 11.2 拉斯维加斯算法 11.2.1 标识重复元素算法 11.2.2 性能分析 11.3 蒙特卡罗算法 11.3.1 素数测试问题 11.3.2 伪素数测试 ?11.3.3 米勒-拉宾算法 11.3.4 性能分析 11.4 舍伍德算法 11.4.1?随机快速排序算法 11.4.2 舍伍德算法的其它应用 【程序11-4】素数测试的蒙特卡罗算法 bool MillerRabin(int n,int alpha) { int q=n-1; for (int i=1;i=alpha*log(n);i++){ int a=rand()%q+1; if(Witness(a,n)) return false; } return true; } 定理 11-4 假定n是一个奇合数,在0an的整数中,至少有(n-1)/2个整数a 能够正确鉴别n的合数性。 定理11-5 Miller-Rabin算法给出错误结果的概率不超过n-?。 若一个确定算法有很好的平均时间性能,但对某些实例该算法的效率较低,则可考虑在算法中引入随机性,将其改造成一个舍伍德型算法,使得该算法对任何实例均有效。舍伍德算法旨在消除或减少问题的实例之间在运行时间上的差异。 快速排序的最坏情况时间复杂度为 O(n2),其平均情况时间复杂度为O(nlogn)。分析可知当待排序的序列已经递增或递减有序时,快速排序产生最坏情况时间。改进的方法是增加在分划元素选择上的随机性。快速排序的舍伍德算法只是在前面讨论的确定算法中,增加随机选择分划元素的做法。舍伍德算法不改变原有算法的平均时间。 DeSign and Analysis of Algorithms In C++ “十一五”国家级规划教材 陈慧南 编著 电子工业出版社 11.1 基本概念 11.2 拉斯维加斯算法 11.3 蒙特卡罗算法 11.4 舍伍德算法 一个随机算法(randomized algorithm)是指需要利用随机数发生器的算法,算法执行的某些选择依赖于随机数发生器所产生的随机数。 伪随机数序列发生器 最简单的可使用线性同余法(linear congruential method)产生,即 式中,m>0,0?a<m,0?c<m,0?d<m。m是模,a是乘数,c是增量,d称为该随机序列的种子。当a, c, m 给定后,不同的d将产生不同的随机数序列。 设a=3,c=7m=127,d=2,则有 (13,46,18,61,63,69,87,14,49,27,88,17,……) 随机算法通常分成4类:数值随机算法,蒙特卡罗算法,拉斯维加斯算法和舍伍德算法。 数值随机算法(numerical randomized algorithm)用于求数值问题的近似解。 蒙特卡罗算法 不保证所求得的解是正确的,也就是说,蒙特卡罗算法求得的解有时是错误的。不过,由于可以设法控制这类算法得到错误解的概率,并因它的简单高效,是很有价值的一类随机算法。一般情况下,蒙特卡罗算法求得正确解的概率随计算时间的增加而增大。但无论如何不能确保解的正确性,而且通常无法有效地判断所求得的解究竟是否正确,这是蒙特卡罗算法的缺陷。 拉斯维加斯算法 求得的解总是正确的,但有时拉斯维加斯算法可能始终找不到解。使用拉斯维加斯算法求解同一问题的同一实例,能够得到相同的结果,但算法的执行时间会不一样。一般情况下,求得正确解的概率随计算时间的增加而增大。因此,为了减少求解失败的概率,可以使用一个拉斯维加斯算法对同一实例,重复多次执行该算法。 舍伍德算法(Sherwood-algorithm) 总能求得问题的正确解。当一个确定性算法在最坏情况下的计算复杂度与其在平均情况下的计算复杂度两者相差较大时,可以在这个确定算法中引入随机性将它改造成一个舍伍德算法,用来消除或减少问题的不同实例之间这种在计算时间上的差别。舍伍德算法的精髓不是避免算法的最坏情况行为,而是设法消除这种最坏行为与特定实例之间的关联性。 随机算法有时也称概率算法(probabilistic algorithm),但也有人
您可能关注的文档
最近下载
- 新时代人文经济学的基本理论框架.docx VIP
- 人工智能引论知到智慧树期末考试答案题库2024年秋浙江大学.docx VIP
- 2025年电工作业低压电工通用考试题库.docx VIP
- 研究智慧供热系统建设方案.pptx VIP
- 2024年低压电工作业模拟考试题库试卷及答案.doc VIP
- 智慧供热系统建设方案.pptx VIP
- 马工程教材《组织行为学》课件 第三章 群体心理与行为.pptx VIP
- 2025年低压电工作业模拟考试题库试卷及答案.docx VIP
- 5.2 放射性元素的衰变(教学设计)高中物理(人教版2019选择性必修第三册).docx VIP
- 国家开放大学《证券投资分析》形考任务(1-5)试题及答案解析.docx VIP
文档评论(0)