1
考慮到康威目前的生命遊戲(或任何其他蜂窩自動化遊戲)中的遊戲時間點,如何找到可以評估到的合法的先前蜱數量勾號提供了什麼?生命遊戲中法律訴訟的數量
例如,假定生命的遊戲可以被表示爲:
0 0 0 0 0 ...
X 0 X 0 0 ...
0 X 0 0 0 ...
0 0 0 0 X ...
...
其中X
是「活/開/真」和0
是「死/關/假」,或更簡單地作爲一個boolean[][]
,一個人如何能制定出以下幾點:
public static int numberOfValidPreviousTicks(boolean[][] current) {
return -1; // return answer
}
很顯然,人們可以從電網尺寸找到每可能之前的比賽狀態,並決定是否將評估到c urrent狀態使用正常的規則。
但是,必須有一些明顯的方法來加速此過程,以便它不是O(2^n)
(其中n是網格中的單元格總數)。
緩存當然可以在地方幫助,但它在哪裏適合?
任何幫助,將不勝感激
https://en.wikipedia.org/wiki/Garden_of_Eden_(cellular_automaton) –
我猜這個問題是NP-Complete。生活是圖靈完成的,所以倒帶算法非常接近找到使程序返回真實的輸入。看看你是否可以找到減少3 SAT,或沿着這些線路。 –
@CraigGidney:我認爲你是對的。我認爲,與許多NP-Complete問題一樣,大多數「隨機」輸入集合都適用於多項式時間解決方案,但除非P = NP,否則不會有多項式時間方法適用於所有輸入。 – supercat