用自动机可以模拟出一个世界,虽然这个世界是虚拟的,但这个世界里面将会根据基础的自动机规则自动推算出很多有趣的规则。同时也能很简单理解在自动机模拟的世界里面,在这个世界里面的生物是无法感知时间断片的
我不是物理学家,本文也是不是任何证明现实世界时间相关的文章。但我是计算机的砖家,搬了很多年的砖也知道在计算机里面可以简单做出一个世界,本文就是说明在自动机模拟出来的世界里面的生物是无法感知时间断片的,也无法测量
从我的上篇博客自动机告诉了大家如何创建一个自动机的世界,以下为一个创建自动机世界的方法,创建规则如下
- 在一个有限的二维布尔数组里面,以 true 代表存活
- 不断根据算法规则遍历数组,同时创建出新的相同大小的数组用于迭代
- 新创建的数组将根据旧数组的数据按照一定的算法更新数组每个元素的值
从上层看,可以认为我有一个数组,但这个数组的元素会跟随时间进行变化。虽然底层说的是使用两个数组,但实际上可以从上层上看到的只有一个数组,因为新创建的数组就替换旧的数组。将数组作为一张图片,每个元素具有固定的宽度和高度,里面的元素按照布尔值给不同的颜色,就可以画出自动机的世界,这是一个二维的世界
那么新数组创建的算法可以怎么选?下面是一个简单的计算方法,设定每次更新新数组就成为新的回合开始,每个数组里面的元素称为 Cell 而根据布尔值状态可以认定为 Cell 的存活或不存活,那么创建自动机世界只需要三条规则
- 在 Cell 周围有两个或三个邻居存活,他就可以存活。这里的周围指的是将二维数组放在二维平面对应的元素的周围的元素
- 如果 Cell 已经不存活,但他周围有三个邻居,于是他就可以出生
- 在 Cell 周围,如果有超过三个以上的邻居,他就因为太拥挤而不存活。如果有小于两个邻居存活,他因为他孤单而不存活
简单按照颜色黑色和白色,同时每个格子表示一个数组的元素,那么运行自动机世界可以看到下图
上面是刚好满足以上条件 1 的静态图,也就是随着数组的迭代也就是回合数的变化,这些自动机世界里面的图案是不会发生更改的。但下面的图片将会随着回合数的变化,进行循环变化
根据这个规则,这个世界的驱动是随着时间更改二维布尔数据而让这个世界继续往下走。而这里的随着时间更改的时间却是咱计算机的时间。意味着咱的计算机配置不错,可以一秒跑一遍,让自动机推进。而如果我打开了 QQ 电脑就卡了,此时需要10秒才能跑一遍。而对于没有参照物的自动机里面的世界,是无法知道现在这个自动机的时间流速和计算机时间流速的对比的。甚至,我需要断电了,我将数据保存起来,等到我下一次开机才继续跑。那么自动机里面的生物依然会认为自己的时间还在继续走,不会感知到我曾经断电了
可怕的是我一次断电的时候,我的电脑被了,数据丢了。此时意味着这个自动机的世界没有下一个时间了。也就是自动机里面的杞人可能担忧的是没有下一秒,时间就此结束
而如果我的电脑只是被砸坏了,数据有点损坏,那么自动机里面的生物也许会发现有很多自相矛盾的历史事件,却很难意识到某个时间自动机的世界就被更改数据了
本文所说仅仅是自动机的世界,而不是说现实的世界,请不要认为现实的世界也是这个样子。因为我认为也许在很长的时间,都不会存在时间旅行的技术,则为什么我找不到未来过来的东西
只要设计能进行时间旅行,那么瞬间技术和文化将会爆掉。原因是我时间推进一年,此时将这一年的知识拿回到上一年,于是上一年就拥有了一年的技术。然后递归,不断推进下一年,回到上一年,直到无法消化这部分技术
更多自动机博客请看
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/%E7%94%A8%E8%87%AA%E5%8A%A8%E6%9C%BA%E7%9A%84%E6%80%9D%E6%83%B3%E8%AF%B4%E6%98%8E%E6%97%B6%E9%97%B4%E6%96%AD%E7%89%87%E6%98%AF%E6%97%A0%E6%B3%95%E6%84%9F%E7%9F%A5%E7%9A%84.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。