我在写1.1节的时候本来是要写这个的,但是突然就忘了……就作为一节来写吧。
顺便说一下,1946年的今天,世界上第一台通用电脑——电子数值积分计算机在美国宾夕法尼亚大学正式启用,就是那个ENIAC。
别只想着情人节,要不是几十年来科技的进步,你们才没机会在朋友圈、空间什么的大秀恩爱。
“算法”一词的来历
中文的“算法”一词至少在唐代就出现了,在此之前也有“术”“算术”等词,最早出现在《周髀算经》《九章算术》。而且,“算法”一词的含义从古到今几乎没有发生变化。
英文的“算法”(algorithm)一词来源于9世纪波斯数学家花拉子米(al-Khwārizmī,780?~850?)——就是那个解决一次方程及一元二次方程的方法的人。花拉子米的拉丁文译名是“Algoritmi”。英文对“算法”原译为“algorism”,意思是花拉子米的运算法则,在18世纪演变为“algorithm”。这个词出现于12世纪,指的是用阿拉伯数字进行算术运算的过程。
历史上的一些著名算法
对于算筹、算盘的操作的方法,我不知道是否属于算法。
约公元前300年记载于《几何原本》中的辗转相除法(欧几里得算法)被人们认为是史上第一个算法,可以求两数的最大公约数。直到今天,它还有很大的用途。
《九章算术》给出了四则运算、最大公约数、最小公倍数、开平方根、开立方根、求素数的埃拉托斯特尼筛法,线性方程组求解的算法。
三国时代的刘徽给出求圆周率的算法:刘徽割圆术,比阿基米德割圆术得出的结果更加精确。祖冲之使用该方法将圆周率的准确值计算到了3.1415926和3.1415927之间,保持了世界最准确圆周率达900年之久。
唐代以来,历代更有许多专门论述“算法”的专著。宋代的秦九韶提出的秦九韶算法,直到今天仍是多项式求值比较先进的算法。
在9世纪的阿拉伯世界,花拉子米写成《代数学》,其对解决一次方程及一元二次方程的方法催生了代数——大家熟知的求多元(尤其是二元)一次方程和一元二次方程的解法就来源于此。700多年后,三次方程、四次方程的求根公式才被得出。
牛顿于1671年提出的牛顿法,相比于二分法可以更快速地求函数的根或者是函数的极值。
17世纪之后算法的发展
17世纪起,早期的机械计算机出现了。从加法到傅里叶变换,它们的功能越来越强大。
工业革命带来了纺织业的变革,出现了可以自动织出带花纹的布的织布机,它们使用打孔卡输入指令。这种设计也被英国数学家查尔斯·巴贝奇设计的分析机使用。
拜伦的女儿爱达·勒芙蕾丝(Ada Byron;Ada, Countess of Lovelace)于1842年为这个想象中的机器编写求解伯努利微分方程的程序,因此爱达·勒芙蕾丝被大多数人认为是世界上第一位程序员。但是,这个机器因为种种原因,直到巴贝奇去世也没有被真正地制造出来。
后来的数学家对算法的贡献大多在于数理逻辑的构建上,在此我因为知识缺乏,看不懂资料,不便讲述。感兴趣的话可以看一下参考资料。
20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要的作用。
在此之后,算法更偏向于计算机科学领域,各种解决不同问题的算法也层出不穷,涉及排序、统计、线性规划、搜索、压缩等方面。
到了现在,随着人工智能和机器学习的发展,涉及到神经网络的算法变得越发重要。
拓展阅读
The Best of the 20th Century: Editors Name Top 10 Algorithms
http://www.uta.edu/faculty/rcli/TopTen/topten.pdf
参考资料
- 普通高中课程标准实验教科书(必修) 数学(A版) 必修3. 人民教育出版社
- 算法 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E7%AE%97%E6%B3%95 - 电子数值积分计算机 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E9%9B%BB%E5%AD%90%E6%95%B8%E5%80%BC%E7%A9%8D%E5%88%86%E8%A8%88%E7%AE%97%E6%A9%9F - 花拉子米 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E8%8A%B1%E6%8B%89%E5%AD%90%E7%B1%B3 - 九章算术 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E4%B9%9D%E7%AB%A0%E7%AE%97%E6%9C%AF - 割圆术 (刘徽) - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E5%89%B2%E5%9C%86%E6%9C%AF_(%E5%88%98%E5%BE%BD) - 牛顿法 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E7%89%9B%E9%A1%BF%E6%B3%95 - Pascal's calculator - Wikipedia
https://en.wikipedia.org/wiki/Pascal%27s_calculator - 分析机 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E5%88%86%E6%9E%90%E6%A9%9F - 埃达·洛夫莱斯 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E6%84%9B%E9%81%94%C2%B7%E5%8B%92%E8%8A%99%E8%95%BE%E7%B5%B2 - 图灵机 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E6%9C%BA