« 十年003:技术-问题解决-算法十年之005:生活中的算法 »

十年之004:算法的前因后果

 

然算术不患多学,见简即用,见繁即变,不胶一法,乃为通术也。
北宋·沈括《梦溪笔谈》
 
    技术-问题解决-算法,技术的价值与作用是问题解决,而问题解决的关键在于算法。“算法”一说多出于数学、计算机科学。近几十年来,随着计算机科学的发展,越来越多的人提及算法。
     “算法”一词首先是从数学界提出的,历史很长。中文的“算法”最早出自中国汉代的数学名著《周髀算经》中。《周髀算经》卷上即有:“数之法,出于圆方。圆出于方,方出于矩。矩出于九九八十一。”
    算法的英文是 Algorithm, 来自于9世纪波斯数学家穆罕穆德·宾·穆沙·阿尔·花剌子密(Muhammad bin Musa al-Khuwarazmi,又译花剌子模)一本著作的名称。原来为“algorism”,意思是阿拉伯数字的运算法则,在18世纪逐渐演变成为"algorithm"。算法随着阿拉伯数字传播到了世界。
    在数学中,算法一般是指计算的方法、运算的法则。例如,要计算18+19得多少?有许多种算法的。可以先算8+9,然后再加上20;也可以先算19+8,然后再加上10;还可以先用18+2,然后再加上17……。在数学的学习中,掌握的算法越多,数学思维就会越清晰。
    计算机科学也经常提到“算法”一词。Ada Byron(艾达·拜伦)早在1842年为巴贝奇分析机编写求解解伯努利方程的程序时就提出了关于算法的问题。世界上公认她是第一位程序员。
    程序设计中的“算法”是指利用计算机在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地说,就是计算机解题的过程,是解决问题的方法与步骤。在这个过程里,无论是形成解题思路还是编写程序,都是在实施算法。所以前者是推理实现的算法,后者是操作实现的算法。所以前者是推理实现的算法,后者是操作实现的算法。
    算法与数学中的存在性证明不同。存在性证明通常只能间接指出对象的存在性,却不能具体构造出所需对象,只是证明了“没有被看到的”的存在,这是一种理性的承认,比如关于一元高次方程的根的存在性证明,欧几里得证明“素数个数无限”,等等。希尔伯特曾经在给学生讲到存在性证明时,举过一个例子:“这个班里一定存在一个学生,他的头发数最少,可是我们不可能知道他是谁”。现代数学中这种证明是很多的。
    而算法的体系相信“眼见为实”。 在数学中,完成每一件工作,例如,计算一个函数值,求解一个方程,证明一个结果,等等,我们都需要有一个清晰的思路,一步一步地去完成,这就是算法的思想,程序化的思想。
    算法思想就是指按照一定的步骤,一步一步去解决某个问题的程序化思想。正是其步骤性、程序性使得能够在计算机上得以运算。计算机解决任何问题都要依赖于算法,只有将解决问题的过程分解为若干明确的步骤,即算法,并用计算机能够接受的“语言”准确的描述出来,计算机才能够解决问题。因此,算法是计算机科学的重要基础,没有算法也就没有计算机。
    尤其在计算机普及的时代,程序化越来越为人们普遍接受,“算法”变得越来越重要了。人们发现虽然以前没有直接用“算法”一词,但一直在生活中一直利用算法的思想。
    面对着生活中的问题,每个人从自己的视角来思考,得到不同的答案。如同算术一样,当遇到简便、合适的方法时就使用;遇到繁杂、不合适的方法就寻求变化,不固执地使用某一种方法,这就是一般规律。这种一般的规律就是一种生活中的算法。也是一种选择方法的原则:遇到繁杂而不方便的方法就需要寻求变化,找到一种简便、恰当的方法。
  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们

日历

最新评论

最近发表

Powered By Z-Blog 1.7 Laputa Build 70216

Copyright 2003-2007 芸心芹意 bean.being.org.cn Some Rights Reserved.