- 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加1等于2; 2加2等于4; 4加4等于8; 8加8大于10。 儿歌 9.1引言 完成算术运算实际上就是在执行某种算法。由于人类通常对这些运算非常熟悉,所以想当然地会运用相应的算法。但是,当涉及很大的数值或者面临很长的数值序列,而欲进行乘法、除法或者更复杂的算术运算时,直接算法就可能不是最佳的。 在大多数情况下,可假定基本算术运算(诸如加法、乘法和除法等)花费一个单位的时间。当操作数可以由一个或者两个计算机字(例如,不太大的整数、单精度或者双精度的实数)所表示时,上述假定是合理的。但是,当操作数非常巨大(例如是一个2000位的整数)时,则必须考虑操作数的规模,或者至少要意识到基本运算已不再那么简单。很有可能由于忽略了操作数的规模而设计出“在纸面上”看似高效而实际效率却非常低的算法。 “输入的规模” 当想要对给定整数n进行算术运算时,我们很自然地将n的值视为输入的规模。但是,这却有悖于常规的输入规模的定义——输入所需的存储空间。这样的区别是十分重要的,即使是通过手工计算,也可以很快地将两个100位的数相加;而另一方面,即使是使用最快的计算机,也不能在合理的时间内计数至100位数所表示的数值。由于数n可以通过?log2n?个比特表示,它的规模可定义为?log2n?。例如,当输入是n时,需要O(logn)次运算的算法(例如,计算2n的算法)被认为是线性的,这是因为O(logn)是输入规模的线性函数;然而,当输入是n时,需要O(?n)次运算的算法(例如,通过尝试所有小于等于的数值对n进行因数分解)被认为是指数的。 内容 首先讨论计算给定数的幂。 其次给出可能是已知最古老的非平凡算法:寻找最大公约数的欧几里德算法,令人惊讶的是,现代计算机仍使用着这个拥有2200多年历史的算法。 接着讨论多项式乘法以及矩阵乘法的算法。 这一章的最后给出快速傅立叶变换,其是最重要且最漂亮的算法之一。 9.2求幂运算 问题 给定两个正整数n和k,计算nk。 由于nk=n?nk-1,可很容易地将这个问题归约到计算nk-1的问题。因此,该问题可以通过对k进行归纳解决,图9.1给出了其对应的直接算法。由于所减小的是k的值,而不是其规模,所以直接算法需要k次迭代。又因为k的规模是log2k,所以迭代的次数是k规模的指数函数(k=2log2k)。虽然该算法对于非常小的k值并不差,但是对于较大的k值就难以接受了。 对问题进行另一种归约的方法是利用事实nk=(nk/2)2,基于这个观察,就可将问题归约成输入参数为n和k/2的问题。 但是,如果k不为2的幂呢?再考虑一下刚才所使用的归约,首先是将两参数为n和k的问题归约到参数为n和k/2的更小问题。由于k/2可能不是一个整数,所以这步归约并不总是有效的。如果k/2不是整数,那么归约后的问题就不满足原始问题的条件。但是,如果k/2不是整数,那么(k-1)/2就一定是整数, RSA公用密码系统 密码学 加密 解密 专用密码 专用密码 ABCDEFGHIJK LMNOPQRSTUVWXYZ EIJFUAXVHWP GSRKOBTQYDMLZNC SEND MONEY QARUESKRAN SKRANEKRELIN MONEY ON WAY RSA 公用密码系统 公用加密密码 私人解密密码 01 02 A 02 B SEND MONEY 20061505011416150626 工作原理 选择一对素数 p q z=pq ? = (p-1)(q-1) 选择满足 gcd(n, ?)=1 的n (一般为素数) 计算满足 n×s mod ? =1 的唯一的 s (0s ?) 密码 公用密码 z n 私用密码 s 加密解密过程 原理 au mod z =a 若u mod ? =1 cs mod z = (an mod z )s mod z = (an)s mod z = ans mod z =a n×s mod ? =1 例 p=23 q=31 n=29 z=pq=713 ?=(p-1)(q-1)=660 s=569 (29*569 mod 660 =1) 公用密码 29 713 私用密码 569 a=572 57229 mod 713=113 加密 ab mod z = ((a mod z)(b mod z)) mod z 113 569 mod 713=572 解密 解密? 由于尚不知是否存在一个算法可以在合理的时间内(例如,人的一生)对一
文档评论(0)