• 精选
  • 会员

可变结构受限生成过程模型

2024年12月25日  来源:涌现 作者:约翰·霍兰德 提供人:It8933......

允许受限生成过程建立和中断自己内部的连接,听起来似乎自相矛盾,因为这要求系统事先有一个计划,而这个计划又可以修改自己。然而就像自我复制一样,的确存在可以避免上述矛盾的方法。怎样才能使受限生成过程自行控制连接的改变呢?解决这一问题的方法,和自我复制问题的解决方法有一定的联系。在自我复制的情形下,系统可以根据最初的描述生成全部计划。这与受精卵中的染色体能够生成成熟的有机体的情形大体相同。这里的解决方法是间接生成连接,而不是像过去在固定结构受限生成过程中那样列出所有连接。在实现这一方法的过程中,我们将会发现自己又向前跨出了一步,即让受限生成过程获得了增加、删除机制以及改变机制之间连接的能力。

下面我将用可变结构受限生成过程(cgp-v)来表示对受限生成过程的这个扩展。关于可变结构受限生成过程的研究才刚刚起步,但是关于它的系统结构和相关解释的课题已经相当多了。这里我将通过一些事例,深入说明这种新的受限生成过程模型所提供的对于涌现现象的一些新的理解。

为了使受限生成过程能够改变自己的连接,我们需要一种特殊的机制:处理器。它可以改变受限生成过程中的其他机制。处理器的转换函数必须以其他机制作为自己的输入,它的输出也必须是机制。我们构造的转换函数处理的是关于机制的描述,而不是机制本身,这样一来,我们简化了形式体系。换句话来说,让转换函数接受某种设计方案作为输入,其输出产生了一个新的设计方案,只要设计是有效的,模型就将自动执行。

为了使可变结构受限生成过程能够使用处理器,我们必须扩大各机制的输入字母序列,使输入字母序列能够包括集合F中所有机制的描述。通过引入对各种机制标准化的描述,我们就可以制定输入字母序列的标准,而使用标准化的输入字母序列又能够使处理过程也实现标准化。这就是后面讨论的大致思路。

标识

标识(tags)为可变连接提供了一种直观简便的实现方法。我在《隐秩序》一书中已对标识有过一定的说明,这里我将仅对其中与定义可变结构受限生成过程直接相关的几点做一些说明。

回顾一下第7章定义的受限生成过程模型,它由从集合F中取出的n个机制组成。先设想各个机制之间尚不存在相互连接。为了定义可变结构受限生成过程中的连接,先给每个机制分配一个表明身份的记号,也就是身份标识(id tag),后文简称“标识”(见图9-1)。我们可以将标识看作机制的地址,其他机制可以通过标识来对该机制进行访问。

图9-1 机制的标准化描述

为了使用地址,每个机制的输入都有相应的条件,该条件实际上确定了一些标识,表示具有这些标识的机制是可被接受的输入。条件实际上是过滤器,它查看可变结构受限生成过程中的n个机制,如果多个机制都适合该输入,那么就需要条件来决定选取其中的哪个机制。机制是否适合该输入,取决于其标识是否可被条件接纳。下面来说明条件的使用方法:

· 如果可变结构受限生成过程中并不存在标识满足条件的机制,则该输入是“自由”的,其值只能由可变结构受限生成过程模型的外部来决定,这与固定结构受限生成过程中自由输入的情况相同。

· 如果可变结构受限生成过程存在唯一确定的机制,其标识满足条件,则该输入与此机制建立“连接”,输入字母序列中与该机制描述对应的字母成为该输入的当前取值。

· 如果可变结构受限生成过程存在多个标识满足条件的机制,则每次随机选取一个机制与该输入建立连接,该输入的取值与第2种情况相同。

这些扩充使改变连接比较容易,因为这样一来,机制h与机制i的第j个输入之间的连接,既可以通过改变h的标识来加以改变,也可以通过改变与机制i的第j个输入相关联的条件来加以调整(见图9-3)。为了实现这一扩充,我们需要有一组关于集合F中各个机制的描述。此外,由于机制的状态决定了它的输出(即处理的结果),机制的描述中还必须包括对于机制状态的说明。这是我们的下一个关注点。

描述的标准化

因为可变结构受限生成过程模型是建立在一个小集合F所包含的基本转换函数个数的基础上。由于具有固定连接的受限生成过程模型的转换函数个数是固定的,当时我们只需要关注集合F中关于机制的描述。然而,允许机制有一些简单的变化,主要是允许机制的标识和输入条件可以调整;还允许可变结构受限生成过程模型改变它所使用的机制的数量或个数。

