收藏 分享(赏)

算法的发展史.doc

上传人:fmgc7290 文档编号:6546163 上传时间:2019-04-16 格式:DOC 页数:11 大小:80KB
下载 相关 举报
算法的发展史.doc_第1页
第1页 / 共11页
算法的发展史.doc_第2页
第2页 / 共11页
算法的发展史.doc_第3页
第3页 / 共11页
算法的发展史.doc_第4页
第4页 / 共11页
算法的发展史.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、算法的发展史(时间轴)公元前 4000 年 - 在这儿,我们必须提到远古的苏美尔人。 我们都知道,人类文明的发祥地是在两河流域一带,约公元前 4000 年,在两河流域的交汇处,孕育着聪明的苏美尔人,是他们发明了人类最早的文字楔形文字,以及“一周七天” , “一年十二个月”等历算法。公元前 3000 年 - 一个多位数的乘法就是通过多次使用一位数乘法, 一位数加法和进位运算规则实现的, 可以看作是一个算法过程. 人类最早关于算法的记录是在两河流域发现的公元前两三千年的黏土板, 其中的一个典型例子就是计算利息何时能够等于本金.公元前 2698 年 - 黄帝,与炎帝同为少典所生,史记记载炎帝、黄帝为

2、兄弟,公元前 2698年,黄帝的有熊部落打败炎帝的神农部落和蚩尤的九黎部落统一中国,建立黄帝王朝。 点评:黄帝原名姬轩辕,为儒家尊崇的五帝之一。 传说中黄帝发明了房屋、衣裳、车船、兵器、阵法、音乐、器具、井田。 黄帝的妻子和大臣也各有贡献,妻子螺祖发明养蚕抽丝,大臣仓颉发明文字,大臣隶首发明算法,大臣容成发明历法。公元前 2100 年 - 这些符号实际上就是巴比伦人所用的文字,人们称它为“楔形文字” 。 科学家经过研究发现,泥版上记载的,是巴比伦人已获得的知识,其中有大量的数学知识,大约有 300 块是纯数学的内容,其中约 200 块是各种数表,包括乘法表、倒数表、平方和立方表等。 从这些历史

3、资料中,人们发现:在公元前 2100 年左右,美索不达米亚人已有了乘法表,其中使用着六十进位制的算法。公元前 2100 年 - 公元前 2100 年,中国夏朝出现象征吉祥的河图洛书纵横图,即为 “九宫算”,这被认为是现代“组合数学”最古老的发现。 美索不达米亚人已有了乘法表,其中使用着六十进位制的算法。公元前 2000 年 - 在大约公元前两千年,巴比伦人设计了一个以两朔月 29 1/2 天平均周期为基本的历制。 在这个历制中,一年分为十二个阴历月,总计 354 日。 由于这套算法比太阳日少了 11 天, 不久后收获祭典举行的季节不对了。 为了保证祭典和季节之间的正确关系,祭司忽然想出一套仍在

4、使用的办法-闰法,将额外的日或月加入,以修正不吻合的天文周期,而使得历制和自然节期调和。公元前 2000 年 - 在一些方面,达罗毗托人的文化比埃及和苏马连文化高。 他们有自己的独特的文字,有十进制的算法。 大约公元前两千年的时候,印度人就已经使用 51 个字母组成的文字,数学在印度曾被认为最重要的科学之一。 和许多古老的民族一样,它的头一批数学家也是僧侣。早在公元前 1900 年,一个古埃及书写员就在一个铭文中使用了非标准的象形文字,这是人类最早的有记录的密码术.公元前 1400 年 - 大约在这时,美索不达米亚人有了乘法表,其中使用着六十进位制的算法。 稍后,即公元前 1900前 1600

5、,古埃及的纸草书上出现数学记载。公元前 400 年 -密码最早用于军事用途应该是公元前 400 年的斯巴达人,他们使用了一种叫做“天言” 的情报传递方式。恺撒密码只是很经典,古典密码阶段各种经典算法都是由其变化而来, 不过确实称不上第一。公元前 300 年 - 辗转相除法是求最大公约数的一种算法,是由古希腊著名数学家欧几里得在公元前 300 年左右提出的,因而又叫欧几里得算法. 这个算法本质上揭示了一个定理:对于两个正整数 ab ,如果 a=bq+r(0rb),那么 a,b 的最大公约数等于 b,r 的最大公约数. 其算法的具体步骤为: 第一步:输入两个正整数 a,b(ab), 第二步: 计算

