2016年12月4日星期日

社会演化算法与自发秩序

社会演化算法与自发秩序
/Tong Chern

自由主义的一个基本洞察是,社会秩序非源于任何人有意图的设计,而是从许多个体的自由选择中自发涌现出来的,称之为自发秩序。社会秩序是从这许许多多个体的个人生活之中,从许许多多个体时时刻刻分布式进行的自由选择中自发涌现出来的。这就是老子首先发现的自发秩序原理,老子称之为自化。而亚当.斯密对市场经济秩序的深刻论述,也就是所谓的看不见的手,则是自发秩序原理在经济学中的精确表述。

哈耶克曾经进一步论证社会自发秩序总体而言无法人为设计,因为自发秩序的产生涉及到了巨量的分散的知识,其总量超出任何人的知识范围,因此设计自发秩序是不可能的。换言之,哈耶克说,因为全知是不可能的,因此设计社会自发秩序是不可能的。我们这里将把哈耶克的论证再推进一步,我们把社会的演化看作一种分布式运算过程,这个运算过程遵循一种特殊的算法,我们称之为社会演化算法,而社会秩序则是这个社会运算过程的自然结果。我们将论证社会演化算法是无法被有效模拟的,也就是说脱离了人类社会本身,任何人和任何机器都无法有效地实现社会演化算法,因此我们无法通过模拟社会的演化来设计社会秩序。并且我们将进一步论证,社会演化算法是产生社会秩序的最优算法,它节省了巨大的运算量,如果不用社会演化算法来设计社会秩序则运算量将会过于巨大,这个过于巨大的运算量超出了任何人和任何机器的能力范围(比如对于一个10亿人的社会,这个运算量典型的会在10^{10亿}量级)!这样,我们就证明了设计社会自发秩序超出了任何人和任何机器的能力范围,换言之,我们论证说,因为全能是不可能的,因此设计社会秩序总体上是不可能的。通过这个论证,我们也进一步澄清了社会秩序的自发演进机制,解释了为什么社会这台机器可以承担起演化出社会秩序的重任而不会崩溃。

(一)自发秩序是大量个体选择之间的大规模自发配合

一种社会自发秩序的存在并不意味着秩序中的每个人都一样地行为,而是意味着,人与人之间自发地相互配合。或者更一般地说,自发秩序不是每个人都作出同样的选择,而是不同人的选择之间可以自发地相互配合。实际上,也正是因为这种大规模的人与人之间的相互配合,才使得一个宏观秩序的产生成为可能。比如说,我们的经济秩序就是一种自发秩序。亚当·斯密认为,经济秩序可以作为许多各自谋求自身利益的人的行动的非有意识的结果而产生,是在每个人追求自身的利益而同其他人相互配合相互合作的时候,自然而然地产生出来的复杂秩序。亚当·斯密称之为看不见的手的作用。再以人类的自然语言为例。弗里德曼在《自由选择》一书中说,语言有一个不断发展变化的复杂结构,但却秩序井然,丝毫不乱,这并非有任何中央机关在计划它。没有人决定什么词该用到语言里,文法应该是什么样,哪些词应该是形容词,哪些词应该是名词。所有的一切都是自发的,人的自然语言是自发秩序的一个最好的例子。人类的自然语言是怎么发展起来的?对于这个问题我们在《人类的语言及其演化》一文中做过详细的论述,简言之,语言的发展同经济秩序通过市场而发展的过程很相象,也是由于许许多多的个体之间大规模的自愿的相互配合而自然演化出来的。实际上,不光经济和语言,一个社会的价值准则、它的文化、它的社会习俗,所有这些秩序都是通过许许多多的社会个体的自由选择自发地相互配合而发展起来的。

(二)社会运算与社会运算量

那么这种大规模的相互配合可以人为地设计吗?社会秩序可以不用自发而是通过人为的设计而产生吗?回答是,一般来说,不可以!因为没有人是全知的,所以不可以,这是哈耶克的经典分析,但其实,即使全知是可能的,设计社会秩序一般来说也不可能。

