算法理论是一个关于人的思维活动如何进行的理论,它借用了计算机科学的术语和原理来进行构造。由于它是为经济学与社会科学而“量身定制”的一个假说,故又称为“算法框架理论”。基于这个理论,我们很快将会引申出大量重要的社会科学命题与推论,并由此逐步建立起一个关于“社会科学基本原理与方法论”的体系。把计算机与人脑进行类比是不同学科领域的众多学者们所采用的一种基本观点和研究方法;但是,根据笔者掌握的资料,算法理论与所有已有的理论和方法均不相同。
为了介绍这一理论,需要从计算机原理讲起。
自古以来,人类就在使用一些简单的人造装置(例如算盘)来进行算术运算;这些装置可通称为“计算器”。导致计算器发展成为“计算机”的是这样一种思想:除算术运算(加、减、乘、除等)之外,人类日常进行的许多(可能并非全部)逻辑思维活动(尤其是演绎推理),都可以表示为与算术计算式相似的形式,并进而可以在类似的装置上进行“演算”。这种思想体现在“数理逻辑”这门数学分支学科之中。数理逻辑学引起了这样一种后果,即我们可以把算术运算与逻辑运算统一用“计算”这个词语来概括,而计算就是指特定的计算种类与有关数据的结合。在计算机科学中,该“特定的计算种类”另有一个名称,叫做“指令”。“指令”原来是指计算机的使用者要求计算机去完成的具体计算任务的种类,后来演变成了计算机可以接受的任务、从而从事的“工作”的具体种类。简言之,计算=指令+数据。这就是计算机科学所告诉我们的最为重要的东西。
一台成品的计算机,其内部包含一个由有限个(从数十个到数百个不等)指令所组成的指令系统;计算机所进行的任何作业实质上都可以分解为这些指令分别交替加工特定数据的活动。也就是说,计算机如今在无数个实际应用中所演示的那些“智力”,实际上都是通过“指令+数据”的方式实现的。指令系统一经成型,在计算机产品的整个使用周期之内不发生变更。“数据”则是“信息”的另一个说法。计算器只能加工数量型的数据;计算机则可以加工字符、图像、声音等“数据”。由于客观世界是丰富多彩的,信息的“数值”和类型都很丰富。有的指令可以加工任何信息,有的指令则只能加工特定类型的信息。每种指令都是按照特定的、固定的格式或方式来加工数据的。在指令格式的特定位置通常留有空格,进行计算时,把要加工的数据填入,经过运算得出结果。指令格式中还有专门的空格用来填入下一条指令的地址,从而使得下一条指令可以找到,计算于是可以连续进行(参阅图表2)。
图表2:一条典型的四地址指令的一般格式[26]
指令与信息的这种结合方式,使我们想到了康德哲学,即人类进行思考就是用其头脑中特定的、一律的、先天就有的思维工具加工来自外界的“原材料”。人之所以能够认识世界,做出决定,是因为人先天地具有智力。那么,这种“智力”是什么?它是事先储存于头脑中的现成的知识(柏拉图主义)吗?是对现实问题的一个个现成的答案吗?不是的。最为可信的解释就是,“智力”是指类似于“指令”这样的东西。它不是知识,但它可以通过加工来自外部的原材料(信息)而生产知识。换言之,“指令”显然可以作为前文所提出的“思维工具”来予以看待。鉴于“信息”或“数据”的概念是相当直白的,至此我们的假说也就可以落实了,即我们可以把人脑的思维活动视作与计算机相似,思考活动就是以类似于“指令+信息”的方式来进行的。
计算机的具体结构与作业方式叫做“冯·诺依曼架构”(见图表3),这一名称是为了纪念计算机科学思想的集大成者和主要的阐释者冯·诺依曼先生(他同时也是博弈论的奠基人)。“冯·诺依曼架构”的主要内容如下:信息由“输入设备”一个个地输入计算机,在“运算器”中与特定的指令“相遇”,即进行计算,其结果暂时存入“存储器”中。存储器中(作为以前运算的结果)预先存有大量的数据、参数和程式(或者叫“程序”)[27]。程式是事先编写好的、按一定顺序排列的指令,它也以“数据”的形态进行存储。因而,当它被调用和读取时,就会“自动地”指示下一步执行哪个指令以及加工什么样的信息(这叫做“存储程序原理”),于是计算机就会连续地运转起来,信息、数据以及任何暂时性的计算结果就会按照时间序列连续地、有选择地、依次地、往复地调入运算器中进行计算(这称为“串行作业方法”),以便完成特定的任务。“控制器”负责协调整个作业流程。最后的计算结果通过“输出设备”提供给用户。(www.xing528.com)
图表3:冯·诺依曼架构[28]
计算机的作业就像一家工厂。显然,“冯·诺依曼架构”就是一种迂回生产方法,这里有“时间”的概念,有“计算速度”的概念,有“存储”的问题,也有“最小单位的计算活动”。总之,基于前文的所有论述,计算机本身就可以视作一个理想的经济学与社会科学理论模型。
如今,任何一台普通的计算机,其计算速度都在每秒数亿次的数量级上。然而,有限的指令数目与海量的数据相结合,发生了“组合爆炸”,也即可以进行的计算作业的数目在理论上常常近乎无穷无尽(参阅图表4)。为了节约资源和作业时间,计算的效率问题就变得很重要了。为了解决特定的问题,如何利用有限的指令和数据高效率地得到答案?这样的方法称为“算法”。计算机科学家们已经认识到,经济因素是造成“算法”成为一个问题的基本原因。例如,某计算机原理教科书开篇就问道:“假如计算机无限快,并且计算机存储器是免费的,那么你还有任何理由来研究算法吗?”[29]
本章对于计算机原理的集中介绍到此为止。介绍如此简短,是因为笔者认为只要了解了这些知识,就足以阅读和理解本书。如果读者有兴趣继续做进一步阅读,可以参阅任何有关计算机原理的教科书。
图表4:组合爆炸
思维活动是在信息与指令之间建立排列组合的活动,它引起“组合爆炸”现象。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。