前像是过去导致当前配置的一步配置。
当前配置的前像取决于全局转移函数的逆
局部转移函数 和 全局转移函数 定义了元胞自动机在正向时间方向上的演化。要从当前配置计算前像,必须定义正向映射的逆。
单个细胞
的前像是由局部转移函数的逆定义的局部有效的邻域 

配置
的前像
由全局转移函数的逆定义

相邻细胞的局部有效邻域必须正确重叠才能成为全局有效的。德布鲁因图描述了序列如何重叠,因此提供了一种在知道局部逆的情况下计算全局逆的方法。
前像
的数量
可能从零到很多,具体取决于规则和当前配置
,引发了关于规则的单射性、满射性和可逆性的问题。
德布鲁因图
德布鲁因图来自描述移位寄存器的理论。它的节点是在某个字母表上的符号串
,通常是所有固定长度的字符串。它的有向链接描述了如果其中一个字符串被移动,这些字符串如何重叠。这里只描述了单个细胞的移动。
从源节点
到一个排水节点
存在一个链接,如果字符串
与字符串
重叠,并且向右移动一个符号。这意味着重叠的源子串
(
去掉起始符号
) 等于重叠的排水子串
(
去掉结束符号
)。
De Bruijn 图的拓扑矩阵为

为了让该图更容易在元胞自动机上阅读和使用,本书使用了一种图形表示,其中所有节点都被绘制了两次。左侧的节点是链接的源点,右侧的节点是链接的排水点。链接的方向选择为指向细胞位置索引的递增方向。
- 另见
- 关于 De Bruijn 图的更多信息请参见参考文献。
相邻邻域的重叠(深灰色)
重叠
是来自一对相邻单元格
的重叠邻域的单元格组。重叠
的大小比邻域的大小少一个单元格。

重叠的紧凑表示是具有
位基数为
的数字。

如果一个细胞序列
在
和
之间被切割(或连接)成两部分,左侧部分的最后一个单元格的邻域
与右侧部分的第一个单元格的邻域
重叠。切割(或连接)处的重叠
如上定义,用于描述序列的边界。
前像图(由前像矩阵描述)
构建前像矩阵的第一步是构建一个 De Bruijn 图,它表示细胞自动机中单个细胞的前像。它的节点是所有
个不同的邻域重叠。源节点
是细胞左侧的重叠,汇点节点
是细胞右侧的重叠。链接表示邻域
,并根据接下来的两种分解连接节点
和
。
- 邻域
由剩余的左侧单元
和右侧重叠
组成,或者
- 邻域
由左侧重叠
和剩余的右侧单元
组成。
该图的拓扑矩阵是一个
元素的方阵。
![{\displaystyle D=\left[{\begin{matrix}d_{00}&d_{01}&\cdots \\d_{10}&d_{11}&\cdots \\\vdots &\vdots &\ddots \end{matrix}}\right]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3b8a3f95f14e5ebdec1566bef14561b1c3467a4f)
如果节点
和
之间存在链接,则元素的值为
,否则为
。

下一步是形成一个符号德布鲁因矩阵,其中元素是链接标签。代表邻域
的链接根据局部转移函数定义的输出单元值
进行标记。没有链接的节点对可以用点标记。

最后一步是形成前像矩阵
,每个
个可用的单元格状态
都对应一个矩阵。 只有当相对邻域
导致所需的单元格值
时,节点对
之间才存在链接。

在将前像矩阵的定义扩展到单元格序列
之前,必须定义矩阵元素的含义,以便可以根据它来检查定义。
矩阵
中的条目
表示长度为
的前像的数量,这些前像以左重叠
开头,以右重叠
结尾。

一个细胞串的原像矩阵
是单个细胞矩阵的乘积链

空字符串的原像矩阵
是一个单位矩阵.

证明: 序列原像矩阵方程的证明 
原像连接或边界
原像向量 包含
个非负整数条目,每个条目对应原像图中一个可能的邻域重叠或节点。
原像向量
中的元素
统计包含重叠
的原像,该重叠在当前细胞序列中的位置
处具有值
。
![{\displaystyle b_{x}=[p_{0},p_{1},\dots ,p_{i-1},p_{i},p_{i+1},\dots ,p_{|S|^{k-1}-1}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2787a83b54d21d675864243defefc4720e603f89)
原像向量用于描述边界,更准确地说,它可以描述两个字符串连接处一侧的原像计数。
- 对于字符串
的右边界,使用右边界向量
,它统计连接处右侧的原像。
- 为了描述字符串
的 左侧边界,使用 左侧边界向量
,它从连接点向左计算前像。
无限制边界 通常用于避免任何特定的边界。假设每个重叠只有一个前像。向量中的所有条目都是
。
![{\displaystyle b_{u}=[1,1,\dots ,1]\qquad |b_{u}|=|S|^{k-1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c519e6933ae42eed8b086c83df5c637f0ef51df1)
由于 半无限序列 可能有无限多个前像,通常只使用周期性序列,只计算周期
的前像。


静止和以太背景可以用周期性序列表示。
- 另见
序列
的前像数量
(网络中的路径)定义为左 边界条件
和右 边界条件
。

无限制边界 通常用于计算序列
的所有前像,每个前像只计算一次。前像的数量仅仅是前像矩阵
中所有元素的总和。

由于循环格中的字符串必须在其左右两侧具有相同的重叠,因此只有德布鲁因矩阵对角线上的元素才是有效的前像。字符串
的所有前像的数量是对角线上元素的总和。

伊甸园序列没有前像。对于无限格上的有限字符串,这在德布鲁因矩阵为零矩阵
(所有元素都为零)时是完全正确的。

任何其子串为伊甸园的字符串都是伊甸园。
![{\displaystyle \forall \beta _{L},\beta _{R}\;[\alpha \in G\Rightarrow \beta _{L}\alpha \beta _{R}\in G]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/23f419a5da935463e3d09e79a4d95a92f999066e)
伊甸园可能是边界条件的结果,包括有限或循环边界条件。
序列公式的证明是关于字符串长度的归纳法。
- 基础案例 (
)
- 如果字符串的长度为
,则没有偏移,并且节点仅与其自身链接。
- 对于长度为
的字符串,单个单元格前像矩阵元素的含义从定义中可以明显看出。
- 归纳

- Harold V. McIntosh,通过德布鲁因图的线性元胞自动机,1991 年 8 月 10 日 (HTML,PDF)
- Harold V. McIntosh,祖先:关于 Andrew Wuensche 和 Mike Lesser 的《元胞自动机的全局动力学》(Addison-Wesley,1992)的评论,1993 年 7 月 20 日 (HTML,PDF)
- Erica Jen,元胞自动机中前像的枚举,复杂系统 3 (5) (1989) 421-456
- Burton Voorhees,元胞自动机状态的前驱 II. 有限序列的前像,Phisica D 73 (1-2) (1994) 136-151
- Iztok Jeras,Andrej Dobnikar 计算元胞自动机配置前像的算法 PDF
- DDLab 用于研究元胞自动机、随机布尔网络、多值离散动力系统等的工具;由 Andy Wuensche 提供。
- Iztok Jeras,用于计算元胞自动机配置的原像的算法 TAR.BZ2
- 元胞自动机原像生成器 CAPIG 是一款用户友好的免费软件,用于根据用户选择的配置查找原像。