6、 ab 的余数 r; 第三步:a=b,b=r; 第四步:若 r=0,则最大公约数为 m;否则返回第二步 .公元前 240 年 - 约公元前 240 年,古希腊数学家埃拉托斯特尼首先提出了一种判断一个数是否素数的简单方法。 但随着数字的增大,使用这种方法所需的时间成指数增长。 从那以后数学家们一直试图寻找一种“多项式时间” 算法,以便在合理时间里解决问题。公元前 200 年 - 矩阵作为数的长方阵列,大概出现在公元前 200 年的中国数学中,不过它们仅仅是线性方程组的缩写。 矩阵变得重要仅当它们被施以加法、减法、尤其是乘法;矩阵变得更重要,这通过它们能派的用处就能看出来。 在高斯的算术研究(Di

7、squisitiones)中,矩阵被隐式地作为线性变换的缩写而提出,但现在却是以一种意义深远的方式。 高斯对二元二次型 f(x,y)=ax 2 +bxy+cy 2 的算法理论做了深入研究。公元前 50 年 - 密文:mldqjal qrupdo xqlyhuvlwb 公元前 50 年, 古罗马的凯撒大帝在高卢战争中采用的加密方法. 凯撒密码算法就是把每个英文字母向前推移 K 位.公元前 46 年 - 公历的前身是公元前 46 年古罗马皇帝儒略 恺撒创始的。 恺撒当皇帝时,当时的历法与天象气候等相差 3 个月之多(冬天变成了春天,春天变成了夏天,夏天变成了秋天,秋天变成了冬天) ,于是他采纳了一

8、位埃及天文学家的建议,废除旧历,颁布一种完全的太阳历,即儒略历。公元 50 年 - 给出了多项式求值的 “秦九韶算法”. 创造了解线性方程组的 “首图终图法”,等价于高斯消元法. 给出了求三角形面积的“三斜求积公式 ”,等价于古希腊数学家海伦于公元 50 年给出“ 海伦公式”.公元 100 年 - 九章数学 成书于公元 1 百年,记录加减乘除四种运算和比例算法,开平方、开立米、求解一元二次方程和负数观点都是世界最先的公元 263 年 - 263 年,三国魏人刘徽注释 九章算术 ,在九章算术注中不仅对原书的方法、公式和定理进行一般的解释和推导,系统地阐述了中国传统数学的理论体系与数学原理,而且在

9、其论述中多有创造,在卷 1方田中创立割圆术(即用圆内接正多边形面积无限逼近圆面积的办法) ,为圆周率的研究工作奠定理论基础和提供了科学的算法,他运用“割圆术” 得出圆周率的近似值为 3927/1250(即 3.1416) ;公元 321 年 - 321 年,君士坦丁大帝于 3 月 7 日正式公布“公历”,成为定制,逐渐成为国际惯例。 我国古代历法把二十八宿按日、月、火、水、木、金、土的次序排列,七日为一周,称为“七曜”。 这种算法与西方历法暗合。公元 400 年 - 孙子算经的作者不详,估计是公元 400 年左右的数学著作。 它是一部直接涉及到乘除运算、求面积和体积、处理分数以及开平方和立方的

10、著作。 对筹算的分数算法和筹算开平方法以及当时的度量衡体系,都作了描绘,其中有关数论上原一个“ 物不知数” 的计算问题,是世界上最早提出算法的,被誉为“ 孙子定理 ”公元 500 年 - 到了三国时代,出现两个数学家,一个叫刘徽,一个叫赵爽,对二次方程有了比较纯粹的解答。 到了公元五百年,进入南北朝时代,祖冲之考虑了三次方程。 五百年出了一个缉古算经 ,一个未知数的多项式方程的算法。公元 600 年 - 十进制系统,由印度发明于公元 600 年左右,它是定量推理的革命。 它仅仅使用了 10 个符号,甚至可以很简洁地写出很大的数字,它使得后面演示的算法基本步骤变得非常有效率。 尽管如此,由于传统

11、语言的阻碍,在很长一段时间内它都不被人们所熟知。公元 825 年 - 阿拉伯数学家阿科瓦里茨米(AlKhowarizmi)撰写了著名的波斯教科书(Persian Textbook) 书中概括了进行四则算 Textbook),书中概括了进行四则算术运算的法则.“ 算法(Algorithm)“ 一词就来源于这位数学家的名字1202 年 - 公元 1202 年,斐波那契的传世之作算法之术出版。 在这部名著中,斐波那契提出了以下饶有趣味的问题:. 假定一对刚出生的小兔一个月后就能长成大兔,再过一个月便能生下一对小兔,并且此后每个月都生一对小兔。 一年内没有发生死亡。 问一对刚出生的兔子,一年内能繁殖成