要看清楚这一点,我们需要从运算的角度来看待我们的社会,也就是说,要把个体的自由选择,个体与个体之间的相互作用和配合,以及社会的演化,通通看成一种运算过程,我们将这种运算称之为社会运算,社会运算的最终结果是产生了宏观的社会秩序。总之,我们将把社会看成一个庞大的分布式的计算系统,社会个体的一切社会活动都是并行的运算,整个社会的演化则是这整个分布式系统所执行的运算。比如在自由市场中,每个个体单独进行的运算(经济决策)通过价格机制在中间传递信息,就形成了一个分布式的社会运算系统。市价就是这个系统自发产生的秩序之一,市价是由许许多多的微观上进行的配合着的社会运算(买和卖)产生的,同时这个宏观的秩序又协调着市场中每一个个体微观的社会运算(微观行为)。这是一个无时无刻不在进行的巨大的分布式运算,其运算的总量是很大的,但却并非过于巨大,而是在自由市场这台巨大的机器可以承担的范围之内。

产生一种社会秩序所需要的总的社会运算量是多少呢?当然要谈论运算量,就离不开运算模型,以及具体的算法。下面我想先通过一个示意性的估计来说明这个问题。

让我们考虑一个10亿人口的社会,考虑此社会在某种社会秩序下某个时刻的社会状态,或者说此时刻的社会格局,其中每个个体都作出了各自的选择,并且这些个体选择之间并不是相同而是相互配合着的。因为我们没法抽象地谈产生某种社会秩序,因此就让我们来简单地估算一下产生这种有序的社会格局所需要的社会运算量。

假设对于这个10亿人社会的某种秩序的形成而言每个人的行为有n种选择,或者说每个人有n个可能的状态,总共是10亿人,那么社会的可能状态就有n^{10亿}个,也即是说这个社会有n^{10亿}个不同的社会格局。显然,在社会的这么些可能格局中,只有很少量是称得上有秩序的(其中不同人的选择之间形成了某种恰当的配合),或者说是形成了这种社会秩序的。因此,在计算上,产生社会秩序的问题就变成了一个在社会的所有可能格局所成的搜索空间中找到这些有秩序格局的问题,只要能搜索到这些少量的有秩序社会格局,发现了它们,我们就知道了要产生的是什么,因此就可以产生它们。

总之,在计算上,产生某种社会秩序是一个在搜索空间中搜索到某个(某些)有秩序的社会状态的问题。解决这个搜索问题的运算量有多大呢?

为了计算这个运算量,我们不妨将搜索空间记为A, A中包含的状态数N=n^{10亿},A中状态的位置用1到N作标记,我们的搜索任务就是在A中找到某个特定的状态s。

如果我们假设搜索空间A完全没有结构,s在A中每个位置都是等可能的, 那么我们能够采用的搜索算法就只能如下:依次扫过A中的每个状态,并判断它是否是s, 如果是,即返回当前位置和s状态的具体信息,s也就被找到了,如果不是则继续扫下一个状态,直到s被找到为止。显然,这个算法的运算量是, (1+2+…+N)/N=N(N+1)/2N=(N+1)/2,由于N是一个很大的数,因此在量级上这个运算量就在N的量级,我们可以将之记为O(N)。

O(N)到底有多大呢?我们代入N=n^{10亿},就得到O(n^{10亿}),作为一个简单的估算,我们不妨假设n=10(即对于这种社会秩序的形成而言,每个人的行为只有10种选择),那么最后的运算量就是O(10^{10亿})。一个巨大的运算量,如果以目前最快的每秒钟运算2×10^{14}次的计算机来计算,那么将需要运算多少年呢?大概在10^{10亿}的量级。实际上,总的运算量是如此大,以致于计算机的运算速度根本就对最后的时间量级没有什么影响,也即是说即使你计算机运算的速度提高100倍又如何,最后还是需要运算10^{10亿}年。完全超出了人力范围之外!