为了使可变结构受限生成过程的结构可变,我们必须能够列出任意给定时刻在模型中出现的所有机制,我们将与之对应的列表称作“当前组件表”(见图9-2),该表的其中一列是机制描述。根据约定,表中出现的每个描述都可能被自动执行,即表中列出的关于机制的描述会自动转化为可变结构受限生成过程实际的活动部件。这样,修改或添加机制,只需要修改或添加关于当前组件的描述即可(见图9-3)。

图9-2 通过标识和输入条件建立相互连接的机制

图9-3 内部控制的结构变化

有了上述准备,我们就可以开发一种标准化的描述方法,用于描述可能出现的机制。这种扩张了的机制含有以下几个标准部分(见图9-1):

· 标识。

· 输入集合,每个输入包括输入字母序列和与之对应的条件。

· 转换函数,它以各种输入和一组内部状态作为自变量。

要想为这些不断加入模型的机制提供方便且可修改的描述,就必须明确地说明上面的每一项。

我将利用简单的字符串(含3个符号即可)对上述各项进行编码或建立索引。这种方法让人回想起数字计算机通过二进制的0和1组成的代码串来描述数字、索引以及指令,或联想到由字符表示的核苷酸序列。

我们先在固定元素的有限集F中对转换函数建立索引,每个索引均可编码成为一个二进制串,同时规定标识为有限位的数字,这一点并不是必要的,但可以简化问题。30个二进制位可以用来表示10亿种不重复的标识。

接着对输入的对应条件进行编码。我们在这里限定条件只“查看”标识和函数索引。也就是说,这些条件忽视机制的所有其他特性,将“对机制的选取”仅仅建立在标识和函数索引这两个属性的基础之上。参考分类系统(参见《隐秩序》第2章)中规则的标准化描述,我们可以使用与之十分相似的一种技巧:按条件逐位检査描述的二进制串(标识和函数索引部分)。对串中的每个位置,要么条件要求有一个特定的二进制值(1或0),要么它“不在意”,即在这个位置允许取任意值。“不在意”的情况在条件字符串中用一个特殊的符号“#”表示。这样,条件字符串“1##0##”表示在描述的第一个位置需取值1,在第4个位置需取值0,而其他位置允许取任意值(见图9-2)。