12、多少对兔子?1360 年 - 约公元 1360 年法国奥雷姆著 比例算法 ,引入分指数概念,又在论质量与运动的结构等著作中研究变化与变化率,用经、纬度(相当于横、纵坐标)表示点的位置并进而讨论函数图象。1478 年 - 西方国家第一部印刷本的算术书于 1478 年诞生于意大利的特雷维索城,名为特雷维索算术 ,作者不详 这本书的内容多半是商业算术,包括印度阿拉伯数字的写法和算法,合股和换货的计算法以及一些数学游戏 在德国,最有影响的算术书是由著名计算师里泽( AdlamRiese,14921559)编写的 他广招学生,写了一系列教材 有一本算术教材(1522 )共 4 篇:算盘计数,笔算,商业算

13、术,测量面积和体积1484 年 - 法国数学家许凯在 1484 年写成的算术三篇中,使用了一些编写符号,如用D 表示加法, 用 M 表示减法 这两个符号最早出现在德国数学家维德曼写的商业速算法中,他用“” 表示超过, 用“”表示不足1522 年 - 印度 阿拉伯数码的使用使算术运算日趋标准化。 L帕奇欧里(Pacioli) 的算术、几何及比例性质之摘要(Summadearithmetica,geometrica ,proportionietproportionalita, 1494)是一本内容全面的数学书;J维德曼(Widman)的商业速算法(1489) 中首次使用符号+和-表示加法和减法;A

14、里泽(Riese)于 1522 年出版的算术书多次再版,有广泛的影响;斯蒂文(SimonStevin)的论十进(1585) 系统阐述了十进分数的理论。1533 年 5 月 3 日 - 他撰写的 算法统宗是一部印量很大、传播很广的数学著作 . 程大位,安徽人,1533 年 5 月 3 日出生在风景秀美的江南小城休宁(今属黄山市)的一个商人家庭. 他自幼聪明好学, 对书法、数学特别喜爱. 他对考取功名并不热衷,而把主要精力用于经世实用的学问,对数学的学习和研究特别下力气. 他想尽办法广泛搜求古今各种数学书籍,见到好的数学书籍,不惜重金购买,带回家去,不分昼夜地刻苦钻研.1545 年 G.Carda

15、no(1501-1576)公布了由 N.Fontana(1499 1557)发现了解一元三次方程的解,而一元四次方程的解由 L.Ferrari(15221565)所解决。 于是当时大批的数学家致力于更高次方程的求根式解,即企图只对方程的系数作加、减、乘、除和求正整数次方根等运算来表达方程的解。1583 年 - 同文算指 是意大利耶稣会士利玛窦和李之藻根据利玛窦的老师克拉维斯(Christopher Clavius,15371612)在 1583 年出版的实用算术概论 (Epitome Arithmeticae Practicae)一书编译的,同时也参考了中国数学家程大位的算法统宗一书。 全书分

16、 前编 、 通编和别编三部分。1593 年 - 到了明代,珠算发展到了顶峰。 1593 年,明代数学家程大位所著算法统宗面世。 算法统宗是一部以珠算应用为主的算书。 全书共 17 卷,载有算盘图式和珠算口诀,并首次提到了用算盘做开平方和开立方的运算。1607 年 - 1607 年,“几何原本“前六卷正式出版,马上引起巨大的反响,成了明末从事数学工作的人的一部必读书,对发展我国的近代数学起了很大的作用。 和当时一般文人官吏热衷于笔墨应酬不同,徐光启用较多的时间进行天文、算法、农学、水利等科学技术研究,从事了不少这方面的翻译和写作。1628 年 - 筹算是罗雅谷于 1628 年写成的一本关于西方的

17、(纳贝尔)筹及其算法的数学著作. 介绍了筹算在中国的流传和中国清代数学家对该算法的发展情况.1666 年 - 1666 年莱布尼兹所著组合学论文一书问世, 这是组合数学的第一部专著. 书中首次使用了组合论(Combinatorics)一词. 组合数学的蓬勃发展则是在计算机问世和普遍应用之后. 计算机促进组合数学的发展信息技术为组合数学提出大量研究问题计算机为解决组合数学问题提供一种手段设计算法需要组合数学基础,如算法的运行时间和存储需求估计组合数学应用与社会科学,生物学和信息论等其他领域.1686 年 - 1686 年,莱布尼茨发表了他的第一篇积分学论文深奥的几何与不可分量及无限的分析, 这篇