这么大的运算量关键的原因就在于,我们假设搜索空间是完全无结构的,不同的社会格局之间没有什么可比性,如果我们假设搜索空间A有良好的结构,比方说假设其中的社会格局可以按某种原则排序,A有排序结构,则运算量就会大大地减少。因为这时候我们就可以用二分查找算法,这个算法的运算量是O(log{N}), 也就是在O(10亿)的量级,用现在的计算机运算可能要不了1秒钟,和上一种情况的估计有天壤之别。

那么真实世界中的所有可能社会格局所成的搜索空间有没有结构呢?显然严格的排序结构是没有的,我们不可能将所有的社会格局按某种原则排序。因此要产生真实世界中的社会秩序,从计算的角度,一定不可能采用二分查找算法,最后的运算量一定要远大于O(10亿)的量级。现实中的社会秩序由人与人的相互配合产生,同时,它又协调着秩序中每一个个体的行为。要协调这么多个体的微观行为在计算上是难的,它也就是要在任何时刻都给社会选择一个协调的社会状态,之前的例子告诉我们这相当于一个巨大的搜索空间的搜索行为,如果不能够找到搜索空间的结构并运用合适的算法,那么总的社会运算量就在10^{10亿}量级。因此,真实社会的社会格局空间一定是有其内在结构的,社会秩序的自发产生一定是运用了某种适合此结构的最优算法,这才能使得产生社会秩序的社会运算量在社会这个巨大的分布式计算系统可以承担的范围之内,否则社会就崩溃了。

那么真实世界的社会格局空间的内在结构是什么呢?真实世界中社会秩序的形成用的又是什么算法呢?

在后文中我们将看到真实世界的社会格局空间的内在结构是社会的外部成本,而真实的社会秩序是通过自然演进出现的,采用了一种我们称之为社会演化算法的最优算法。也即是说,社会是一个分布式的运算系统,而社会演化算法就是这个分布式系统所采用的适合于其搜索空间的结构的搜索算法。我们将看到真实世界中的这种演化算法其实是一种节省了巨大的运算量的最优算法(我们将证明任何对这种算法的实质性偏离都会额外附加给社会巨大的社会运算量,从而使得社会崩溃),正是这种对运算量的节省才使得社会这台机器可以承担产生各种社会秩序的社会运算,否则社会就会崩溃。

(三)社会演化算法

社会秩序是在社会的自然演化中自发产生和演化的,如果我们和上文所说的一样将社会看成一个分布式的运算系统,将社会的演化过程看成是一个在所有可能社会格局所成的巨大搜索空间搜索有丰富的秩序的社会格局的运算过程,并且将社会进行这种搜索时所遵循的算法称之为社会演化算法,那么自发秩序的产生和演化就是社会执行社会演化算法的自然结果。因此,为了考察自发秩序的产生和演化我们需要对社会格局空间的内在结构以及与此结构相适应的社会演化算法作一番深入的分析。

1,自发秩序与外部成本降低

首先我们要解决的问题是,在一个真实社会中怎么判别一种社会格局是有秩序的,或是比其它社会格局更有秩序呢?所有的社会格局所共同构成的这一个搜索空间的内在结构是什么呢?

很显然判别一个社会格局是否更有秩序需要运算,并且如果不利用搜索空间本身的结构,这个判别问题很可能是难以有效求解的。这不应该让人觉得奇怪,因为即使判别哪幅画比较美这样看似比较简单的问题,通常也被认为是难以有效求解的。真实社会的社会运算通过利用社会的外部成本结构自然地解决了这个问题,社会外部成本就是社会格局空间的内在结构。

前面我们说过,所谓的一种社会秩序的存在,指的是不同社会个体的自主行为选择能够在一定的情况下自动地相互配合起来。所谓无序而混乱的社会格局,即是不同人的选择无法自动配合起来,每个人的选择都给他人造成成本的社会格局。经济学中称这种他人行为造成的成本为外部成本,因为它并非源于自己的选择,而是由他人行为造成的(外部)。因此,混乱的社会格局就是每个人的外部成本之和这个社会总外部成本很高的社会格局。社会外部成本(等于每个人承担的外部成本之和)依赖于社会格局,社会有序化就是社会外部成本降低。自由并不是混乱,自由主义的深刻洞察正在于,每个人的自由选择可以自发地配合起来,降低社会外部成本,形成有秩序的社会格局。因此,社会格局的有序化就是社会外部成本的降低,社会外部成本正是社会格局空间的内在结构。

