首页 理论教育 算法:指令排列的原则和技巧

算法:指令排列的原则和技巧

时间:2023-05-16 理论教育 版权反馈
【摘要】:指令清单确定之后,“算法”就是指指令的排列方式。“算法”可以是比较确定的,也可以是相当模糊和不确定的,仅指指令排列的某些原则或技巧。我们把演绎法称作“主流算法”,而把其他一切算法都统称为“另类算法”。根据“算法”的定义可知,算法的种类在理论上必定是无穷无尽的;每一次成功的计算,也许都可以归纳为某种算法。以上不仅是对算法多样性应有的态度,也是对于一切人类思想成果应有的态度。

算法:指令排列的原则和技巧

第四个要做的准备,是关于另类算法。为此,首先要从算法讲起。算法是与指令相对的、并且建立在指令基础上的概念。指令清单确定之后,“算法”就是指指令的排列方式。把信息填入指令表达式的适当位置上,就得到了一条完整的指令(这种指令有时也称为“语句”)。算法就是指这种(包含着信息的)指令如何来进行选取、以及所选取的指令以什么样的次序进行排列。这句话的同义语是,它也可以是指信息如何来进行选取、以及所选取的信息以什么样的次序进行排列,以便进入运算之中。“算法”可以是比较确定的,也可以是相当模糊和不确定的,仅指指令排列的某些原则或技巧。从这个意义上说,算法是智慧的核心体现,是我们给“智慧”所起的另一个名称。传统的智力、智慧、思想、知识、智识这些词语,其各自的侧重点有所差异,因而在算法框架中的具体对应物有所区别,而算法的术语则可以使之变得精确起来。

遵照科学界和经济学界的传统,演绎法是受到特别的重视的,这是因为,运用演绎法得出的结论,一般被视作充分可靠的。这种观念我们无须挑战,因为,按照康德式的立场,“充分可靠”并不意味着演绎法对于达到我们人类的目的来说是完美的和充分的,而只是意味着我们人类只能这样来思考,这是我们人类在自己的能力范围内能够采取的最为有力的计算手段了。我们把演绎法称作“主流算法”,而把其他一切算法都统称为“另类算法”。需要声明一下,这只是出于对传统的尊重,以便大家理解和运用,而不是为了搞优待或歧视。这种传统的确需要改变,各种指令与算法都要平等看待,一视同仁。所以,我们暂且这样来用词的目的,其实是为了最终消解这个传统,而不是巩固这个传统。

根据“算法”的定义可知,算法的种类在理论上必定是无穷无尽的;每一次成功的计算,也许都可以归纳为某种算法。然而,另一方面,算法又有优劣之分,常用与不常用之分,典型与非典型之分,公认与个性化之分,等等。如同计算机中的情形一样,关于算法的汇总、整理和归类,是一项经验性的工作;所总结出来的种种算法,也许不足以用来支持特定程式的构造与特定问题的解决,但可以提供启发和帮助。在《算法》第4.3 节,我们比较详细地列举和分析了诸如归纳、实验、试验、假说、冒险、演化、简化、近似、模糊、随机、联想、顿悟、直觉、模仿、学习、知识积累、约定、欺诈、说服、强制、斗争等“另类算法”;我们还提出了“积极算法”“社会性算法”这些概念。这些算法既可以单独使用,也可以彼此结合运用;既可以用于为演绎法制作前提,又可以用于加工演绎的结果。

对于具体算法的微观分析,可以帮助我们理解思维的微观过程。计算机科学揭示了一条有用的原理,即微观的思维单位可以是非常微小的,鼠标在屏幕上动一下,可能就会引起上千次计算。人工的算法进路也许很难达到如此精细的程度,但是,我们可以认为,任何可表达、可分析的计算过程,组成它的微观单位都要更为微小,至少不会比它更宏观。例如,一个归纳过程,可能是相当复杂的,这是因为对象中常常包含着很多因素;每个人所觉察到或者所重视的因素不同,归纳的结论也就不一样,而在通常的逻辑思维训练中,对象具有多因素的特点却被忽略掉了。又如,抽签似乎是简单的,可是,所抽的签怎么样来设定,往往是很不确定的。签的内容与个数的设定不同,结果也就迥异。(www.xing528.com)

为什么会有某种算法供我们选择?我们为什么会有多种多样的研究方法?例如,在演绎法之外,为什么还可以进行归纳?在理论分析之外,为什么还可以求诸经验?为什么常用的算法(或研究方法)往往就是那么几种,不易变更?为什么它们之间难以相互替代?它们之间的确切关系是什么?关于算法,我们可以提出诸如此类的问题。对算法的微观分析可以帮助我们理解每一种算法是怎么得来的。要解释算法的产生,就要解释使得特定算法得以能行的各种基础元素、它们之间的组合方式以及实现过程。除了诉诸指令系统之外,还要诉诸包括五官、四肢在内的各器官的功能。例如,归纳法和经验方法的采用,就源于人有观察能力;所以,要解释归纳法,就要解释人为什么会有观察能力。然而,需要强调的是,这是我们无力做到的;这就好比我们虽然假定个人具有普遍的指令系统,我们却不谋求去解释个人为什么会具有这个系统。从这个意义上说,我们仅仅是在进行一种“理解”,而不是在进行严格的“解释”。我们无法严格地证明,人所具有的这些基本能力,为什么一定能够在不迟于我们观察的时刻产生了这些算法。算法本身是历史的;当一些算法产生或者被明确地提炼出来的时候,这些基本能力早就在那里了。这些基本能力可能也会在未来造就新的算法。对于特定的算法,有些人熟练地掌握了,有些人则未必。故此,对于“为什么会有某种算法”的问题,还需要这样来回答:因为我“看见”它存在于人们的思维活动中,这是一种事实。另一方面,人的基本能力的有限性也导致了人们所运用的算法的普遍性和同质性。算法的创新和差异化都是不那么容易实现的。这是我们对算法的另一面所做出的理解。

以上不仅是对算法多样性应有的态度,也是对于一切人类思想成果应有的态度。我们的解释总是有限的,即使最为“科学”的解释也是如此。以算法的眼光来看,任何推理与论证的过程都不可能是完全严格的。这是因为,推理,作为一种行为,虽然可以把命题之间的逻辑关系编织得很严密,但却不可能完美地回答这样的问题,即你为什么要把“这两个”命题相连而不是把另外两个命题相连?为什么要把计算资源分配在这方面?——尤其是在你明知思想体系充斥着矛盾与不完善的情况下。

算法的产生只是一个预备。算法逻辑的核心则是解释这些算法为什么要被采用,也即思维如何会由演绎法弯曲到另类算法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