18、论文初步论述了积分或求积问题与微分或切线问题的互逆关系,文中莱布尼茨创造的微分符号 dx , dy 及积分号 (表示的是“sum“ 的首字母 s 的拉长)第一次出现于印刷出版物上,并一直沿用至今 . 牛顿和莱布尼茨超越前人的贡献主要在于给出了一般无穷小算法,发现了微分和积分之间的互逆关系 ,这一深刻的数学思想已成为人类文明中的瑰宝 .1687 年 - 这一论著被看作是牛顿最成熟的微积分著述。 牛顿最伟大的著作是 1687 年出版的巨著 自然哲学的数学原理 ,在这部著作中,牛顿以几何的语言介绍了“首末比方法”。 牛顿在数学上最卓越的贡献是微积分的创建。 他超越前人的功绩在于他能站在更高的角度,使

19、以往分散的分别对微分、积分的研究加以综合,将自古希腊以来求解问题的各种特殊技巧统一为两类普遍的算法微分和积分,并确立了这两类运算的互逆关系,从而完成了微积分发明中最后的也是最关键的一步。1700 年前后,德国伟大的科学家莱布尼茨提出了二进制算法,这可以说是为现代计算机奠定了算法基础。 同时,通过对中国古老“易经” 的研究,莱布尼茨也在中国的传统文化中印证了二进制的思想。1722 年 - 德国作曲家巴赫于 1722 年发表的谐和音律曲集 (另或译为十二平均律曲集英文: The 48 ) ,有可能就是为十二平均律的键盘乐器所著。1735 年 - 在计算机领域中广泛使用的 RSA 公钥密码算法也正是

20、以欧拉函数为基础的。 在分析领域,是欧拉综合了莱布尼兹的微分与牛顿的流数。 他在 1735 年由于解决了长期悬而未决的贝塞尔问题而获得名声。 在 1735 年,他定义了微分方程中有用的欧拉 -马歇罗尼常数。1759 年 - 引言第一章基本遗传算法货郎担问题(Traveling Salesman Problem ,TSP),也称为巡回旅行商问题,是一个较古的问题。 最早可以追溯到 1759 年 Euler 提出的骑士旅行问题。 TSP 问题是一个典型的、容易描述但是难以处理的 NP 完全问题,同时 TSP 问题也是诸多领域内出现的多种复杂问题的集中概括和简化形式。 目前求解 TSP 问题的主要方

21、法有启发式搜索法、模拟退火算法、遗传算法、Hopfield 神经网络算法、二叉树描述算法。1815 年 - 软件行业的奇人轶事 Ada Lovelace(阿达奥古斯塔 1815-1852) 1815 年生于英国伦敦为巴贝奇分析机拟定了“算法“, 然后写作了一份“程序设计流程图“. 这份珍贵的规划,被人们视为“第一件计算机程序“ 世界上第一位软件工程师 !1828 年 17 岁的法国数学家伽罗华( EGalois 1811-1832) 写出了划时代的论文“关于五次方程的代数解法问题”,指出即使在公式中容许用 n 次方根,并用类似算法求五次或更高次代数方程的根是不可能的文章呈交法兰西科学院后,因辈

22、份太低遭到冷遇,且文稿丢失。1834 年:巴贝奇提出了分析机的概念,他设计的分析机共分为三个部分:堆栈,运算器,控制器。 堆栈是保存数据的齿轮式寄存器。 运算器是对数据进行各种运算的装置。 控制器是对操作顺序进行控制,并对所要处理的数据及输出结果加以选择的装置。1843 年 - 因此,对压缩算法的研究主要基于无损压缩的一类算法展开。 对于数据压缩的研究已有较长的时间,如 1843 年出现的 Morse 电报码是最原始的变长码数据压缩实例。 但是严格意义上的数据压缩应起源于人们对概率的认识。1844 年,当加 拉姆(G.Lame )用斐波纳契序列研究欧几里得算法的效率时,头一次指出了 Fn 与算