社会外部成本的降低首先有赖于个体出于自我理性所进行的利益计算这种社会运算,其次更有赖于另一种最基本的社会运算,交换,出自于个人自由意志的双方自愿的交换。亚当.斯密告诉我们这种交换运算的一个核心特征是,它是于交换双方均有利的,也只在于双方都有利的时候才可能自发地进行。

在《群体行为的基本原理》一文中我们论述过交换运算如何自发降低每个人所承担的外部成本的一个简单机制。假想有一个社会,最开始的时候处于一种毫无配合,完全混乱的状态,这就是最开始时的社会格局,社会中的每个个体几乎完全依照动物本能行事,因此每个人都要承受他人行为的巨大的外部成本。然而,假设这个社会存在交换的话,情况就会自发变化:一方面,每个人会出自于自己的自由意志自愿放弃自己最能造成他人外部成本的那些行为选择(虽然这些选择是他本人所欲的)以交换他人放弃给自己带来外部成本的那些行为选择。另一方面,每个人会出自于自己的自由意志自动作出一些能给他人带来外部收益的选择(虽然这些选择不是他本人所欲的)以交换别人同样作出能为自己带来外部收益的选择。两种情况都自动降低了每个人所承担的外部成本(按照我们的定义,外部收益应该折算为负的外部成本)。由于每个人承担的他人选择的外部成本是社会总人数的增函数,在一个足够大的社会这个成本将大到超过任何利益。因此在一个足够大的社会,一个人自愿放弃自己最可欲的选择而选择最能交换到他人的同等放弃(从而也就是最能降低外部成本)的选择,这就是最符合个人利益的。这就使得个体行为选择自发地朝着与他人的行为选择相匹配,从而使得它给别人带来的外部成本自发降低的方向发展。这个给定的社会大环境的社会外部成本就因此而自发地降低了,社会秩序也就自发形成了。

一个社会的各种社会秩序在一起就共同形成了一个秩序的生态系统,我们称之为社会大环境,每一种社会秩序就是这个大环境中的一个“物种”。秩序与秩序之间既存在着协作也存在着“生存竞争”,只有总外部成本更低的秩序才能获得竞争的胜利。而整个社会的演化就是这个社会秩序的生态系统的演化。

2.变异与社会选择

让我们来仔细地考察一下社会秩序的自发演化所涉及到的社会运算。实际上,这里主要涉及到的社会运算是个体行为选择的出自于自由意志的自发变异,以及社会对这些变异所进行的社会选择。

只有通过变异这种社会运算才能使得一种社会秩序不断更新,进而适应新的社会大环境。变异运算首先是在微观上发生的,是社会个体的行为选择的出于个人自由意志的突变。这种突变又在降低社会外部成本的压力之下通过自发的传递而在社会中传播开来,形成一种社会秩序本身的变异。外部成本自发降低的机制还使得个体行为选择的变异要接受社会的选择,换言之,由于在任何给定的社会秩序中出于自由意志的个体行为选择的变异或潜在的变异是大量存在的,在降低社会外部成本的压力之下,这大量的不同个体的行为变异之间就存在着竞争,只有那些最能够降低相应条件下的社会外部成本的个体选择才能赢得这种竞争的胜利,这种社会对个体行为变异的选择就是社会选择。给定社会大环境,社会选择能够使得社会格局自发地朝着社会外部成本更低更为有秩序的方向演进。同时,因为一种社会秩序只有更加适应相应的社会大环境其社会外部成本才能得到更多的降低,因此也正是通过自发变异和社会选择这两种社会运算,一种社会秩序才能不断进化,不断适应新的社会大环境。

