- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
随机算法 有趣的例子 1、彩票的作用: 财富的重新分配过程, 买的目的:不中奖99.9999%,中奖0.0001% 2、赌场必输的原因: 换筹码 有穷 VS 无穷 贪心 随机算法定义 它是在接受输入的同时,为了随机选择的目的,还接收一串随机比特流并且在运行过程中使用该比特流的算法。 一个随机算法在不同的运行中对于相同的输入可以有不同的结果。同时,二次相同的输入,运行时间可能不同。 优势:1、相对于解决同一问题的确定性算法,随机算法所用的时间和空间通常比较小。 2、已知的随机算法,都比较容易理解。 举例: 求证:f(x1,x2,…,xn) ? 0 如果f(r1,r2,…,rn)=0,能说明恒等于0。 随机算法分类 分成两大类: Las Vegas 算法,Monte Carlo算法 Las Vegas 算法:这些算法或者得出正确解,或者无解。 Monte Carlo算法:这些算法总是给出解,但是偶尔可能会产生非正确解。然而,可以通过多次运行原算法,并且满足每次运行时的随机选择相互独立,使产生非正确解的概率可以减到任意小。 拉斯维加斯( Las Vegas )算法 拉斯维加斯算法的一个显著特征是它所作的随机性决策有可能导致算法找不到所需的解。 void obstinate(Object x, Object y) {// 反复调用拉斯维加斯算法LV(x,y),直到找到问题的一个解y bool success= false; while (!success) success=lv(x,y); } 蒙特卡罗(Monte Carlo)算法 在实际应用中常会遇到一些问题,不论采用确定性算法或概率算法都无法保证每次都能得到正确的解答。蒙特卡罗算法则在一般情况下可以保证对问题的所有实例都以高概率给出正确解,但是通常无法判定一个具体解是否正确。 设p是一个实数,且1/2p1。如果一个蒙特卡罗算法对于问题的任一实例得到正确解的概率不小于p,则称该蒙特卡罗算法是p正确的,且称p-1/2是该算法的优势。 蒙特卡罗(Monte Carlo)算法 如果对于同一实例,蒙特卡罗算法不会给出2个不同的正确解答,则称该蒙特卡罗算法是一致的。 有些蒙特卡罗算法除了具有描述问题实例的输入参数外,还具有描述错误解可接受概率的参数。这类算法的计算时间复杂性通常由问题的实例规模以及错误解可接受概率的函数来描述。 蒙特卡罗(Monte Carlo)算法 对于一个一致的p正确蒙特卡罗算法,要提高获得正确解的概率,只要执行该算法若干次,并选择出现频次最高的解即可。 如果重复调用一个一致的(1/2+?)正确的蒙特卡罗算法2m-1次,得到正确解的概率至少为1-?,其中, 测试串的相等性 从911说起,异地备份的重要性(3年,45%)。 处于异地的相同数据如何测试相等性? 1、完全一一比较,异地数据必须全部传到本地,大量数据会使带宽阻塞。 2、指纹比较, ( Monte Carlo)算法 ), 测试串的相等性 A 有一个很长的串x,B有一个很长的串y,问:x 是否等于 y? 设I(x)是比特串x 表示的一个整数,指纹函数是:I p (x)=I (x) (mod p) 那么有:如果I p (x) ? I p (y),则有 x ? y 反之,如果I p (x) = I p (y),则不一定有 x = y 假匹配:如果x ? y 但是I p (x) = I p (y) , 即 p 可以整除 I (x) - I (y) 测试串的相等性算法 1. A 从小于M的素数集中随机选择 p; 2. A 将 p 和I p (x) 发送给B; 3. B 检查是否 I p (x) = I p (y) ,确定两个串x和y 是否相等。 计算假匹配概率: 设n是x 和 y 的二进制表示形式的位数; ?(n)是小于n的不同素数的个数,则 ?(n)=n/ln n 同时,如果k2n,则能整除k的不同质数的个数小于?(n)。 则,如果x ? y 但是I p (x) = I p (y) 的概率是: 计算假匹配概率: 如果M=2n2, 则: 如果重复执行算法k次,每次随机选一个小于M的素数,则概率变成最大是 (1/n) k 举例:p23 ,例14.2 素数测试 Wilson定理:对于给定的正整数n,判定n是一个素数的充要条件是(n-1)!? -1(mod n)。 费尔马小定理:如果p是一个素数,且0ap,则ap-1 ?1(mod p)。 二次探测定理:如果p是一个素数,且0xp,则方程x2?1(mod p)的解为x=1,p-1。 素数测试 bool Prime(unsigned int n
文档评论(0)