23、法之间的密切关系。 这是斐波纳契序列的头一次实际应用。1847 年 - 布林体即是布尔运算, 是英国数学家 George Boolean 于 1847 年制定完成的一套逻辑数学计算方法, 用来表示两个数值相结合的所有结果. 后来人们以他的名字命名这套算法, 称为“Boolean”(布尔运算). 也就是在初学数学中的集合中的并集, 联集和交集都是布尔运算, JewelCAD 中称为布林体 , 但不支持曲线进行布尔体操作.1900 年 - 龙格 -库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法,常用于模拟常微分方程的解的重要的一类隐式或显式迭代法。 这些技术由数学家 C.

24、 Runge 和MW Kutta 于 1900 年左右发明。 由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。 同前几种算法一样,该算法也是构建在数学支持的基础之上的。1917 年 - 讨论流密码 (Stream Ciphers), 就要从一次一密系统说起. 一次一密算法, 是由Major Joseph Mauborgne 和 AT&T 公司的 Gilbert Vernam 在 1917 年设计的一种加密算法3. 主要使用在高度机密的低带宽信道1930 年 - Jarnk 在 1930 年提出的算法,不过他的文章是用捷克语写的,光看标题就看不明白了。 有人也把这个算法就叫做

25、Prim-Jarnik 算法。 Prim 算法简单有效,他从图的一个指定的顶点出发,用 V 表示树顶点集,初始只有那个指定的顶点;E 表示最终最小生成树中有的边的集合,初始是空集。 从 V 中的顶点出发,找到从这个顶点出发的权值最小的边,如果这条边不构成回边,那么选入最小生成树,并将这条边加到 E 集合中,边的另一端结点加入到 V 集合中。1934 年 - 哥德尔在证明不完全性定理时使用了一组函数作为工具,即原始递归函数。 起初人们希望原始递归函数即算法可计算函数的数学定义,后来发现还有非原始递归函数也是算法可计算的:要在原始递归函数基础上推广函数类。 人们在历史上第一次给出算法的数学定义是哥

26、德尔于 1934 年在普林斯顿高等研究所报告的递归函数的定义。1943 年,哥德尔用形式化演算系统的推理规则确定出可计算函数。 在波斯特和图灵的研究工作的基础上,就可以根据它们提出的算法概念的精确化方法来确定可计算函数。 可计算函数的确定依赖于算法的精确化,而算法的精确化又依赖于逻辑系统的形式化和精确化。1951 年 - Booth 算法 Booth 编码是 ADBooth 在 1951 年为了解决由符号乘法运算中复杂的符号修正问题而提出的一种乘数编码方法。 它是目前被广大设计者所普遍采用的乘法器编码算法之一1958 年 - 不久降生的另外一种高级语言是 ALGOL,这个名称就是算法语言的简称

27、,因此可以预料到这种语言具有与 FORTRAN 非常不同的面貌, 因为这种语言在设计初始,就不是计算机制造公司为某种特定机器设计的, 而是纯粹面向描述计算过程的, 也就是所谓面向算法描述的. ALGOL 最早是在 1958 年由德意志联邦共和国应用数学与力学协会提出的. ALGOL 的设计目标显然比 FORTRAN 要来得高远,它希望不仅能够用于人对机器转述计算过程,也希望能够直接用于人与人之间的对于算法的描述.1959 年 - OSPF 路由协议使用 SPF(Shortest Path First)算法计算路由的最佳路径。 该算法是由一位荷兰的计算机科学家 Dijkstra 于 1959 年

28、发现的,所以该算法也称为 Dijkstra算法。 IS-IS 也使用这种算法。 该算法把网络考虑为一组点到点连接的节点,每条链路有一个开销值, 每个节点有它自己的名称及一个包含已知物理拓扑的完整链路信息的数据库。1965 年,库力和图基在计算数学杂志上发表机器计算傅立叶级数的一种算法 ,此文是最早提出 FFT 算法的。 此后关于 DFT 的快速算法称为人们研究的热点课题,也正是FFT 算法的出现,才使得数字信号处理能够应用于实时场合并进一步推动数字信号处理的发展和应用。 大多数的 FFT 算法都是利用(3)式的周期性、共轭对称性、可压缩和扩展性的特点来压缩计算量1965 年 - 一、二分图最大

29、匹配二分图最大匹配的经典匈牙利算法是由 Edmonds 在 1965 年提出的, 算法的核心就是根据一个初始匹配不停的找增广路,直到没有增广路为止。 匈牙利算法的本质实际上和基于增广路特性的最大流算法还是相似的,只需要注意两点: (一)每个 X 节点都最多做一次增广路的起点; (二)如果一个 Y 节点已经匹配了,那么增广路到这儿的时候唯一的路径是走到 Y 节点的匹配点(可以回忆最大流算法中的后向边,这个时候后向边是可以增流的) 。1965 年 - 银行家算法(Bankers Algorithm)银行家算法是避免死结 (Deadlock)的一个著名的算法,是由艾兹格迪杰斯特拉在 1965 年为