在一个给定的社会大环境中,各种不同的社会秩序或者各种不同的潜在秩序无时无刻不在相互竞争,以争取社会个体的配合。独立的社会个体不断地对这种或者那种秩序作出配合或者不配合的自愿选择,进而调节其自己的行为选择,使其朝着相应的社会秩序所需要的方向变异,这是一种微观的社会运算。同时,社会个体之间又会相互影响,交换各自运算的结果,这样,在整体上社会竞争的过程就是一个巨大的分布式运算过程。在降低社会外部成本的压力之下,两种不同的社会秩序所需要的个体行为选择的变异之间存在着竞争,在宏观上就表现为不同社会秩序之间的“生存竞争”,只有更能降低社会外部成本的社会秩序能最终赢得这种“生存竞争”的胜利。这就是在外部成本降低的压力之下的社会选择过程对不同社会秩序所进行的选择,它使得社会格局自发地朝着更为有秩序的方向演进。

总之,社会选择这种社会运算能够自动地将社会外部成本更低(从而更加有秩序)的社会格局从所有可能的社会格局的巨大搜索空间中选择出来,从而使得社会不断地朝着有更为复杂而丰富的社会秩序的方向演进。

3.“秩序基因”与节省运算量

当某种社会秩序的复杂度很高时,社会通常会进化出一种机制,使得直接变异的不是秩序本身,而是它的“秩序基因”(秩序本身是其“基因”的表达),这实际上是社会演化算法自动节省运算量的结果,下面我们将以社会制度这类社会秩序的演化为例进行详细的分析。

最常见的社会秩序莫过于社会制度。我们所谓制度是指在一定历史条件下形成的法令,礼俗等。也许有人认为制度是人为设计的,但只要对历史有一定了解的人都会清楚,任何一个最终被社会所接受的制度都生根于社会之中,都是社会自发演进的结果。有时候看起来一场激烈的革命摧毁了某种制度,但实际上,随之建立起来的制度,当它在被人们接受了以后,在实质上往往可以看成原来制度在新的社会状况下的自然演进。

让我们来谈谈社会价值观是如何在社会制度的演进中作为制度的“秩序基因”出现的。和一切自发演进一样,社会制度的演进离不开变异,但如果让变异这种社会运算直接作用在制度上,则可变的太多,而通常这些变异要么不导致任何实质性的变动,要么就会导致完全不可接受的变动,恰好变异出一个新的可接受的制度的可能性太低太低。或者说,所有可能社会制度的空间太大,并且其中的大量都不对应于一个确定的社会秩序,也就是说,要从制度的所有可能变化中找到合适的那些,这是一个运算量过于巨大的搜索问题(社会制度过于复杂,可能性太多),社会可能无法承担这个运算量。这时候,如果先有合适的社会价值观作导引的话情况就会好很多。也就是说,我们根据社会价值观的指导建立社会制度(制度化),价值观是制度的“秩序基因”,而制度是这“秩序基因”的表达。如果让变异不是直接发生在制度上,而是发生在作为其“秩序基因”的价值观上的话,可能性就会少很多,搜索的空间就会小很多,运算量也就降低了很多(因此进入社会这台机器可以承担的范围),这当然是因为价值观虽然也复杂,但相对于具体的制度来说还是要简单很多,所有可能的价值观所成的空间相对来说要小太多。因此,现实中的社会制度秩序的演进依赖于社会价值观的指导其实是社会运算节省运算量的自然结果。

从社会价值观到制度化,这是一种自然而然的社会演化(价值观的自然表达过程),这个演化当然也是一种社会运算,但这种社会运算是相对比较简单的,可以自然而然地发生。但是反过来,从具体的制度反推其起于何种价值观,并进而根据制度对社会大环境的适应情况对相应的价值观进行调适就很困难,需要更为集中而不是分散于一个个社会个体的社会运算。

