然算术不患多学,见简即用,见繁即变,不胶一法,乃为通术也。
北宋·沈括《梦溪笔谈》
面对着生活中的问题,每个人都会从自己的视角来思考,会得到不同的答案。如同算术一样,当遇到简便、合适的方法时就要使用;遇到繁杂、不合适的方法就寻求变化。不固执地使用某一种方法,这就是一般规律。这种非常有用的规律就是一种在生活中的算法,是一种选择方法的原则。
算法从某种角度来看,也是原理、规律、原则与法则。
1.1什么是生活算法?
“算法”一词的历史很长,最早出自中国汉代的数学名著《周髀算经》中。它的英文名字 Algorithm 来自于9世纪的波斯数学家穆罕穆德·宾·穆沙·阿尔·花剌子密(Muhammad bin Musa al-Khuwarazmi,又译花剌子模)的一本书名。原来为“algorism”意思是阿拉伯数字的运算法则,到了18世纪才逐渐演变成为"algorithm"。
算法在数学中,指的是计算的方法、运算的法则。例如,要计算18+19得多少?有许多种算法:可以先算8+9,然后再加上20;也可以先算19+8,然后再加上10;还可以先用18+2,然后再加上17……。学习数学的过程中,掌握的算法越多,数学思维就会越清晰。
除了在数学中,计算机的程序设计中也常提到“算法”。程序设计中的“算法”是指利用计算机在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地说,就是计算机解题的过程,是解决问题的方法与步骤。在这个过程里,无论是形成解题思路还是编写程序,都是在实施算法。世界上第一位程序员Ada Byron(艾达·拜伦)早在1842年为巴贝奇分析机编写求解伯努利方程的程序时就出现了算法的问题。
除了在数学与编程中比较抽象、有严格的要求外,其实算法也存在于我们生活中,即使是一些小事,其中也有着很多种算法。
例:生活中问题-老李家住东直门,周六要去王府井书店买书。刚要出门,爱人又要他到附近的菜店买点菜回家,好做中午饭。听话的老李会怎么办呢?
图(略) 买书与买菜
生活中的事情,往往会有很多不同的解决方法。老李可以:
〖方案一〗:从家出来,直奔附近的菜店买菜,然后提着菜直奔书店买书。之后拿着书与菜回家。——评述:真逗,怎么会这样?提着装满菜的菜篮子进书店,这种人真是少见呀!
〖方案二〗:从家先到书店买书,然后提着书到家附近的菜店买了菜再回家。——评述:这可能是一种省事的方案,书毕竟便于携带一些。不过,都是这样吗?会不会带着沉重的百科全书,然后与菜店的小贩们讨价还价?
〖方案三〗:先去附近的菜店买菜。送回家后再去书店买书。——评述:这是一种与家人协作的方法。家人在做饭,老李去买书、买菜。先把买的菜送回家,再到书店自由自在的挑书。等回家了,饭也做好了。不过,这种方法可是要多走好些路,多花时间的呀。
……
生活中会遇到了很多类似的问题,面对问题每个人都会有很多种解决的方法,在不同方法中每个人都会有着自己最中意的一种,在不同的时间与环境中最合适的方法可能会不一样。我们都在这样类似的问题,不同的方法中慢慢长大的,直到自己认为这些问题已经不是问题了~这时,我们是否真正地知道我们是如何找到这些方法的呢?
我们除了关心这些解决问题的方法与步骤外,是否更需要知道那些方法与步骤是如何产生的呢?我们根据什么从各种方法中找到了自己认为最适当的那一个呢?
这种产生与选择解决问题方法的方法就是一种算法,生活中的算法,面向生活问题解决的计算方法。生活算法会在应用技术解决相对复杂问题的过程中会表现的更加典型。生活算法与数学中的算法、程序设计中的算法有很大程度上是相似的,但也有着许多不同。
生活算法与程序设计中的算法、数学中的算法不太一样的地方首先是面对的对象不太相同。编程中的算法首先考虑的对象是计算机,是程序;数学算法的首先面对的是数学问题,而生活算法直接就面向了生活中的大大小小的问题。既然程序设计与数学最终也是指向生活问题,但是没有生活算法来的那么直接。其次生活算法没有数学算法、程序设计算法中那么严格的语法要求,数学中的计算方法、程序设计的算法命令集都有严格的规定,而生活算法则可能会用较宽泛的方式与方法来表达算法。
生活算法与程序设计中的算法、数学中的算法也有很多地方是相似的,都体现出共同的一个方向——算法思维。目标都是问题解决。
生活算法与程序设计算法类似,它也可以分成不同阶段:推理实现的算法——在解决问题前的规划和操作实现的算法-解决问题的实践活动-算法的反思与优化。
生活算法需要预先设计出解决问题的方案;需要对各种不同方案进行筛选;需要根据现有的条件对解决的方案进行分析与优化……。也许生活中不存在最优算法,但在诸多方案中有着一种或多种更好的。这就是在进行着生活算法设计与优化的过程。在“买菜与买书”中,老李有了目标就可以提出不同的解决方法与步骤,可以根据省时或者省力等不同的标准,在不同的解决方案中选择自己最适合的一种。这,就是在规划算法。
生活中的“简单”问题往往很“复杂”。许多简单的事情,在不同的环境中会有不同的要求,往往会有更多的限制条件。条件不同,即使相同的事情也会有着不同的解决方法。越接近生活实际,限制的条件会越多,就会越难决择。这往往需要我们列举的各种不同的解决方法,根据具体情况,通过列举、对比、分析最终找出最恰当的。这就是在应用着生活算法。
生活中算法广泛地存在于我们身边。静下心来仔细分析生活,可以发现很多问题以及与之对应的算法。
【系列内容,随时更改,暂勿学术引用】

〖生活算法系列1〗—什么是生活算法?