30、THE 系统设计的一种避免死结产生的演算法。 它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。1965 年 - LR 算法 LR algorithm 由克努特(Knuth)于 1965 年提出的一种自底向上分析方法。 根据分析栈的内容以及向前看 k 个输入串的符号决定分析动作的方法称为 LR(k)算法。 LR 算法是 k 取不同值时的 LR(k)算法的总称。 靠左推导 left most derivation 推导句子时,总是扩展重写规则右部(RHS)的第一个非终极符号的推导。 最左推导靠右推导 right most derivation 推导句子时,总是扩展重写规则右部(RHS)

31、的最后一个非终极符号的推导。复杂度的概念首先由 Kolmogorov 8 于 1965 年提出来,后由 Lempel 和 Ziv 9 及 Kasper 和 Schuster 10 给出了实现这种复杂性的具体算法。GMD 算法由 Forney 于 1966 年提出。 GMD 译码算法是一种简单优雅的软判决译码算法。对于最小距离为 dmin 的(n, k)线性分组码,若 2v+e=dmin-1,则错误- 删除译码算法可以纠正 v 个错误和 e 个删除的所有组合。 GMD 算法考虑 e=dmin-1 个删除出现在 dmin-1个最不可靠的位置上的所有情况,因为这些位置是最可能出错的位置。 算法描述如

32、下:. 根据接收序列 r 得到硬判决接收序列 z,并对 z 的每一个符号分配一个可靠性值。Viterbi 译码算法(简称 VA 算法)是由 Viterbi 在 1967 年首先提出的,它是一种针对卷积码的最大似然译码算法。 他不是在网格图上依次比较所有的可能路径,而是接受一段,计算、 比较一段,保留最有可能的路径,从而达到整个码序列是一个最大似然序列。 Viterbi 译码算法优点是在码的约束比较小时,它比序列译码算法效率更高、速度更快,译码器也较简单。1969 年 - 1969 年 Berliner 提出了 B*算法,用一个乐观值和一个悲观值来表示评价值。 算法从这点出发,用这两个界来证明哪

33、个节点是最好的。 当根节点的一个孩子的悲观值不比所有其它节点的乐观值差的时候,B*算法就结束了。 算法的搜索控制就是尽可能快的得到终止条件。 B*算法的缺点是它对局面的乐观值和悲观值的估计得可信赖程度,它对这个估值的依赖性太强。1971 年 - 随着计算机的量产,NAG 所研发出来的第一版 Fortran 算法库于 1971 年上市,自此之后 NAG 不断推陈出新,现在的 NAG 算法库已经演进到第 22 版。 NAG 算法库是以 NAG 引擎为核心, 包含所有各种的数学、统计以及数据挖掘等函数,并将其编写成具有简洁、高精确度与高效能的各种计算机语言算法函数,提供制造、金融、大气、航天、工程、

34、医学以及军事等研究人员及编程人员使用。1973 年 5 月 13 日 - 数据加密标准(Data Encryption Standard)是迄今为止使用得最为广泛的加密算法。 1973 年 5 月 13 日美国国家标准局公布了一项公告,征求国家密码标准方案。 IBM 提交了他们研制的一种密码算法,该算法是由早期的 LUCIFER 密码改进而得的。1974 年 8 月 27 日 - 1974 年 8 月 27 日,NBS 开始第二次征集,IBM 提交了算法LUCIFER,该算法由 Feistel 领导的团队研究开发,采用 64 位分组以及 128 位密钥。 IBM 用改版的 Lucifer 算法

35、参加竞争,最后获胜,成为数据加密标准(DataEncryptionStandard,DES) 。1975 年 - 1975 年 Holland 出版了遗传算法历史上的经典著作自然和人工系统中的适应性 ,系统阐述了遗传算法的基本理论和方法,并提出了模式定理(schemata theorem) ,证明在遗传算子选择、交叉和变异的作用下,具有低阶、短定义距以及平均适应度高于群体平均适应度的模式在子代中将以指数级增长,这里的模式是某一类字符串,其某些位置有相似性。1975 年 - 首先简要介绍一下 AC 自动机:Aho-Corasick automation,该算法在 1975 年产生于贝尔实验室,是