如果调适价值观这么难,那看来价值观的演进就只能依赖于随机变异,然后制度化,然后再通过对它产生的社会制度的优胜劣汰来间接地达到,胜出的社会价值观就通过制度传递下去,相应制度不能适应社会大环境的价值观则被淘汰(或者说社会选择的对象最终是秩序的“秩序基因”,在这里即社会价值观)。然而现实中社会价值观的演进又不完全是这样的。实际上,现实中往往出现直接调适社会价值观的情况,而不是让它随机变异。这虽然很难,需要更集中(而不是分散)的社会运算,但现实中也已经演化出了克服这个难题的机制,即通过专门的思想家来直接调适价值观,相比于普通人,思想家有更强大的社会运算能力(思考能力和社会影响力),是社会运算集中的中心,因此能够胜任这样的工作。

4.meme

上一段我们讨论的是作为社会制度的“秩序基因”的社会价值观的演进。实际上,更一般的社会观念本身就是一种社会自发秩序,这种秩序还通过它本身的meme来演进。meme是理查德.道金斯引入的概念,用来一般性地解释文化秩序的自发演进,当然也包括社会观念的演进。meme相当于文化秩序的“秩序基因”,在社会观念的自发秩序中就是观念的“秩序基因”,在自然语言秩序中就是语言的“秩序基因”。

实际上,meme这种文化的“秩序基因”同样是文化自发秩序的演进中自发出现的一种节约运算量的机制。其节省运算量的原理,和前文讨论过的制度的“秩序基因”节省运算量的原理类似,是因为将变异和社会选择这两种社会运算作用的对象从具体的文化转移到了作为文化基因的meme,这就大大减少了可能性,缩小了搜索空间,进而节省了运算量。

meme和文化的关系与前面论述的作为制度的“秩序基因”的社会价值观与社会制度本身的关系略有不同,meme的变异主要是随机的,而不是调适的,这些随机变异通过具体化为文化而间接地被优胜劣汰。但是文化也可能反作用于meme,对之进行调适,机制类似于前面由社会制度反过来调适社会价值观的机制,不过现在是通过将社会运算集中于各个文化秩序的中心节点(文人,作家等等)来达成。

(四)自由意志之流与负熵流

上一节所描述的社会演化算法有一些奇妙的特性。第一个特性是,在社会演化算法中存在着一个从微观流向宏观的自由意志之流。从上一节的分析我们可以看到社会演化算法基础于微观个体的出自于自由意志的自由选择。无论是个体与个体之间的交换也好,还是个体行为选择的自发变异也好,它们都源自于微观个体的出于自由意志的自愿。因此,形成一种宏观秩序的那种大规模的个人选择之间的自发匹配,实际上就是个体自由意志之间的一种大规模匹配,宏观上就表现为一个“社会有效意志”。在一个社会之中,多元的社会秩序其实就源自于多元化的“社会有效意志”。 因此,在宏观秩序的自发形成过程中,自由意志是从微观上的一个一个的具体的个体流向整个宏观秩序的,而宏观上的“社会有效意志”是这种流动自组织的结果,是在任何个体的意图之外的,用物理学家的话来说,这是一种层展(emergent)现象。

社会演化算法的第二个特性是,存在一个从宏观秩序逆向流向微观个体的负熵流。为了说清楚这一点,我们首先要注意到真实社会是一个开放结构,任何社会秩序都面向社会大环境开放,而社会大环境本身也是开放的,它面向自然环境开放。一种自发秩序的一个核心要素正在于它是开放的,它从秩序之外的更大的社会系统(或者说社会大环境)中吸收的熵值总是少于它排出到社会大环境中的熵值,也就是说有一股负熵之流从社会大环境流向这种自发秩序,从宏观流向微观,在不知不觉中,在个体的意识感知之外促使微观个体做出符合宏观秩序的选择,从而和个体的自由意志一起使得个体的选择摆脱随机混乱。之所以说负熵是从宏观流向微观而不是相反,这是因为一个孤立的个体人的行为从社会的尺度来看完全是随机的,所以从社会的尺度来看,负熵不可能从微观的个体流向宏观的社会秩序,而只能是从宏观的秩序流向微观的个体。