按照上述规定,机制可被描述为基于字母序列{1, 0, #}的字符串。我们可以很方便地规定描述部分的次序:首先是机制的标识,其次是函数索引,与机制的各项输入对应的条件(转换函数的参数)则放在最后。按照这种排列,描述字符串的形式为:

(标识)(函数索引)(输入条件1)(输入条件2),…,(输入条件k

EMERGENCE

要对可变结构受限生成过程的定义做出形式化的描述,只需规定表示机制各个部分的符号即可。设G为集合F中转换函数索引的集合,H表示符合规定的标识集合,C表示条件集合。如果F中的所有机制都具有两个输入,则所有合规描述的集合D由下式给定:

D=H×G×C×C

这里再次使用了以前我们使用过的符号×(见第7章)。基于此定义,每一个独立的描述dD都是一个四元组(h, g, c1, c2),其中hHgGc1Cc2C

这里没有涉及一些更深入的技术细节,当然它们对后面的讨论并不重要。应该说这样的规定易于用符合语法的语句描述符合规范的机制,执行起来也是简单直接的。此外,这种描述也合理紧凑。例如,如果函数索引项占3个二进制位(8种转换函数),标识占10个二进制位(1024种不同的标志),那么条件将由13位字符串描述,这样整个描述(假定含有两个条件)的长度不过只有39个字符(见图9-1)。

当前组件表的拓展

在固定几何结构的受限生成过程模型中,我们曾将机制的状态作为输出。现在我们来扩展这一想法,从而使机制的输出(状态)可以被当作一个描述,因此可以使用机制来生成关于新机制的描述。为实现这一点,我们只需给每个状态加上一个“首部”(前缀),“首部”实际上是合规描述集中的描述。同样,状态可以用如下形式的字符串表示:

通过这种处理,机制的转换函数能够产生一个输出,这个输出包含经过函数作用而改变了的描述,因而描述既是转换函数的定义域(自变量),又是其值域(函数值)。这样一来,转换函数就可以对描述进行处理。

EMERGENCE

对新增的首部进行形式化描述,需要每个状态ssS)具有以下形式:

s=(d,s')∈ S=D×S'

其中S'在具有固定连接的受限生成过程中使用过,表示状态集。在这一约定下,可变结构受限生成过程的转换函数具有以下形式:

f:(I1×I2×…×Ik)×(D×S')→(D×S'

D既包括定义域,又包括值域,所以函数f能够改变D的描述内容。

我们可以进一步挖掘“修改描述”这一方法的潜力,以使可变结构受限生成过程能够调整自己的结构。先将受限生成过程所有机制的状态(输出)置于类似当前组件表的一张列表中,我们不妨称之为“当前状态表”。除了自由输入提供的输入以外,所有机制的输入都必须出自这张表。也就是说,机制之间所有的相互作用都以这张表为媒介。

现在到了关键的一步:我们采用与处理当前组件表相同的方法处理当前状态表。注意,表中的每一项都由描述集内的某一条描述作为前缀,因此可看作一个机制。的确,当前状态表中的条目提供了关于可变结构受限生成过程的完整信息:既给出了组成可变结构受限生成过程的机制列表,又给出了各个机制的当前状态。在每个时间步长内,当前状态表中的每个条目都可看作机制,其动作由前缀中带有相应索引的转换函数确定。所有机制动作的结果,是生成下一时间步长的当前状态表,同时这张当前状态表将被依次执行。这样,当前状态表就逐个时间步长地向前发展。可变结构受限生成过程的行为,连同不断变化的连接和机制,将完全由这样的过程来确定(见图9-3)。

这一递归(self-referential)过程,即当前状态表中的描述字符串决定自身将会发生的动作,或许有点让人困惑,但它的确将问题简化了。描述字符串的函数索引部分选择了一个转换函数,接着这个函数被应用于整个描述字符串,包括函数索引部分。这一递归的行为方式模仿了标准通用计算机的处理过程。计算机中每个存储寄存器都包含一组由二进制数0和1组成的字符串。然而,当计算机指定寄存器中存放的是下一个将要执行的指令,这时相同的二进制数又被看作一条指令。这种二元性使计算机能够巧妙地操纵自己的指令。一条指令可以简单地将另一条指令临时当作一个要修改的二进制数,通过一般算术运算修改其数值,从而修改了这条指令的内容。正是这种二元性赋予了通用计算机巨大的计算能力。

当前状态表中的每个条目都被看作机制或指令,这样一来,可变结构受限生成过程模型就获得了类似的计算能力。另外,可变结构受限生成过程模型还满足以前的规定,就像在元胞自动机的例子中那样,每个时间步长里所有机制同时行动,这种同步行为使可变结构受限生成过程模型变成了一台大型并行计算机。当前状态表中的每个描述字符串作为机制被同时运行,而不管它是否已经按照可变结构受限生成过程的要求被添加进表中。许多“无意识的机制”将由此获得状态(输出),并且不会冲击可变结构受限生成过程的其他机制;这类描述可看作“数字”,它们的转换函数和状态与可变结构受限生成过程其他的机制无关。甚至可以有一些虚拟转换函数,并用特别的索引把它们区别出来,其功能为“什么也不做”。这样,我们可以只把与之相对应的描述看作数字,好比计算机存储器中存放数据的部分。

作为处理器的机制

再次提醒读者注意,现在的当前状态表包含了对任意时刻可变结构受限生成过程模型的完整描述,不论是其结构还是状态。当表中的条目被作为机制时,它利用自身的输入条件在表中选择另一个描述串作为输入,通过其转换函数修改那些描述串,从而给当前状态表产生新的描述串,这些描述串将可以作为新的机制。简而言之,表中的某些机制可以处理其他机制。

对于生成可变结构受限生成过程模型的不同fF,如果对其局部状态S'进行标准化,我们就可以使问题简化。这种标准化模仿了通用计算机中使用标准长度字符串的方法。在通用计算机中,二进制字符串可以作为计算机指令的自变量使用。在可变结构受限生成过程中,这种标准化则意味着所有可变结构受限生成过程的自变量,即输入字符串及局部状态,均来自同一个集合。因此,我们不再需要具有固定连接的受限生成过程使用的接口函数,用来将机制的状态转化为机制的输入:每个转换函数fF都确实使用相同的状态集合,S=D×S',作为其输入(自变量)和输出(函数值),因为S'对所有f都是相同的。

如涉及版权,请著作权人与本网站联系,删除或支付费用事宜。

0000