Conways Spiel des Lebens
- Seiten, die doppelte Argumente in Vorlagenaufrufen verwenden
- Seiten mit defekten Dateilinks
- Theoretische Ökologie
- Computerspiel bis 1970
- Lebenssimulation
- Großrechner-Spiel
Das Spiel des Lebens (engl. Conway's Game of Life) ist ein vom Mathematiker John Horton Conway 1970 entworfenes System, basierend auf einem zweidimensionalen zellulären Automaten. Es ist eine einfache und bis heute populäre Umsetzung der Automaten-Theorie von Stanisław Marcin Ulam.
Das Spielfeld
Das Spielfeld ist in Zeilen und Spalten unterteilt und im Idealfall unendlich groß. Jedes Gitterquadrat ist ein Zellulärer Automat (Zelle), der einen von zwei Zuständen einnehmen kann, welche oft als lebendig und tot bezeichnet werden. Zunächst wird eine Anfangsgeneration von lebenden Zellen auf dem Spielfeld platziert. Jede lebende oder tote Zelle hat auf diesem Spielfeld genau acht Nachbarzellen, die berücksichtigt werden (Moore-Nachbarschaft). Die nächste Generation ergibt sich durch die Befolgung einfacher Regeln.
Das Spiel kann manuell auf einem Stück Papier oder mit Computerhilfe simuliert werden. Da ein reales Spielfeld immer einen Rand hat, muss das Verhalten dort festgelegt werden. Man kann sich den Rand zum Beispiel durch tote Zellen belegt denken, so dass manche Gleiter ihre Bewegungsrichtung dort ändern. Eine andere Möglichkeit ist ein Torus-förmiges Spielfeld, bei dem alles, was das Spielfeld nach unten verlässt, oben wieder herauskommt und umgekehrt, und alles, was das Spielfeld nach links verlässt, rechts wieder eintritt und umgekehrt.
Alternativ kann man auch nur lebendige Zellen und ihre direkte Umgebung simulieren und bei Bedarf mehr Speicher allozieren, da große tote Flächen tot bleiben. So hat man zumindest ein quasi unendliches Feld.
Anstatt auf einer quadratisch gerasterten Ebene kann die Simulation auch auf einer sechseckig gerasterten Ebene erfolgen. Dann beträgt die maximale Zahl der Nachbarn nicht acht, sondern sechs. Es gibt auch dreidimensionale Game of Life-Simulationen.
Eine weitere Variationsmöglichkeit ist die Vergrößerung der möglichen diskreten Zustände einer Gitterzelle.
Die Spielregeln
Die Folgegeneration wird für alle Zellen gleichzeitig berechnet und ersetzt die aktuelle Generation. Der Zustand einer Zelle, lebendig oder tot, in der Folgegeneration hängt nur vom Zustand der acht Nachbarzellen dieser Zelle in der aktuellen Generation ab.
Die von Conway zu Anfang verwendeten Regeln sind:
- Eine tote Zelle mit genau drei lebenden Nachbarn wird in der Folgegeneration neu geboren.
|
- rot: Tote Zelle, die in der nächsten Generation geboren wird
- grün: Lebende Nachbarn der Zelle
- Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit.
|
- Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration lebend.
|
- Lebende Zellen mit mehr als drei lebenden Nachbarn sterben in der Folgegeneration an Überbevölkerung.
|
- magenta: Lebende Zelle, die betrachtet wird
- grün: Lebende Nachbarn der Zelle
Mit diesen vier einfachen Regeln entsteht aus bestimmten Anfangsmustern im Laufe des Spiels eine Vielfalt komplexer Strukturen. Einige bleiben unverändert, andere oszillieren und wieder andere wachsen oder vergehen. Manche Strukturen, sogenannte Gleiter, bewegen sich auf dem Spielfeld fort. Sogar für logische Funktionen wie UND und ODER lassen sich Anfangsmuster finden. Damit können dann sogar komplexe elektronische Funktionen nachgebaut werden.
Es existieren weitere Varianten des Game of Life, bei denen Conways Regeln geändert oder ergänzt werden. Beispiele sind im Abschnitt Abweichende Regeln aufgeführt.
Sichtweisen
Die Beschäftigung mit Game of Life kann unter verschiedenen Sichtweisen erfolgen, wie etwa:
- Das Verhalten als Gesamtes:
Für einen Teil der Leute ist es interessant, was für ein Verhalten bestimmte Regelwelten aufweisen, zum Beispiel ob sie explodieren oder implodieren, ob sie langsam schrumpfen oder ob sie langsam „aushärten“. - Der biologische Aspekt: Game of Life als Mikrokosmos:
Für einen anderen Teil ist Game of Life wie der Blick in ein Mikroskop. Man beobachtet die kleinen Strukturen, die man abzählen und bewerten kann. Für diesen Typus ist es immer eine Freude, wenn eine neue „Lebensform“ auftaucht. Explodierende, expandierende oder gar „aushärtende“ Regelwelten sind hierbei uninteressant. - Der chemische Aspekt: Energie und Materie:
Wenn man die Häufigkeit, die Komplexität der Game-of-Life-Objekte mit dem Aufwand an Energie und Zwischenschritten vergleicht, die benötigt werden, um eine bestimmte chemische Verbindung zu erhalten, so kann man die unterschiedlichen Life-Objekte auf unterschiedliche energetische Niveaus setzen. Objekte, die bei jedem Ablauf vorkommen, wären dann auf dem Niveau von Wasser, Kohlenstoffdioxid und Natriumchlorid. Objekte, wie Unruhe(2) und Fontäne, wären dann beispielsweise auf einem Niveau wie Salzsäure und Natronlauge, und Objekte wie die Segler (LWSS, MWSS und HWSS), die auch zufällig entstehen können, wären schon auf dem Niveau relativ komplexer Verbindungen. - Der physikalische Aspekt: Kräfte und Anfangswertproblem:
Selbst die einfachsten physikalischen Gesetze können beliebig komplexes Verhalten als Gesamtes zeigen. Rein deterministisch/mechanisch können (beliebig) kleine Abweichungen der Startbedingung zu ganz unterschiedlichen Ergebnissen führen. Somit lässt sich ein Anfangswertproblem formulieren, worauf chaotisches Verhalten folgt. Es folgen Endzustände, Schwingungen, Wachstum, aber auch dauerhaft unregelmäßiges Verhalten. - Game of Life als Automat:
Es gibt den Typus des Game-of-Life-Interessierten, der hauptsächlich an der Konstruktion von Automaten interessiert ist, also solchen Strukturen, die wie eine Maschine oder Fabrik arbeiten. Es gibt einen Verband aus Strukturen, der entfernt Ähnlichkeit mit einem Rollfeld eines Flughafens hat, auf dem ständig Flugzeuge starten, und dazwischen die Fahrzeuge, die den Betrieb aufrechterhalten, zu ihren Stationen fahren. - In der Theoretischen Informatik ist das Game of Life als Entscheidungsproblem interessant:
Man kann zeigen, dass es keinen Algorithmus gibt, der als Eingabe zwei beliebige Game-of-Life-Konfigurationen erhält und in allen Fällen entscheiden kann, ob eine Konfiguration aus der anderen entstehen kann oder nicht. Diese Frage ist damit unentscheidbar.
Die Objekte
Auf dem Spielfeld zeigt sich mit jedem Generationsschritt eine Vielfalt komplexer Strukturen. Einige typische Objekte lassen sich aufgrund eventuell vorhandener besonderer Eigenschaften in Klassen einteilen: sie verschwinden, bleiben unverändert, verändern sich periodisch (oszillieren), bewegen sich auf dem Spielfeld fort, wachsen unaufhörlich usw.
Statische Objekte
Statische Objekte bilden eine Klasse von Objekten, die sich im Spielverlauf ohne äußere Einflüsse nicht mehr verändern, also "stabile Zellsysteme" darstellen.
Beispiele für statische Objekte sind:
Oszillierende Objekte
Hierbei handelt es sich um Objekte, die sich nach einem bestimmten Schema periodisch verändern, d. h. nach einer endlichen, festen Anzahl von Generationen wieder den Ausgangszustand erreichen.
Die einfachste zyklische Konfiguration ist eine horizontale oder vertikale Reihe von drei lebenden Zellen. Beim horizontalen Fall wird direkt ober- und unterhalb der Zelle in der Mitte eine lebende Zelle geboren, während die äußeren beiden Zellen sterben; so erhält man eine vertikale Dreierreihe.
Eine Reihe von zehn horizontal oder vertikal aneinander hängenden Zellen entwickelt sich sogar zu einem Objekt, das einen Zyklus von fünfzehn Generationen hat, dem Pulsator.
Beispiele oszillierender Objekte sind:
Name | Blinker | Uhr | Kröte | Bipole | Tripole | Fünfzehnkämpfer | Tümmler | Oktagon |
Zyklen | 2 | 2 | 2 | 2 | 2 | 15 | 14 | 5 |
Der Fünfzehnkämpfer wird im englischen, aufgrund eines Zyklus aus 15 Schritten, Pentadecathlon genannt und ist ein Gleiter-Fresser. Der Tümmler, auch Stehaufmännchen genannt, wird im englischen als Tumbler bezeichnet.
Raumschiffe und Gleiter
Raumschiffe sind (zumeist oszillierende) Objekte, die eine feste Wegstrecke zurücklegen. Sie sind ein Beispiel der Emergenz-Erscheinungen des Spiels des Lebens; die wenigen Regeln des Spiels sagen nichts über Formen aus, die sich unendlich weit fortbewegen, und doch entstehen die Raumschiffe wegen dieser Regeln. Man kann zwischen den diagonalen Raumschiffen (zum Beispiel Gleiter und Qualle) und den vertikalen bzw. horizontalen Raumschiffen (zum Beispiel Segler) unterscheiden.
Beispiele für Raumschiffe sind:
Gleiter Segler(1) (LWSS) (Light-Weight Spaceship) Segler(2) (MWSS) (Middle-Weight Spaceship) Segler(3) (HWSS) (Heavy-Weight Spaceship)
Puffer
Die Puffer kann man zu den Raumschiffen zählen, wobei die Puffer im Gegensatz zu den Raumschiffen eine Spur von Objekten hinterlassen. Bei diesen Objekten kann es sich durchaus um andere komplexe Objekte, wie Gleiter oder Segler handeln.
Andere Objekte
Daneben gibt es noch Anfangskonfigurationen, die innerhalb endlicher Zeitschritte ein „leeres“ Spielfeld erzeugen. Ein gutes Beispiel hierfür ist folgendes Startmuster:
Das Muster erzeugt innerhalb von 54 Generationen eine leere Welt:
Eine weitere Möglichkeit sind völlig chaotische oder „explodierende“ Muster. Das f-Pentomino (auch r-Pentomino genannt) bewirkt trotz seiner Einfachheit ein Wachstum, welches über 1102 Generationen chaotisch erscheint, bis das Spielfeld vom 1103. Schritt an eine oszillierende Struktur bildet. (Ausgenommen ein paar wegfliegende Gleiter. Das Beispiel zeigt ein begrenztes Feld, in dem alles außerhalb immer tot ist.)
Ein anderes solches Objekt ist die Zahl 42 (mit jeder Zahl auf 3 mal 5 Kästchen), die nach 350 Schritten einige statische und einige oszillierende Objekte sowie 6 Gleiter produziert.[1]
Entwicklung aus einer zufälligen Anfangsbedingung
Die folgende Animation zeigt die ersten 1500 Entwicklungsschritte auf einem 100×100 torusförmigen Spielfeld. Die Anfangskonfiguration ist zufällig mit 31,25 % lebenden Zellen. Jeder Zustand wird 0,1 Sekunden angezeigt. Jedes Pixel steht für genau eine Zelle.
Conways Herausforderung
Conway bot demjenigen einen Preis von 50 US-Dollar, der nachweisen konnte, dass mit Conways Spiel des Lebens unbegrenztes Wachstum möglich ist. Da für einen eindeutigen Beweis ein geordnetes Wachstum notwendig ist, waren die chaotischen explosionsartigen Vermehrungen ungeeignet.
Die erste Lösung für dieses Problem – eine so genannte Gleiterkanone, die in regelmäßigen Abständen einen Gleiter hervorbringt – wurde 1970 von dem amerikanischen Mathematiker Bill Gosper präsentiert. Der Gleiter erzeugt innerhalb von vier Generationen eine verschobene Kopie von sich selbst, und somit kann die Kanone an derselben Stelle den nächsten Gleiter erzeugen.
Es ist möglich, aus Kollisionen von Gleitern eine Gleiterkanone zu erzeugen. Damit kann die Bewegungsrichtung der Gleiter geändert werden, und es besteht die theoretische Möglichkeit, selbstreplizierende Automaten zu konstruieren.
In der oberen Bildhälfte befindet sich die Gleiter-Kanone, die in 30 Generationen einmal pulsiert und dabei einen Gleiter erzeugt. Im rechten, unteren Teil des Bildes befindet sich der Gleiter-Fresser, der in 15 Generationen einmal pulsiert und bei jeder zweiten Pulsation einen Gleiter zerstört. Die Gleiter bewegen sich von der Bildmitte nach rechts unten. Links unten läuft der Generationen-Zähler mit. In der Bildbeschreibung befinden sich Links zu dem die Animation erzeugenden GW-BASIC-Programm und zu den Startdaten.
Mittlerweile wurden unüberschaubar viele Konstellationen gefunden, die ähnlich wie die einfache Gleiterkanone laufend Zellen produzieren. Neben Gleitern und verschiedenen Seglern sind sogar komplexe Kanonen gefunden worden, die selbst Gleiterkanonen „feuern“. Zusammen mit anderen nützlichen Gebilden, wie sich fortbewegende Kanonen, Gleiter-Reflektoren oder Relays (Gebilde, die etwa Gleiter für einige Generationen bremsen), bilden sie Werkzeuge für das Entwerfen komplexer Automaten wie etwa der Turingmaschine. Es ist somit bewiesen, dass Conway’s Game of Life Turing-vollständig ist.[2]
Im Jahr 2012 wurde erstmalig eine Konstellation vorgestellt, die in der Lage war, ein Spielfeld zu simulieren, das den Regeln von Conways Spiel des Lebens entsprach (Selbstsimulation).[3][4]
Abweichende Regeln
Man kann sich abweichende Regeln zum klassischen „Game of Life“ vorstellen. Das folgende Regelwerk definiert beispielsweise ein sich reproduzierendes System, eine Kopierwelt.
- Todes-Regel: Eine Zelle mit genau 0, 2, 4, 6 oder 8 Nachbarn stirbt.
- Geburts-Regel: 1, 3, 5 oder 7 lebende Nachbarn erzeugen (oder erhalten) eine lebende Zelle.
Wenn man in dieser Kopier-Welt eine Struktur in Form des Buchstaben H zeichnet, so werden lauter identische H-Buchstaben erzeugt.
Bei größeren Ausgangsmustern sorgt dieses Regelwerk sogar selbständig für ein Auseinanderrücken der vorher kollidierenden Kopien.
Die Kopien der Ausgangsmuster treten bei Zyklennummern auf, die ein Vielfaches von 4 sind.
Bei größeren Ausgangsmustern treten sie aber nicht bei jedem Vielfachen von 4 auf.
Um sich beim Vergleich verschiedener Regelwerke eine umständliche Umschreibung der Regeln zu ersparen, existiert eine Kurzschreibweise für die Regeln von Game of Life: Man setzt zunächst (in aufsteigender Reihenfolge) die Ziffern der Anzahl von Nachbarn aneinander, bei der eine Zelle überlebt, und anschließend, durch einen Schrägstrich abgetrennt, die Ziffern, die den Werten entsprechen, bei der eine Zelle geboren wird.
Die klassische Conway-Welt wird durch 23/3 beschrieben, die oben beschriebene Kopierwelt durch 1357/1357.
Es wurden auch Regeln für mehrdimensionale Räume entwickelt. Hier entstehen aber natürlich Darstellungsprobleme.
Sehr dicht an das Verhalten nach dem klassische 23/3-Regelwerk von Conway (zwei oder drei Nachbarn erhalten eine Zelle, drei Nachbarn erzeugen eine neue Zelle) kommen die Regelwerke 34/3 und 35/3.
Die Anzahl aller möglichen Regelwerke ergibt sich aus der Anzahl der Möglichkeiten, Ziffern zwischen 0 und 8 vor und nach dem Schrägstrich auszuwählen. Insgesamt sind daher $ {2^{9}}\cdot {2^{9}}=2^{18}=262144 $ Regelwerke denkbar, von denen die meisten jedoch uninteressant sind. Einige der interessanteren werden im Folgenden beschrieben.
Die 3/3-Welt
Statische Objekte: Bisher eines, nämlich der schon erwähnte 2*2-Block:
Der der Conway-Welt zugeschriebene Block ist tatsächlich ein 3/3-Objekt, denn jede Zelle dieses Blocks hat 3 Nachbarn, und darum ist die Zwei-Nachbarn-Regel uninteressant.
In der 3/3-Welt gibt es zum Beispiel diese oszillierenden Objekte:
Alle diese Objekte außer Unruhe(1) funktionieren auch in allen möglichen Variationen von Regelwelten bis 345678/3, also auch in den 34/3- und 35/3-Regelwelten. Unruhe(1) funktioniert in allen Variationen, in denen 3/3 enthalten ist und 0/0124 nicht, und damit auch in der Conway-Welt (23/3). Solche Objekte kann man als Wanderer bezeichnen.
Die meisten Objekte können in dieser Regelwelt allerdings nicht überleben, so dass sich das Spielfeld bei zufälligen Startbedingungen meistens innerhalb von ein paar wenigen Generationen bis auf ein paar wenige Teile komplett leert.
Die 13/3-Welt
Dies ist eine Regelwelt mit wenigen oszillierenden Objekten. Die meisten Objekte sind "verkrüppelt".
Wenigstens die drei folgenden, oszillierenden Objekte gibt es:
Als eine Variante der 13/3-Regelwelt kann man die 135/35-Regelwelt betrachten.
Die 34/3-Welt
Oszillierende Objekte der 34/3-Welt:
Neben Strange und Frosch kommen auch die 3/3-Objekte Pedal, Kegel, Unruhe(1) und Strudel vor.
Die 35/3-Welt
In der 35/3-Welt gibt es zum Beispiel diese drei sich bewegenden Objekte:
Schwimmer(1) und Schwimmer(2) |
35/3-Segler |
Ebenso wie in der 34/3-Regelwelt kommen die oszillierenden Objekte Pedal, Kegel, Unruhe(1) und Strudel in der 35/3-Regelwelt vor.
Die 2/3-Welt
Diese Regelwelt hätte eigentlich an die erste Stelle gehört, da sie ein wichtiges, oszillierendes Objekt enthält, das eigentlich der 23/3-Welt, also Conways Life zugeordnet wird, zu der es kompatibel ist:
Damit existieren wenigstens drei oszillierende Objekte, inklusive Unruhe(1), die fälschlicherweise exklusiv Conway's Game of Life (23/3) zugeordnet werden.
Die 24/3-Welt
statische Objekte:
oszillierende Objekte:
Die 245/3-Welt
Neben den oszillierenden Objekten, die auch in der 24/3-Regelwelt vorkommen, existieren hier auch noch ein paar andere oszillierende Objekte:
Das besondere aber ist das Vorkommen eines sich bewegenden 7-Zyklen-Objekts, das in seiner Art der Bewegung einer Qualle ähnelt:
Die 125/36-Welt
In der 125/36-Regelwelt existieren diese beiden oszillierenden Strukturen:
Antiwelten
Zu jeder Regelwelt gibt es eine Antiregelwelt, in der Form, dass alles invertiert ist. Also alle Zellen, die sonst tot sind, leben, und alle Zellen, die sonst leben, sind tot. Dies zeigt sich im Ablauf durch ein schwarzes Feld, auf dem die Strukturen weiß sind.
Um eine solche Antiregelwelt zu erzeugen, kann man die Regeln in Form eines Schalterfeldes darstellen:
0 1 2 3 4 5 6 7 8 G T
- G steht für Geburt.
- T steht für Tod.
Die folgende Belegung bedeutet, dass bei drei Nachbarn eine tote Zelle lebendig wird und eine lebende Zelle bei keinem oder einem sowie bei vier bis acht Nachbarn stirbt und ansonsten der Zustand einer Zelle unangetastet bleibt:
Conway-Regeln 0 1 2 3 4 5 6 7 8 G T
Wenn man die Zustände des Schalterfelds um 180° rotiert (nicht spiegelt oder kippt), erhält man die Antiregeln:
Anti-Conway-Regeln 0 1 2 3 4 5 6 7 8 G T
Alternative Regel-Bezeichnung
Regel-Bezeichnung | Kommentar | |
---|---|---|
3/3 | G3 | |
13/3 | 1G3 | |
23/3 | 2G3 | Conways Original-Game of Life |
34/3 | 4G3 | |
35/3 | 5G3 | |
236/3 | 26G3 | explodierend, teilweise mit den Strukturen aus 23/3 |
135/35 | 1G35 | erweitertes 13/3 |
12345/3 | 1245G3 | eine Welt, in der ein sich ausbreitendes, labyrinthartiges Muster entsteht |
1357/1357 | G1357 | ein Kopiersystem, wobei sich aus einfachen kleinen Strukturen komplexe Muster entwickeln können |
24/35 | — | |
0123/01234 | — | eine blinkende Fleckenwelt |
Anti-Regeln | Kommentar | |
---|---|---|
01234678/0123478 | 6G0123478 | Anti-Conway |
01234678/0123678 | 4G0123678 | Anti-4G3 |
02468/02468 | G02468 | Anti-Kopiersystem |
Ineinander übergehende Regelwelten
Denkbar sind "Game of Life"-Simulationen, bei denen abgegrenzte Bereiche (zum Beispiel linke und rechte Seite) jeweils einer anderen Regelwelt unterzogen werden. Dabei könnte man sich bewegende Wanderer, die in beiden Regelwelten existieren können, aufspüren.
Beispielimplementierung in Haskell
Eine Beispielimplementierung in Haskell benötigt ca. 30 Zeilen: <syntaxhighlight lang="haskell"> module Main where import Data.List (intersect) import Control.Concurrent (threadDelay) type Coordinate = (Int, Int) data Board = Board { aliveSpaces :: [(Int, Int)], xVal :: Int, yVal :: Int} main :: IO () main = life (Board ([(1,0),(2,1),(0,2),(1,2),(2,2)]++
[(x,15)|x <- [41..50],x/=43,x/=49]++[(x,10) | x <- [10..13]]++ [(x,y) |x<- [43,49], y <- [14,16]]) 80 23)
life :: Board -> IO () life b = putStr "\ESC[2J" >> print b >> threadDelay 25 >> life (nextStage b)
instance Show Board where
show b = let lat = x <- [0..xVal b -1 | y <- [0..yVal b -1]] showSpace b s | s `elem` aliveSpaces b = 'O' | otherwise = ' ' in unlines (map (map (showSpace b)) lat)
ns :: Board -> Coordinate -> [Coordinate] ns b t@(i,j) = let o = [(a,b) | a <- [i-1..i+1], b <- [j-1..j+1], (a,b) /= t] in
intersect (map (\(x,y) -> (x `mod` xVal b, y `mod` yVal b)) o) (aliveSpaces b)
nextStage :: Board -> Board nextStage b = let lat = [(x,y) | x <- [0..xVal b -1], y <- [0..yVal b -1]]
wba b s | length (ns b s) == 2 = s `elem` aliveSpaces b | length (ns b s) == 3 = True | otherwise = False in Board (filter (wba b) lat) (xVal b) (yVal b)
</syntaxhighlight>
Siehe auch
Das Hacker-Emblem nach Eric Steven Raymond ist der Gleiter aus Conways Game of Life.
- Ameise (Turingmaschine)
- Wator
- Künstliches Leben
- Wireworld
Einzelnachweise
- ↑ Conway’s game of life (in html 5) auf Math Fail
- ↑ Paul Rendell: A Turing Machine in Conway’s Game of Life, extendable to a Universal Turing Machine. Abgerufen am 9. Januar 2011.
- ↑ Turtles, all the way down. Or gliders. Or glider turtles. Blogpost über Selbstsimulation mit Video
- ↑ http://otcametapixel.blogspot.de/
Weblinks
- Ausführliches Wiki über Conway's Game of Life
- Ausführlicher Objektkatalog (statische, oszillierende, bewegende)
Simulationen
- Eine Implementierung von Conway's Game of Life in C#
- Kai Franz. Dokumentation/Quellcode eines 3d game of life innerhalb eines 2.5d zellulären Automaten
Java- und JavaScript-Applikationen