1 BASIC CONCEPT
1.1 algorithm
algorithm 是所有计算机编程的本质,我们要仔仔细细的追溯一下这个概念是怎么来的。
algorithm 这个词,非常有意思,乍一看,好像是要写 logarithm,写错了,写成了 algorithm 。
1957年,Webster’s New World Dictionary 出现了algorithm。
经过我们的调查,其大概是由"algorism" 演变出来的,他的意思是:the process of doing arithmetic using Arabic numbers(利用阿拉伯数字做计算的过程).
直到 1957 年,这个词才出现在韦氏新世界词典中; 我们只能找到具有古老含义的旧形式“algorism”,即使用阿拉伯数字进行算术运算的过程。 在中世纪,算盘学家使用算盘进行计算,而算法学家则使用算法计算。 到文艺复兴时期,这个词的起源已成疑问,早期的语言学家试图通过组合 algiros [痛苦]+arithmos [数字] 来猜测它的派生; 其他人说不是,这个词来自“卡斯蒂利亚国王阿尔戈”。
最后,数学史学家找到了算法这个词的真正起源:它来自一位著名的波斯语教科书作者 Abu 'Abd Allah Muhammad ibn Musa al-Khwarizmi(约 825 年)的名字——字面意思是“阿卜杜拉之父穆罕默德 ,摩西的儿子,土生土长的花剌子模。”
中亚的咸海曾被称为花拉子模湖,而花拉子模地区位于该海以南的阿姆河流域。 Al-Khwarizmi 撰写了著名的阿拉伯语文本 Kitab al-jabr wa’l-muqabala(“恢复和等同的规则”); 另一个词“代数”源于那本书的书名,这是对线性和二次方程的解的系统研究。 [有关 al-Khwarizmi 的生活和工作的注释,请参阅 H. Zemanek, Lecture Notes in Computer Science 122 (1981), 1–81。]
逐渐地,算法的形式和意义都被破坏了; 正如《牛津英语词典》所解释的那样,这个词“经历了许多伪词源学的变态,包括最近的一种算法,在这种算法中,它被习以为常地混淆了”,这个词与算术这个词的希腊词根相混淆。 这种从“algorism”到“algorithm”的变化,考虑到人们已经忘记了这个词的原始来源,就不难理解了。 早期的德国数学词典 Vollständiges mathematisches Lexicon(莱比锡:1747 年)对 Algorithmus 一词给出了以下定义:“在这个名称下,结合了四种算术计算的概念,即加法、乘法、减法和除法。 ” 当时,拉丁语短语 algorithmus infinitesimalis 用于表示“莱布尼茨发明的无限小量的计算方法”。
到 1950 年,算法这个词最常与欧几里德算法联系在一起,欧几里德算法是一种寻找两个数字的最大公约数的过程,出现在欧几里得几何原本(第 7 册,命题 1 和 2)中。 在这里展示欧几里得算法将很有启发意义: