《算法设计与分析》第9章-随机算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * 证明二 首先定义随机变量Xij: 其中第i小和第j小指排序后的数组中的位置. 算法的总共的比较次数为 期望运行时间为 证明二(续) 在排好序的数组上进行投标游戏: 若标投在第i小和第j小元素之外,则继续投标 若标投在第i小和第j小元素之间,或投在这两个元素之上,则游戏结束. 游戏结束时Xij=1当且仅当把标投在第i小和第j小元素之上 证明二(续完) 其中调和级数 满足 ln n Hn 1+ln n 9.3 随机算法的分类与局限性 拉斯维加斯型随机算法 零错误概率,ZPP 蒙特卡洛型随机算法 单侧错误概率,RP,coRP 双侧错误概率,BPP 随机算法的局限性 错误概率有界的多项式时间随机算法不太可能解决NP完全问题 9.3.1拉斯维加斯型随机算法 特征 这种算法的结果总是正确的,区别只在于运行时间的长短 拉斯维加斯型随机算法的运行时间本身是一个随机变量 例子:快速排序算法总是给出已经排序的数组,期望的时间则是2n ln n. 把期望运行时间是输入规模的多项式且总是给出正确答案的随机算法称为有效的拉斯维加斯型算法. 快速排序算法是有效的拉斯维加斯型算法 9.3.2 蒙特卡洛型随机算法 特征 这种算法有时会给出错误的答案. 其运行时间和出错概率都是随机变量,通常需要分析算法的出错概率 总是在多项式时间内运行且出错概率不超过1/3的随机算法称为有效的蒙特卡洛型算法 只要让算法独立重复执行足够多次,出错概率可以降到任意小 例子:素数检验、多项式恒等检验的随机算法和布尔可满足性问题的随机游动算法都是这类算法 单侧错误和双侧错误 弃真型单侧错误 当算法宣布接受时,结果一定是对的 当算法宣布拒绝时,结果有可能是错的. 例如,后面将要介绍的随机游动算法 取伪型单侧错误 当算法宣布拒绝时,结果一定是对的 而当算法宣布接受时,结果有可能是错的 例如,后面的素数检验和多项式恒等检验 双侧错误 所有输入上同时出现上述两种不同的错误 9.3.3有效随机算法的复杂性类 有效的拉斯维加斯型算法被称为ZPP类 即零错误概率多项式时间随机算法 有效的蒙特卡洛型算法被称为BPP类 即错误概率有界的多项式时间随机算法 有效的弃真型单侧错误随机算法称为RP类 有效的取伪型单侧错误随机算法称为coRP类 如果把ZPP类算法可以求解的判定问题类记作ZPP类,类似可以定义BPP、RP、co-RP等判定问题类,则 P ? ZPP = RP ? coRP ? BPP 有效随机算法的局限性 卡普-利普顿定理: 若NP ? P/poly,则 P/poly表示多项式规模电路能够求解的问题类 PH表示复杂性类从低到高的层次结构,也叫做多项式谱系, 是其中的第2层 不太可能为NP完全问题设计出多项式时间的随机算法 已知 BPP ? P/poly 如果NP ?BPP,则PH“塌方”到第2层 研究计算复杂性的人一般认为PH是不塌方的 最大公因数与二次剩余 我们把a与b的最大公因数记为gcd(a,b) 可用著名的辗转相除法求得 若存在b,使得a=b2 (mod n)且gcd(b,n)=1,则说a是模n的二次剩余 对于1?a?n,定义 雅各比符号 对于奇数n和a,设n的全部素数因子为p1,…,pk,即 ,定义雅各比符号为 雅各比符号可在O(log a?log n)时间内求得 对于每个奇素数n和所有满足gcd(n,a)=1的1?a?n?1,至多有一半的a满足 素数检验算法 算法 9.2 输入:自然数n 输出:n是否素数 1. 从{1,…,n?1}中随机选择自然数a 2. 若 gcd(n,a)1 或 则宣布 “n是合数” 3. 否则宣布“n是素数” 定理9.2 定理9.2 素数检验算法在多项式时间内运行. 当n是素数时,素数检验算法总是输出正确结果;当n不是素数时,素数检验算法至少以概率1/2输出正确结果. 证明 由于最大公因数和雅各比符号都是多项式时间可计算的,而利用反复平方法,求幂也是多项式时间可计算的,显然素数检验算法在多项式时间内运行. 定理9.2证明(续) 如前所述,由初等数论中的结论可知,对于每个奇 素数 n 和所有1?a?n?1,都有 QRn(a)=a(n?1)/2(mod n); 当n是素数时,算法总是正确检验出“n是素数”; 对每个合数n 和所有满足 gcd(n,a)=1的a, 1?a?n?1, 至多有一半的a满足 算法至少以1/2概率检验出“N是合数”.

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档