2019-9-2-用自動機的思想說明光速

title author date CreateTime categories
用自動機的思想說明光速
lindexi
2019-09-02 12:57:38 +0800
2019-8-4 11:2:9 +0800

用自動機可以模擬出一個世界,雖然這個世界是虛擬的,但這個世界裏面將會根據基礎的自動機規則自動推算出很多有趣的規則。在當前的世界裏面可以認定光速是最快的,在自動機世界裏面也可以認定爲有某個東西是具備最快速度,同時如果這個自動機世界裏面存在智慧生物那麼他將很難猜到自動機的創建規則以及他認爲具備最快速度的東西的本質是什麼,本文基於一個假定的自動機世界,通過簡單的語言告訴大家在自動機裏面的光速是什麼同時告訴大家這個最快速度對自動機世界的意義

我不是物理學家,本文也是不是任何證明現實世界光速相關的文章。但我是計算機的磚家,搬了很多年的磚也知道在計算機裏面可以簡單做出一個世界,本文就是說明光速帶的信息很難反過來知道世界的規則。而如果知道世界的簡單規則就可以推出很多複雜的規則

從我的上篇博客自動機告訴了大家如何創建一個自動機的世界,以下爲一個創建自動機世界的方法,創建規則如下

  • 在一個有限的二維布爾數組裏面,以 true 代表存活
  • 不斷根據算法規則遍歷數組,同時創建出新的相同大小的數組用於迭代
  • 新創建的數組將根據舊數組的數據按照一定的算法更新數組每個元素的值

從上層看,可以認爲我有一個數組,但這個數組的元素會跟隨時間進行變化。雖然底層說的是使用兩個數組,但實際上可以從上層上看到的只有一個數組,因爲新創建的數組就替換舊的數組。將數組作爲一張圖片,每個元素具有固定的寬度和高度,裏面的元素按照布爾值給不同的顏色,就可以畫出自動機的世界,這是一個二維的世界

那麼新數組創建的算法可以怎麼選?下面是一個簡單的計算方法,設定每次更新新數組就成爲新的回合開始,每個數組裏面的元素稱爲 Cell 而根據布爾值狀態可以認定爲 Cell 的存活或不存活,那麼創建自動機世界只需要三條規則

  • 在 Cell 周圍有兩個或三個鄰居存活,他就可以存活。這裏的周圍指的是將二維數組放在二維平面對應的元素的周圍的元素
  • 如果 Cell 已經不存活,但他周圍有三個鄰居,於是他就可以出生
  • 在 Cell 周圍,如果有超過三個以上的鄰居,他就因爲太擁擠而不存活。如果有小於兩個鄰居存活,他因爲他孤單而不存活

簡單按照顏色黑色和白色,同時每個格子表示一個數組的元素,那麼運行自動機世界可以看到下圖

上面是剛好滿足以上條件 1 的靜態圖,也就是隨着數組的迭代也就是回合數的變化,這些自動機世界裏面的圖案是不會發生更改的。但下面的圖片將會隨着回合數的變化,進行循環變化

再複雜一點就是週期比較長的,可以認爲是某個在自動機裏面的小生物的圖案

一些複雜的生物

在這個自動機世界裏面有一個圖案能夠按照一定的方向不斷運動,我稱這個圖案爲逃逸,也就是在一個無限大的二維空間裏面,如果這是一片除了逃逸之外就沒有其他 Cell 的空間,那麼逃逸將會無限向一個方向運動

例如下面圖案將會不斷創建逃逸讓他向右下角運動

按照光錐的說法,假定在自動機裏面的某個生物想要知道這個世界發生了什麼,他首先應該需要收到對應的消息,假定他收到的消息就是逃逸這個圖案,那麼請問我在上面圖案存在多久之後,在距離這個圖案一定距離的生物才能知道上面圖案的存在。也就是最短的事件就是逃逸運動的時間,在自動機裏面的生物將無法知道在逃逸運動時間之外的其他事件,也就是當有某個圖案存在的時候,需要等待這個圖案發送的逃逸到達生物的時候,生物才能知道某個圖案的存在

按照二維數組的刷新就可以定義出自動機裏面的最小時間單位,只是自動機的回合和現實的時間其實可以沒有任何對應,但根據自動機裏面最小的時間就可以知道自動機裏面的逃逸的最快速度是多少

換句話就是自動機裏面的最快速度就取決於自動機世界的定義,按照自動機世界的定義,每個 Cell 只會影響到周圍的 Cell 而不會在下一回合影響到距離他更遠的元素。而根據光錐的說法,在最快速度的東西帶的信息到達之前是無法知道事件的發生,也就是在自動機世界已經規定了一個世界局部範圍

假定在自動機裏面的某個生物,或由很多生物構成的社會只能存在一定的時間,畢竟是在計算機創建出這個世界,萬一我就想運行一分鐘之後就關機了,這也就決定了這個自動機世界能運行的回合數是有限的

那麼根據上文的說法,在某個由很多生物構成的社會已經存在一些先知的圖案,同時這些先知能夠根據到達的逃逸拿到對應的信息從而期望能知道先知他所在的世界是什麼,或者這個世界正在發生什麼。可惜如果在這個社會能存在的一定時間之內,還有更遠處的逃逸無法到達這個社會,那麼在社會裏面的先知也是無法知道更遠的事件。也就是按照逃逸的速度就可以將自動機世界劃分爲多個局部,雖然在相同的二維數組上存在,但並不會存在任何的影響

從簡單的自動機世界就可以知道,在瞭解世界的創建規則的時候就可以明白在這個世界裏面的具有最快速度的東西是什麼從而反過來推算出某個文明的邊界

在自動機裏面的生物是很難知道他所在的世界其實是計算機模擬的,同時也很難知道他所在的世界的規則。同時更難的是做到預知未來,在一個複雜的自動機裏面是不存在任何數學公式可以做到一次計算到某個回合的狀態,而是需要一個回合一個回合計算下去。也就是在一個個回合計算的過程中就相當於自動機世界在迭代。例如我創建了初始化的二維數組作爲世界,然後如果我在計算機外想要知道在第100回合的自動機世界的數組,那麼我只能通過計算第二回合發生了什麼然後計算第三回合的數組,在我計算的過程就可以認爲這個自動機世界的時間已經在走了,在我知道了第一百個回合的時候其實自動機世界也到了第一百個回合

在計算機之外的我可以知道整個數組的狀態都是這樣,更不要說如果在自動機裏面的生物可以怎麼做,首先自動機裏面的生物如果造出來計算機,那麼他的計算機本身就在世界裏面,也就是無法有更大的算力可以計算出他所在這個世界數組的未來確定的數組

反過來假設現實世界也是一個自動機,那麼如何能知道自動機的規則以及知道整個世界