负熵的这种从宏观向微观的流动是通过社会外部成本结构和自由交换这一社会运算起作用的。一个身处社会之中的微观个体的行为如果和社会秩序的配合有所偏离,那么无论他自己所承担的外部成本还是他给其他个体造成的外部成本都会因此而有所升高,这样,为了双方的利益,这个微观个体必然会和其他个体达成一种无声的交换,双方(主要是这个微观个体)会各自调节自己的行为选择,使得它们朝着更为匹配的方向前进一步。也即是说,身处秩序之中的微观个体的行为通过与其他个体的交换这一社会运算而摆脱了随机性,并自发地与宏观秩序相适配。这样一来,负熵也就从宏观秩序流向了微观个体。

至于在一种社会秩序的演化过程中排入到社会大环境中的熵,它也是会降低的,不过这种降低则依赖于新成代谢和死亡等自然机制将混乱从社会系统排除到自然界。归根结底,负熵是从自然界流向社会系统的。

(五)社会演化算法是产生社会秩序的最优算法

从上文的论述中我们知道,社会秩序的产生从运算的角度可以看成一个搜索问题,搜索所有可能社会格局所形成的空间(搜索空间),并找到合适的社会秩序,而社会演化算法就是真实世界解决这个搜索问题所采用的算法。那么这个算法是不是好呢?可不可能设计更好的运算量更少的算法呢?

其实,社会演化算法是产生社会秩序的最优算法,这就是我们这一节所要论证的内容。首先,因为社会秩序所要安排的并非无生命的物体而是活生生的具有自由意志的人,因此任何秩序的形成如果需要以强制克服个体自由意志为代价,就一定会在真实社会中带来额外的社会无法承担的社会运算量。只有社会演化算法自发产生的社会秩序才是完全遵从个体的自由意志的,因为社会演化算法的自由意志的流向是从微观流向宏观的。这是一种完全依赖于自由选择的算法,对这种算法的实质性破坏就意味着依赖于强制。强制与自由的区别正在于,在依赖于强制这一社会运算的秩序形成算法之中,其自由意志的流向是相反的,是从一个宏观的秩序反向地流向微观个体。由于需要不断地克服和抑制个体天然的自由意志,对抗自由意志的从微观流向宏观的自然流动,这些依赖于强制的算法就不可能自然地体现“社会有效意志”,而是必然要与自由意志的自然流动所形成的多元的“社会有效意志”相对抗,因此,这类算法的算法复杂度比自由算法的复杂度就要高很多。两者的区别也许就好像将素因数自然地乘成一个大的合数与将一个大的合数反向分解素因素的算法复杂度的区别。

总之,强制的服从当然也能达成秩序,但一种宏观秩序之所以能形成,主要靠的是微观上的,无时无刻不在发生的,分布式进行的自发自愿的配合,而非对强制的服从。其实,即使是一些小的秩序,比方说公司内通过合约产生的秩序,如果没有个体的自觉遵守,而是完全通过强制监管来达成的话,监管的费用也可以无限攀升,原因就在于强制这种社会运算对于秩序的形成而言社会运算量可以无限增加! 并且,宏观秩序的形成需要协调微观上每一个个体的行为,用强制来达成秩序的话所需要用强制力来控制的可能性会遭遇所谓的组合爆炸,也就是说社会运算量会随着社会的规模指数增长,对于一个宏观社会的秩序形成而言这当然是不可接受的,它必然会导致社会的崩溃。

另外,社会演化算法中的社会选择这一社会运算由于充分利用了搜索空间的内在结构,也就是社会外部成本结构,从而极大地节省了社会运算量。对社会演化算法的实质性破坏就意味着抛弃社会选择这一社会运算,从而不能充分利用搜索空间的外部成本结构,很显然,任何这样的算法几乎都是无法有效地产生社会秩序的。

最后,对社会演化算法的实质性破坏很可能也意味着对负熵流的破坏。而没有一股从宏观秩序流向微观个体的负熵流的话,熵就会在微观上产生,换言之,个体的行为在社会的尺度上会表现为随机混乱,这就从微观上阻止了社会秩序的形成。

总之,社会演化算法是产生社会秩序的最优算法,任何对社会演化算法的实质性偏离要么就会带来无法有效运算的运算量(在真实的社会运算中就是导致社会的崩溃),要么就是无法产生社会秩序。反过来说,正是因为决定真实社会演化的社会运算采用了社会演化算法这种最优算法,所以真实社会才能有秩序地存在而不至于崩溃。

(六)社会秩序不可计划和设计

在本文的这最后一小节,我们将给出理由论证社会秩序是不可计划和设计的。首先,由于人有自由意志,因此社会外部成本无法计算,因为即使算出了某一时刻的社会外部成本,在分散的个体自由意志作用之下的下一时刻的社会外部成本又无从知道了。只有社会演化本身可以在社会演化算法的作用之下在不计算出社会外部成本的前提下利用搜索空间的外部成本结构找到社会秩序。

其次,脱离了社会本身,社会演化算法无法在任何人或机器的模拟中实现。我们无法在计算机上实现社会演化算法的第一个原因是自由意志无法被有效模拟,因此自由意志之流更无法在模拟中实现。另外,负熵流也无法在模拟中实现,真实社会完全是一个开放结构,而任何计算机模拟都是输入和程序两者结合起来的封闭结构。在计算机模拟中信息只会被擦除而不能无中生有,因此熵只会随着运算逐步增加,负熵流无法实现。哪怕是量子计算机也最多只能保证不在运算的过程中擦除信息,也不能实现负熵流。也即是说,社会演化算法和它所依托的硬件(即社会系统)是分不开的,它们一起演进,企图单独将社会演化算法剥离出来放到机器上实现是不可能的。

最后,社会演化算法是产生社会秩序的最优算法,任何对社会演化算法的实质性破坏要么意味着无法产生社会秩序,要么就意味着无法有效运算的运算量。因此我们也没有办法不用社会演化算法而用其它在机器上可以实现的算法来设计社会秩序。

综合上面这几点理由,我们可以下如下结论:社会秩序总体上永远是社会演化而自发产生的,人力只能是这种社会演化的一部分而无法超越出社会演化之外,想单纯地通过计划和设计来得到一个理想化的有秩序的社会永远没有可能。

小结一下,本文从社会运算的角度考察了社会秩序的形成和演化过程。结论是,社会是一个分布式运算系统,社会的演化本身就是一种社会运算,社会演化算法是这种社会运算产生社会秩序所采用的算法。而且,这个算法的基本框架是最优的,它节省了大量的社会运算量。这确保了社会这台机器能够顺利运行而不至于崩溃。同时,要想人为地设计社会秩序通常是不可能的,这不在任何人和任何人为机器可以有效求解的能力范围之内。


附录:

我们需要介绍几个关于运算量量级的概念。 首先,对于每一类问题,有一个参数n,用来刻画问题的规模。所谓问题的规模,就是问题空间有多大,比方说在前面10亿人社会的例子中,它就是搜索空间的大小N,比方说考虑对于一个合数m的分解素因数问题,那它就是m的二进制位数。

如果某种算法用来解决规模为n的一类问题,需要的运算量为n的一个多项式,这多项式的领头阶为n^{k}阶,则我们就说此算法对于解决此类问题的运算量为O(n^k)阶的。这么定义的原因显然是,当问题规模n很大时,决定运算量的主要就是这个领头阶。

如果对于一类问题,解决它的最快的算法是O(n^k)阶的,我们就说这类问题的运算复杂性为O(n^k)阶。显然,运算复杂性阶反应的是解题所需的运算量随着问题规模的增长情况。一类问题的运算复杂性阶如果是这样的n的幂次,我们就说这类问题是容易的,或者可解的,或者说可以有效求解的。这是因为,对于这样的问题,解题所需的运算量随着问题规模的增长并不太快(幂次增长)。反过来,如果解决一类问题最少所需的运算量随问题规模的增长快过任何幂次,我们就说这类问题是难的,或者说是不可解的,或者说是不可有效求解的。显然,对于这类难的或者说不可有效求解的问题,随着问题规模的增加,运算量会迅速增长,很快就会超出任何计算机的能力范围。