元胞自动机/元胞自动机属性
您好。请允许我,这本书的最初作者,虽然希望最终不会是唯一的贡献者,自我介绍一下。我将通过在我的维基教科书网站用户名关联的讨论页面上包含一个链接来做到这一点。 用户:DonaldKronos
您也可以访问我的讨论页面,我从一个简单的自我介绍和我对贡献这个网站的最初意图开始。 用户讨论:DonaldKronos
这是我在维基教科书上的第一本书,所以如果我还没有完全知道如何正确地做到这一点,请原谅我,但我认为这是一个值得被涵盖的话题,所以我正在尝试。希望其他人会扩展我的最初努力。
我最近同时进行许多项目,但其中一个我花费了大量精力的是更新和扩展一个特定的元胞自动机程序,即基于 Java 的Mirek's Cellebration版本,称为MJCell,或Mirek's Java Cellebration,因为我一直想这么做很多年,但其他事情一直在阻碍。实际上,很多年前我和 Mirek,Mirek's Cellebration 的创建者谈过,他实际上给我发送了该程序的源代码,并鼓励我这样做,但现实生活出现了,我丢失了源代码,而且该程序在我的任何可用设备上都无法运行,所以我决定在 Java 版本上进行工作。在这样做的过程中,我进一步探索了元胞自动机空间的一个属性,它一直让我着迷了很多年,那就是在一个给定的元胞自动机甚至一个单个自动机的单个单元格中存在离散和不同的属性的想法。
我的意思如下。考虑一个元胞自动机空间,其中每个自动机可能具有具有给定数量可能状态和给定邻域的单元格。一个这样的邻域是 Margolus 邻域,但这引入了其他东西。您会看到,如果您在一个 Margolus 邻域中屏幕上放置一个单一的“点”,运行该邻域的程序将根据该元素在放置它的四个单元格 Margolus 邻域中的位置来决定该元素的“方向”,该邻域在奇数和偶数时间周期之间交替。因此,棋盘上的同一位置,或者换句话说,元胞自动机空间中的相同坐标,具有相同的“状态”,可以代表不同的东西,具体取决于“时间奇偶性”的“属性”。
许多这样的属性通常由单元格状态“模拟”,当然所有属性都可以“模拟”,但探索它们作为可以任意“应用”于给定自动机空间的东西是很有趣的,就像我在 Mirek's Java Cellebration 中使用“年龄”和“生日”属性一样。在撰写本文时,我正在休息,并非一切都运行正常,但任何想要了解我所谈论内容的人都可以查看 http://DonaldKronos.info/MJCell.jar 上的 Java applet。
根据我的定义,单元格的“生日”是它“出生”到其当前状态的周期的模数。许多变体是可能的,而且这个概念似乎值得进一步探索。年龄仅仅是指多久以前,或者多少个时间周期以前,一个特定的单元格“出生”到其当前状态(进入任何非零状态,或进入奇数状态,或者任何“出生”由特定的“年龄”规则定义的方式)。“年龄规则”可以定义“绝对年龄”,也可以像我在实现中探索的那样,定义到特定限制的年龄,在这种情况下,最大年龄保持不变(就像我所实现的那样)或循环回某个先前的年龄。这种额外的信息层可以被专门利用它们的规则使用,而被其他规则忽略,无论是否影响这些规则。