36、著名的多模匹配算法之一。1976 年 - 1976 年出现的随机算法拓宽了算法的概念,开拓了算法设计的新领域。 目前研究比较多的随机类有 ZPP、BPP、PP 等。 这些类与其他一些重要的复杂性类之间存在着深刻联系,因而 P =? BPP 在计算复杂性研究中也是吸引人的问题。 软件开发自动化是提高软件生产率,保证软件产品可靠性的途径之一。 算法设计是软件开发中最困难的也是最富创造性的活动, 因而算法设计自动化的研究构成了软件开发自动化研究的核心内容。1977 年 - 由于 RSA 算法发展至今 ,在实现技术上已经相当成熟, 因此本课题算法的实现在许多方面都可以利用己有的技术,这对增强算法的实用

37、性是非常有益的. RSA 算法的历史RSA 算法的历史著名的 RSA 公钥密码体制是在 1977 年由 RLRivest,A.Shamir 和L.Adleman 三人共同提出. RSA 是最具代表性的公钥密码体制. 由于算法完善(既可用于数据加密,又可用于数字签名),安全性良好, 易于实现和理解 ,RSA 已成为一种应用极广的公钥密码体制,也是目前世界上唯一被广泛使用的公钥密码 .1977 年,BrighamYoung 大学的 Helaman Ferguson 和 RodneyForcade 提出了整数关系侦查算法。 这是一个古老的问题:给定组实数,例如说 x(1),x(2),.,x(n),是

38、否存在整数 a(1),a (2),a(n) (不全为零) ,使得. a(1)x(1)+a(2)x(2)+.+a(n)x(n)=0 对于 n=2,历史悠久的欧几里得算法能做这项工作、计算 x(1)/x(2) 的连分数展开中的各项。 如果 x(1)/x( 2)是有理数,展开会终止,在适当展开后就给出了“最小的” 整数 a(1) 和 a(2)。1977 年,Robert Boyer 和 L.Moore 发表了 BM 算法,这种算法在逻辑上相对于之前的算法有了很大的超越,它对要搜索的字符串实施逆序字符比较, 而且有一种找到了不匹配就不需要对整个字符串进行搜索的方法。 脆弱性 vulnerability

39、: 导致破坏系统安全策略的系统安全规程、系统设计、实现、内部控制等方面的弱点。 串道 cross-talk:能量从一信道到另一信道的无意的传输。EM 算法由 Dempster,Laird 和 Rudin 于 1977 年提出用于极大似然估计的迭代计算,同时为缺失数据情况下迭代求取似然函数极大值提供了一个统一的框架。 鉴于 EM 算法所具有的单调增加似然函数值和对于任意初试条件都稳定收敛的良好性质,该算法很快受到广大学者的关注和研究。 但由于 EM 算法收敛速度缓慢的原因很大程度上制约了他在实际中的应用,为了克服这个收敛缓慢的困难随后提出了多种改进。Lawson 算法逐点插入的 Lawson 算

40、法是 Lawson 在 1977 年提出的,该算法思路简单,易于编程实现。 基本原理为:首先建立一个大的三角形或多边形,把所有数据点包围起来,向其中插入一点,该点与包含它的三角形三个顶点相连,形成三个新的三角形,然后逐个对它们进行空外接圆检测,同时用 Lawson 设计的局部优化过程 LOP 进行优化,即通过交换对角线的方法来保证所形成的三角网为 Delaunay 三角网。Tabu Search 是由美国科罗拉多州大学的 Fred Glover 教授在 1977 年左右提出来的,是一个用来跳出局部最优的搜寻方法。 在解决最优问题上,一般区分为两种方式,一种是传统的方法,就是穷举法、贪婪法、分治

41、法、动态规划等等;而另一种方法则是一些启发式搜索算法。 而这两种方法最大的不同点就在于使用传统的方法,我们必须对每一个问题都去设计一套算法,一旦我们遇到一个新的问题,整个算法就得重新设计,所以相当不方便,也缺乏广泛性。1977 年 1 月 15 日 - AES 取代 DES 和 3DES 以增强安全性和效率已是大势所趋3。 其中,DES(Data Encryption Standard)是 1977 年 1 月 15 日美国正式公布实施的数据加密标准,由于密钥长度太短, 导致数据加密的安全性达不到目前人们的要求,所以被 AES所取代。 AES 算法现在在国内外,有很多的研究,并有相应的产品。

