The Game of Life produces a vibrant ecosystem of complex creatures, machinery, and systems which evolve from simple beginnings. It is the goal of this project to analyze the growth of these structures and relate it to the growth of innovation in the real economy. The Game of Life is a reasonable starting point to find general principles of innovation because of its simple rules, persistent structures, and 50+ years of development. First we’ll begin with some general context for determining growth in the Game of Life, then we’ll show an example of a dependency tree to demonstrate the stack of structures needed to build any other structure, and finally make a rather interesting observation about the rate of innovation within the Game of Life.
General Context & Growth in the Game of Life
General Context & Growth in the Game of Life
The Game of Life has simple rules (found here). From these simple rules, the entire stack of complexity emerges, including universal computation. Below are a few example structures measured in cell count - each one is an order of magnitude larger than the previous one.
First thing to do is call the LifeWiki Entity Store and patch the missing sparse array data:
res=ResourceData["LifeWiki Entity Store"][[1]];res[["Types","GameOfLife","Properties","SparseArray","DefaultFunction"]]=Function[e,With[{imp=Quiet[Check[ImportString[e["RLEData"],"RLE"],$Failed]]},If[imp===$Failed,Missing["NotAvailable"],ImportString[e["RLEData"],"RLE"]]]];EntityRegister[EntityStore[res]]{"GameOfLife"}
To see all entities and all properties from the LifeWiki Entity Store:
In[]:=
EntityList["GameOfLife"]
In[]:=
EntityValue["GameOfLife","Properties"]
To see a wide variety of patterns, call the range of sparse arrays and plot:
In[]:=
sparses=EntityValue["GameOfLife","SparseArray"];
In[]:=
rangesparces=sparses[[100;;800]];
In[]:=
rasterizedSparses=Rasterize/@ArrayPlot/@rangesparces;
In[]:=
FeatureSpacePlot[rasterizedSparses,LabelingFunctionCallout]
Where is the growth?
Where is the growth?
There are two metrics in the Game of Life where you might expect to see growth. First, in the number of patterns discovered over time. This would be like observing each successive iteration of the iPhone over time. Second, we might expect to see growth in the complexity of new patterns discovered in the Game of Life. This would be like observing a step function from the ENIAC computer to the iPhone - a radical jump from one technology to the next.
What was observed in the histogram below shows slight incremental growth in the number of patterns discovered over time.
In[]:=
Histogram[EntityValue["GameOfLife","DiscoveryYear"],{1.5},AxesLabel{"Year","# of Discoveries"}]
Out[]=
More interestingly, the log plot below shows a potential relationship for exponential growth in cell count. To be sure, one must plot the growth in cell count over time to confirm if it’s roughly exponential.
In[]:=
ListLogPlot[Map[Tooltip[Style[#[[2]],Red],#[[1]]]&,EntityValue["GameOfLife",{"Entity","CellCount"}]/._Missing->0],AxesLabel{"Entity #","Cell Count"}]
Out[]=
Our intuition gathered from the plot above appears to be accurate - below, we can see a doubling rate in the cell count of new discoveries every few years. Interesting!
ListLogPlot[EntityValue["GameOfLife",{"DiscoveryYear","CellCount"}],AxesLabel{"Year","Cell Count"}]
Out[]=
The Dependency Tree
The Dependency Tree
Okay, so what is the actual determinant of growth in the Game of Life? Do we see incremental development from one subpattern to the next or do we see radical jumps of innovation irregardless of the discoveries before it? How much was needed first, structurally, in order to make the next innovation? To get a better understanding of this dynamic, we ran a computationally exhaustive search of all subpatterns that appear within any specific pattern. This should tell us how many and which specific subpatterns are needed to build any other pattern, and would suggest whether the whole of Game of Life is “built from sand” or if it really does require an iterative, unique, piece by piece engineering framework. NOTE: the variable “subpatternArray” is a large routine that required additional computational power to produce the result - the code will be linked in the implementation section below.
BEHOLD!!
BEHOLD!!
This subpattern graph contains nodes with directed edges. The nodes represent patterns within the Game of Life and there is a directed edge from pattern A to pattern B, if pattern B is inside of pattern A. This is a way of visualizing all foundational connections for each pattern and how they’re connected to one another.
This is what it looks like:
These are the subpatterns that are within it:
This shows the immediate family dependency graph (with Array Plots too). More specifically, this shows the vertex out components from any specific pattern connecting to all of its specific subpatterns:
Again, this shows the immediate family dependency graph using vertex out components:
This is the number of times a pattern was used as a subpattern, which shows that patterns with a size of up to about 100 in cell count are needed to produce essentially all other patterns:
Lastly, this shows the subpattern requirements needed to make a new discovery over time. The data points parallel to the y-axis show that they could have been discovered much earlier based on patterns that were discovered a long time ago. There are several outliers that need to be investigated which appear below the diagonal:
Moore’s Law in the Game of Life?
Moore’s Law in the Game of Life?
As we’ve observed in the plot below, the growth rate of cell count in the largest patterns over time roughly mimics Moore’s Law. The doubling rate of the cell count is occurring every few years.
Conclusion: The Future Evolution of the Game of Life
Conclusion: The Future Evolution of the Game of Life
A Whole New Ecosystem to Explore
A Whole New Ecosystem to Explore
The Game of Life has been capturing imaginations ever since it was devised in 1970. The most prolific of explorers are shown below. It’s been my privilege over the past three weeks to begin exploring this complex ecosystem and find some interesting results, including what appears to be Moore’s Law growth. Going forward, I intend to use the Game of Life as a place to incubate new ideas about innovation, growth, and economics. Additionally, the LifeWiki Entity Store that supplied most of the information in this notebook could use some enhancements, and I will help aid this data repository where I can.
A list of discoverers sorted by the number of their discoveries.
One Last Word on Human Innovation
One Last Word on Human Innovation
I invite you to watch this one minute clip of Dave Green, a prolific hobbyist and “hunter” in Game of Life, as he points out a mysterious creature that whizzes by on screen in 2018. It seems to be foundational to the interests of human beings to push the limits of discovery, even with no financial incentive for making new such discoveries.
Below is an animation of Sir Robin, the only known Knightship in the Game of Life, which was discovered just a few months after Dave Green’s presentation labeling it unknown:
“...On what principle is it that with nothing but improvement behind us, we are to expect nothing but deterioration before us?”
-Thomas Babington Macaulay
“...On what principle is it that with nothing but improvement behind us, we are to expect nothing but deterioration before us?”
-Thomas Babington Macaulay
“...On what principle is it that with nothing but improvement behind us, we are to expect nothing but deterioration before us?”
-Thomas Babington Macaulay
Acknowledgment
Acknowledgment
Mentor: Christopher Wolfram
A huge thank you to my mentor, Christopher, for making this project fun, adventurous, and inspiring. Thank you for your tireless collaboration! This project was defined by Christopher Wolfram and Stephen Wolfram, who I thank for giving myself and this project direction.
A huge thank you to my mentor, Christopher, for making this project fun, adventurous, and inspiring. Thank you for your tireless collaboration! This project was defined by Christopher Wolfram and Stephen Wolfram, who I thank for giving myself and this project direction.
Keywords
Keywords
◼
Game of Life
◼
Economic Complexity
◼
Moore’s Law
◼
Growth
◼
Evolution
◼
Dependency Graph