作业_huam.docVIP

  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文档。上传文档
查看更多
作业_huam

算法设计——概率算法作业 姓名:胡嘉瑜 学号:S概率算法 二.源代码——概率算法 三.近似算法 一. 概率算法 Ex1. 若将y ← uniform(0, 1) 改为 y ← x, 则上述的算法估计的值是什么? 答:k/n表示飞镖进入某一个区域内的概率,返回的值为4k/n。 因为:x ← uniform(0, 1),y ← x,在x和y满足x2 + y2 ≤ 1时k++ 所以:当x= √2/2时k++。 k/n表示在总的n次中k自加的概率,这个概率就等价为x= √2/2的概率。而x在[0,1]之间 → x= √2/2的概率就为√2/2,即k/n=√2/2。 所以:此时返回值4k/n=2√2。 Ex2. 在机器上用 估计π值,给出不同的n值及精度。 原理:f(x)=√(1-x^2),先使用概率算法求数字积分,之后将积分结果乘以4即为PI值。 输入:实验要使用的取值在[0,1]范围内的总点数 执行结果截图: Ex3. 设a, b, c和d是实数,且a ≤ b, c ≤ d, f:[a, b] → [c, d]是一个连续函数,写一概率算法计算积分: 注意,函数的参数是a, b, c, d, n和f, 其中f用函数指针实现,请选一连续函数做实验,并给出实验结果。 连续函数为:f(x)=x+4.0 输入:横坐标的范围[4,8],纵坐标的范围 [0,12](产生的点的纵坐标是[0,12],函数值域为[8,12])。 执行结果截图: EX4. 用上述算法,估计整数子集1~n的大小,并分析n对估计值的影响。 算法分析:不断从X={1,2,3,……n}中有放回的随机抽样,直到首次抽出重复元素为止,此时已经抽到的元素数目为K,则集合X的大小为:2K^2 / PI 。 算法的执行结果: 分析:在理论上当集合n越大时,估计集合大小的误差应该越小。但是可能是由于随机函数性能的问题,试验结果是随着n的增大,误差越来越大。 Ex. 分析dlogRH的工作原理,指出该算法相应的u和v 解: 算法首先使用函数u(a,b)将a随机化为c,之后使用确定性算法dlog(g,p,c)计算出随机化后的输入实例的计算结果y,最后使用函数v(y,r)将y恢复为以a为输入实例的计算结果。 Steps: 1. 产生一个随机值b 2. u(a,b)=ba mod p=c 3. dlog(g,p,c)= log g,p(c)=y 4. v(y,r)=(y-r) mod (p-1)=s s即为dlog(g,p,a)的值。 原理解释: 因为 log g,p(c)= log g,p(ab mod p)=[log g,p(a)+log g,p(b)] mod (p-1) y=[ log g,p(a)+log g,p(g^r mod p) ] mod (p-1) y=[ log g,p(a)+r )] mod (p-1) (0= r = p-2) log g,p(a)为输入实例为a的确定性算法的结果(即s): s=log g,p(a)=(y-r) mod (p-1),而(y-r) mod (p-1)即为函数v(y,r)。 使用u(a,b)=ba mod p将a随机化为c,之后使用v(y,r)=(y-r) mod (p-1)可以将y恢复为s,所以v和u可以实现:将输入实例a随机化为c之后,把以c为输入的确定性算法的结果恢复为以a为输入时确定性算法的结果。 Ex. 写一Sherwood算法C,与算法A, B, D比较,给出实验结果。 算法C:由于算法B是一个确定性算法(在[1,√n]中找小于等于x的最大的y),所以将算法B修改为一个随机算法。 修改方法为:将从确定的区间[1,√n]中找y,更改为在[1,n]中随机取出√n个值,在这√n值中找y。之后再使用确定性算法Search(x,y)查找x。 修改方法的正确性说明: 因为“若将val[1..n]中的n个整数看作是均匀随机分布的,则在val[1..L]中求y值就相当于:在n个整数中,随机地取L个整数,求这L个整数中不大于x的最大整数y。” 所以在数组val的子区间[1,√n]中寻找一个y就等价于在整个[1,n]中先选出√n个值、再在这些值中找一y。 因此将算法B中的在[1,√n]中找y---在[1,n]中随机取出√n个整数,在这√n个整数中找y,是正确的。 算法设计:在一个已知的静态链表array[NUM]={{5,1},{7,8},{3,4},{0,2},{4,0},{11,7},{17,9},{14,6},{9,5},{20,10},{21,12},{25,13},{23,11},{30,15},{34,-1},{31,14}}中,分别使用A 、B 、C、 D算法查找

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档