42、以下介绍 AES 算法的部分应用: (1)直接将算法用于软件设计中,对存储数据进行加密和保护:朗科密钥U 盘、移动硬盘,内置高强度 AES 算法保护数据。1977 年 7 月 15 日 - IBM 提交了一个候选算法,它是 IBM 内部开发的,名为LUCIFER。 在美国国家安全局(NSA) 的“指导” 下完成了算法评估之后,在 1977 年 7 月15 日,NBS 采纳了 LUCIFER 算法的修正版作为新的数据加密标准。 这导致了联邦信息处理标准(FIPS) 46(以后更新成 FIPS 46-3) 的产生(请参阅参考资料) ,它描述了DES 和当前 DES 3 标准的用法。1979 年,一

43、位名不见经传的苏联数学家哈奇扬,发明了一种新算法来解决线性划问题。 他从理论上证明这种称这椭球法的算法,是一种好算法。 这使得一件拖了八年之久的公案,即线性规划到底有没有好算法的问题,彻底解决了。1982 年 - 模拟退火算法( Simulated Annealing, SA)又称模拟冷却法、概率爬山法等,于 1982 年由 Kirpatrick 提出的另一种启发式的、随机优化算法。 模拟退火算法的基本思想由一个初始的解出发,不断重复产生迭代解,逐步判定、舍弃,最终取得满意解的过程。模拟退火算法不但可以往好的方向发展,也可以往差的方向发展,从而使算法跳出局部最优解,达到全局最优解。1983 年

44、 KirkpatrickS,GelattJ C D 和 Vecchi M P 首先注意到固体退火过程与组合优化问题的相似性,提出了模拟退火算法,并成功应用于求解 TSP11 】 。 随后,几乎所有的启发式算法都以 TSP 作为测试算法性能的平台。 这其中包括禁忌搜索121 、遗传算法I、Hopfield 神经网络算法 【14】和 ACO 算法【15】 。1984 年,Narendra Karmarkar(卡马卡)提出了投影尺度法。 这是第一个在理论上和实际上都表现良好的算法:它的最坏情况仅为多项式时间,且在实际问题中它比单纯形算法有显著的效率提升。 自此之后,很多内点算法被提出来并进行分析。

45、一个常见的内点算法为 Mehrotra predictor-corrector method。 尽管在理论上对它所知甚少,在实际应用中它却表现出色。1985 年 Neal Koblitz 和 VSMiller 把椭圆曲线的研究成果应用到密码学中,分别独立提出在公钥密码系统中使用椭圆曲线的思想。 他们虽没有发明出一种新的公钥密码算法,但他们采用椭圆曲线技术实现了已存在的密码算法如 Diffie-Hellman 算法等,这就是椭圆曲线密码学的开端。 此后,由于椭圆曲线密码系统所具有的安全性高、算法效率好的特点,使得它得到了人们的广泛关注和研究。1986 年,Rumelhart 等人提出了一种前馈型

46、神经计算模型和用手调节该模型神经元联结强度的误差往回传播学习算法,即著名的 BP 网络和 BP 算法,引起学术界极大的反响。 BP 算法解决了感知器存在的问题,使人工神经网络有了强大的计算能力,可实现各种复杂映射,BP 网络目而迅速成为最流行的神经计算模型,并得到极其广泛的应用。1987 年,Mallat 在多尺度分析的基础上提出了小波分解和重构的快速算法,称为 Mallat 算法. 由此算法可以有效的进行图象的分解和重构. Mallat 算法不需要知道小波函数的具体结构, 由一组滤波器的系数即可对信号进行分解和重构。1991 年提出的 DSA 算法也是一种公共密钥算法,在数字签名方面有较大的

47、应用优势。 目前, 国际上在智能 IC 卡上应用得较多的加密解密算法是 DES 算法、RSA 算法及 DSA 算法。1996 年 Zhan 和 Noon 使用实际交通网络测试了 17 种算法中的 15 种,测试结果表明计算一点到所有其它点的最短路径最快的算法是 Dijkstra 算法。2003 年 11 月 15 日 - 这些查询条件的集合就是 SEO 一族所收集并称之为的“商业词名单”。 这一效果无意中却提供了一个强有力的证据,表明 Google 确是采用了 Hilltop 算法。 2003 年 11 月 15 号,Google 基于新算法的更新之后, 某分析家就指出:在进行查询时,若对某一查询条件加上一些“不包含” 的无意义字符,如“car rental ghjkl”,则 Google 将会显示以往(算法变化前)的搜索结果,而绕过所谓的“商业词”过滤名单。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报