The Game of Life, nur ein Spiel?

 
WEITER LESEN
The Game of Life, nur ein Spiel?

Spiel und Mathematik sind oft zwei Seiten derselben Medaille. Man kann Mathematik
spielerisch betreiben und in vielen Spielen verbirgt sich mathematischer Sprengstoff.
John Horton Conway, ein bekannter Mathematiker an der Universität von Cambridge
hat nach wichtigen Arbeiten in der Gruppentheorie im Jahre 1968 das Spiel des Le-
bens - the Game of Life - veröffentlicht. Es ist ein Spiel mit einfachen Regeln, das
Generationen begeistert hat [Gar87] und als die Mutter der ständig wachsenden
Klasse von Simulationsspielen gelten kann. Bei näherem Hinsehen entwickelt dieses
Spiel eine ungeahnte Tiefe bis hin zur Simulation eines universellen Computers in
der Art einer Turing Maschine, wovon in Kapitel 6 ausführlich die Rede sein wird.

1 Die Spielregeln

Das Spiel ist eine Analogie zum Aufstieg und Untergang lebender Organismen; des-
wegen wurde es von seinem Erfinder auch Life genannt. Die Grundidee ist, dass
man den Lebensraum als ein beliebig großes Spielfeld mit (beispielsweise) recht-
eckigen Feldern darstellt, die dann von „Individuen“ in Form von Spielmarken besetzt
werden können. Die Entwicklung einer vorgegebenen Ausgangspopulation von Indi-
viduen (also ein anfängliches Muster von auf dem Brett verteilten Spielmarken) wird
nun von „genetischen Gesetzen“ bestimmt, die Geburt, Tod und Überleben regeln.
Die genetischen Gesetze wurden von Conway so gewählt, dass sie folgende Bedin-
gungen erfüllen:
• Es sollte nach Möglichkeit keine Ausgangspopulationen geben, die im Laufe ihrer
  Entwicklung zu einer unendlichen Anzahl von Individuen führt.
• Es gibt Ausgangspopulationen, die sich über viele Generationen hinweg zu kom-
  plexen Strukturen mit sehr vielen Einzelindividuen entwickeln.
• Bei Beginn des Spiels gewählte Ausgangspopulationen sollten im Laufe ihrer Ent-
  wicklung eines der folgenden Schicksale erleiden:
  ∗ Sie sterben aus;
  ∗ sie gehen in eine stabile, sich nicht mehr verändernde Population über;
  ∗ sie gehen in einen oszillierenden Zustand über, bei dem sich bestimmte
    Muster zyklisch endlos wiederholen.
Die von Conway aufgestellten genetischen Regeln lauten:
• Das rechteckige Spielfeld wird mit Spielmarken vorbesetzt.
• Jede Spielmarke mit zwei oder drei Nachbarn überlebt und bleibt für die nächste
  Generation erhalten.
• Jede Spielmarke mit vier oder mehr Nachbarn stirbt an Überbevölkerung, d.h. sie
  wird in der nächsten Generation vom Spielfeld entfernt.
• Jede Spielmarke mit nur einem oder gar keinem Nachbarn stirbt an Einsamkeit,
  d.h. sie wird in der nächsten Generation vom Spielfeld entfernt.
• Auf jedem leeren Spielfeld, das von genau drei Nachbarn umgeben ist, wird in der
  nächsten Generation eine Spielmarke „geboren“. Alle anderen leeren Spielfelder
  bleiben leer.
Es ist wichtig, dass bei jedem Generationswechsel zunächst alle Spielmarken und
alle leeren Spielfelder bewertet werden. Erst wenn diese Bewertung abgeschlossen
ist, dürfen Spielmarken entfernt oder hinzugefügt werden. Diese Prozedur wird dann
zur Erzeugung der jeweils nächsten Generation immer wieder aufs Neue durchlau-
fen.
Diese Regeln vermeiden die beiden Extreme, dass es sehr viele Muster gibt, die
schnell ins Grenzenlose wachsen und dass es sehr viele Muster gibt, die rasch aus-
sterben. Conway vermutete zunächst, dass mit diesen Spielregeln ein unendliches
Wachstum von Populationen unmöglich sei. Er setzte sogar einen Preis von 50,- Dol-
lar für den Beweis oder die Widerlegung dieser Vermutung aus. Schon Ende 1970
ging der Preis an eine Forschergruppe am MIT (Massachusetts Institute of Techno-
logy). Diese Gruppe entdeckte eine als Gleiterkanone bezeichnete oszillierende
Struktur, die nach jeweils 30 Generationen einen aus 5 Marken bestehenden Gleiter
ausstößt, der sich dann fortbewegt. Neben den stabilen und zyklischen Populationen
gibt es also tatsächlich entgegen Conways ursprünglicher Ansicht Populationen die
unbegrenzt wachsen können.
Bevor näher auf Gleiter, Gleiterkanonen und andere Strukturen eingegangen wird,
sollen zunächst einige einfache Ausgangspopulationen und deren Entwicklung unter-
sucht werden.

2 Die Entwicklung einfacher Populationen

Es ist unmittelbar einsichtig, dass Populationen, die aus nur einer oder zwei Marken
bestehen, bereits in der nachfolgenden Generation aussterben. Doch bereits bei Po-
pulationen mit drei Marken treten zwei typischen Eigenschaften des Game of Life zu
Tage: wie in Abbildung 1 dargestellt, kann ein stabiles und ein zyklisches Muster ent-
stehen, die als Block bzw. Blinker bezeichnet werden.

                      leer                                 leer                                leer

                      leer                                 leer                                leer

                                              stabil:
                     zyklisch:
                                              Block
                     Blinker

Abbildung 1: Die Abbildung zeigt die Schicksale aller Anfangspopulationen mit 3 Individuen, die nicht
im ersten Schritt verschwinden. Durch Rotation um 90°, 180° oder 270° aus den angegebenen Popu-
lationen hervorgehende Populationen wurden nicht mit aufgenommen.
Mit wachsender Anzahl von Spielmarken steigt die Anzahl möglicher Anfangspopula-
tionen exponentiell an. Besonders interessante Konfigurationen entstehen oft aus
Populationen, deren Spielmarken durch Turmzüge (nach Art des Schachspiels) ver-
bunden sind. Im Falle von vier Marken bezeichnet man sie als Tetrominos, für fünf
Spielsteine als Pentominos, für sechs als Hexominos etc. Abbildung 2 zeigt das
Schicksal aller Tetrominos. Man findet dabei ein neues stabiles Muster, den Bienen-
stock, sowie eine neue oszillierende Struktur, die aus vier Blinkern bestehende Ver-
kehrsampel.

        stabil                             stabil:                                                     stabil:
                                           Bienenstock                                                 Bienenstock

Abbildung 2: Die Schicksale aller Tetrominos.                   Zyklisch: Verkehrsampel

Bereits bei der Untersuchung der Pentominos zeigt es sich, dass eines davon, näm-
lich das r-Pentomino, eine derart komplexe Entwicklung durchläuft, dass eine voll-
ständige Darstellung auf Papier nicht mehr sinnvoll ist.

                                                                                                            zyklisch

                                                         leer

                                                                                     Das r-Pentomino geht nach 1103
                                                                                     Generationen in etliche einfache
                                                                                     stabile und oszillierende Muster
                                                                                     über. Außerdem wurden sechs
                                        leer
                                                                                     Gleiter ausgestoßen, die sich
                                                                                     seitlich wegbewegen.
Abbildung 3: Die Schicksale einiger Pentominos.
Neben den schon beschriebenen stabilen Mustern Block und Bienenstock sind noch
zahlreiche weitere bekannt. Man bezeichnet diese stabilen Strukturen auch als
Stilleben. Einige davon sind in Abbildung 4 zusammengestellt.

  Block          Wanne                          Boot

Bienenkorb       Schiff           Kanalboot   Flugzeug-    Schlange
                                                träger

  Laib          Langboot      Angelhaken       Lange
                                              Schlange
                                                                                         See

  Teich         Langes             Langes     Knüppel     Sinkendes        Hut           Honigwabe
               Kanalboot           Schiff                   Schiff

Abbildung 4: Es sind alle stabilen Muster (Stilleben) mit 4, 5, 6 und 7 Marken angegeben. Von den 9
Stilleben mit 8 Marken sind nur fünf gezeigt. Es gibt außerdem 10 Stilleben mit 9 Marken, 25 mit 10
Marken, 46 mit 11 Marken, 121 mit 12 Marken und 149 mit 13 Marken. Als Beispiele für größere Stille-
ben sind der Hut mit 9, die Honigwabe mit 12 und der See mit 24 Marken aufgeführt.

Man beachte, dass der Angelhaken als einziges der dargestellten Stilleben keinerlei
Symmetrie aufweist. Man erkennt auch leicht, dass Strukturen wie Boot, Schiff, Ka-
nalboot, sinkendes Schiff, Schlange und See durch Verlängern der diagonalen Antei-
le beliebig vergrößert werden.
Auch zyklische Strukturen treten häufig auf. Abbildung 5 zeigt die einfachsten.

             Blinker

                                                          Kröte                           Signalfeuer

                                                                      Abbildung 5: Die einfachsten
                                                                      zyklischen Muster mit Periode 2.
                  Verkehrsampel                            Uhr

Eine interessante zyklische Struktur ist das in Abbildung 6 gezeigte, mit Periode 4
rotierende Schaufelrad. Es ist das einfachste Beispiel für eine von Conway so getauf-
ten Billardtisch-Konfiguration. Bei diesen ist eine statische äußere Umrandung erfor-
derlich, um in ihrem Innern einen zyklischen Ablauf zu ermöglichen.
Abbildung 6: Das mit Periode 4 rotierende Schaufelrad ist die einfachste Billardtisch-Konfiguration.

3 Gleiter und Raumschiffe

Die einfachste translatorisch bewegliche Struktur ist der schon erwähnte Gleiter. Um
die Geschwindigkeit eines Gleiters einschätzen zu können, muss man sie zu der
höchstmöglichen Geschwindigkeit in Relation setzen. Diese wird für eine diagonale
Kette aus Spielmarken erreicht, die von den beiden Enden her bei jeder Generation
um eine Marke „abbrennt“. Da es sich hierbei um die prinzipielle Maximalgeschwin-
digkeit handelt, wird sie als Lichtgeschwindigkeit bezeichnet. Der Gleiter bewegt sich
mit einem Viertel der Lichtgeschwindigkeit in diagonaler Richtung, wie aus Abbildung
7 ersichtlich ist. Zur Berechnung der Geschwindigkeit eines beweglichen, sich selbst
reproduzierenden Musters teilt man die Anzahl der Felder, die es in einem Reproduk-
tionszyklus durchläuft, durch die Anzahl der dafür benötigten Generationen.

Abbildung 7: Der Gleiter bewegt sich mit einem Viertel der Lichtgeschwindigkeit diagonal nach rechts
unten. Nach vier Generationen ist er um ein Feld nach rechts und ein Feld nach unten vorangekom-
men (also um einen diagonalen Schritt) und hat sich in derselben Orientierung reproduziert. Die ande-
ren drei möglichen Bewegungsrichtungen erhält man durch Spiegeln des Gleiters.

Conway hat gezeigt, dass keine sich selbst reproduzierende Struktur schneller als
mit halber Lichtgeschwindigkeit über das Spielfeld wandern kann. Die einfachsten
Strukturen, die sich mit halber Lichtgeschwindigkeit waagrecht über das Feld bewe-
gen, sind die drei bereits von Conway gefundenen, in Abbildung 8 dargestellten
Raumschiffe. Sie lassen während ihrer Bewegung etwas Müll hinter sich, der sich
jedoch sofort wieder auflöst. Die von längeren Raumschiffen erzeugten Abgase gera-
ten jedoch in die Bahn des Raumschiffes und zerstören es. Durch eine Eskorte aus
kleineren Begleitschiffen kann dies vermieden werden.
Kleines Raumschiff

                                                               Übergewichtiges
            Mittleres                  Großes                  Raumschiff
            Raumschiff                 Raumschiff              mit Eskorte

Abbildung 8: Die Entwicklung des kleinen Raumschiffs (orthogonaler Gleiter). Nach vier Generatio-
nen hat es sich selbst reproduziert und eine Abgasmarke erzeugt. Es hat sich dabei um zwei Felder
nach rechts bewegt, seine Geschwindigkeit entspricht somit der halben Lichtgeschwindigkeit. Das
mittlere und das große Raumschiff bewegen sich ebenfalls mit halber Lichtgeschwindigkeit. Noch
längere Raumschiffe müssen durch eine Eskorte begleitet werden.

4 Zelluläre Automaten und Turing-Maschinen

Das Spiel des Lebens ist der berühmteste Vertreter der sogenannten zellulären Au-
tomaten. Ein zellulärer Automat besteht aus einem Feld von Zellen, die jeweils ver-
schiedene Zustände annehmen können und eine bestimmte Anzahl von Nachbarn
haben. Die Zustände der Zellen können sich dabei in einem vorgegebenen Zeittakt in
Abhängigkeit vom aktuellen Zustand und dem Zustand der Nachbarn nach festen
Regeln ändern. Die Idee zellulärer Automaten ist mindestens so alt wie die ersten
Computer. Bereits John von Neumann stellte dazu Anfang der 50er Jahre zusammen
mit Stanislaw Ulam Überlegungen an. Zunächst ging es um die Konzeption künstli-
cher, sich selbst reproduzierende Systeme, um damit einen der Aspekte biologischen
Lebens nachzubilden. Bevor darauf näher eingegangen wird, soll zunächst ein von E.
Fredkin um 1960 angegebenes Beispiel für einen zellulären Automaten vorgestellt
werden, der simple, sich selbst reproduzierende Strukturen hervorbringen kann. Er
ist durch die folgenden Regeln definiert:
Man geht wie beim Spiel des Lebens von einem Feld aus quadratischen Zellen mit
den beiden möglichen Zuständen „lebend“ und „tot“ aus. Jede Zelle mit keinem, zwei
oder vier lebenden direkten Nachbarn stirbt in der nächsten Generation oder bleibt
tot. Jede Zelle mit einem oder drei lebenden direkten Nachbarn bleibt am Leben oder
wird lebendig. Dabei gilt die von-Neumann-Nachbarschaft, bei der nur die vier direk-
ten, aber nicht die diagonalen Nachbarn berücksichtigt werden.
Die folgende Abbildung zeigt hierzu zwei Beispiele.
Abbildung 9: Zwei Beispiele zur Reproduktion von Konfigurationen. Nach jeweils vier Schritten hat
sich ein Ausgangsmuster viermal selbst reproduziert.

Von Neumanns Programm ging weit über diese einfache Reproduktion hinaus. Aus-
gehend von einem gleichmäßigem Zellraum, d.h. einem prinzipiell unbegrenztem
Spielfeld, zeigte er die prinzipielle Möglichkeit beliebig komplexer sich selbst repro-
duzierender Automaten. Von Neumann fand Übergangsregeln, die auf Zellen mit 29
Zuständen (also nicht nur zwei, wie beim Spiel des Lebens) wirkten und bewies da-
mit die Existenz eines aus über Hunderttausend Zellen bestehenden „universalen
Konstrukteurs“. Dieser ist in der Lage, beliebige Strukturen herzustellen, also insbe-
sondere auch sich selbst. Diese Universalität ließ sich nur dadurch erreichen, dass
von Neumanns zellulärer Automat in der Lage war, eine Turing-Maschine (vgl. Kapi-
tel 6) zu simulieren, mit der prinzipiell jede beliebige Berechnung durchgeführt wer-
den kann. Mittlerweile wurde dieser erste Ansatz von Neumanns stark vereinfacht.

Der britische Mathematiker Alan M. Turing setzte sich bereits vor der Konstruktion
des ersten Computers um 1940 mit den prinzipiellen Möglichkeiten und Grenzen von
Rechenmaschinen auseinander. Er zeigte, dass mit dem von ihm beschriebenen, als
Turing-Maschine bekannten abstrakten Schema jede Funktion berechnet werden
kann, sofern sie überhaupt berechenbar ist. Die Turing-Maschine ist in diesem Sinne
also das Konzept eines universellen Computers. Davon ausgehend lässt sich von
anderen Ansätzen beweisen, dass sie ebenfalls einen universellen Computer be-
schreiben, wenn man ihre Äquivalenz zur Turing-Maschine nachweisen kann.
Entgegen Conways anfänglicher Vermutung hat sich herausgestellt, dass sogar das
Spiel des Lebens mit seinen einfachen Regeln die Konstruktion eines Computers
erlaubt. Voraussetzung dazu war, dass man beliebig wachsende Muster erzeugen
konnte. Die von Conway festgesetzten Regeln waren ja gerade so gewählt, dass
grenzenloses Wachstum möglichst verhindert werden sollte. Nachdem W. Gosper
sich 1970 den von Conway ausgesetzten Preis von 50,- US Dollar verdient hatte,
indem ein Anfangsmuster aus lebenden Zellen vorgab, das ins Unendliche wachsen
konnte, war der entscheidende Schritt bereits getan. Das Ergebnis war die in Abbil-
dung 10 gezeigte Gleiterkanone, die nach jeweils 30 Schritten einen neuen Gleiter
aussendet und sich dabei wieder regeneriert. Zusammen mit den Gleitern bildet die
Gleiterkanone also eine endlos wachsende Population lebender Zellen.
Nach der Gleiterkanone wurden weitere ins unendliche wachsende Muster entdeckt,
beispielsweise die Raumschiff-Fabrik, die alle 300 Generationen ein mittelgewichti-
ges Raumschiff erzeugt.
Abbildung 10: Eine Gleiterkanone, die bereits drei Gleiter erzeugt hat. Die Gleiter bewegen sich nach
rechts oben, so dass ein kontinuierlich wachsender Strom von Gleitern entsteht.

Nachdem es nun möglich ist, mit einer Gleiterkanone einen kontinuierlichen Strom
aus Gleitern zu erzeugen, liegt es nahe, die Gleiter für die Codierung und Übertra-
gung von Nachrichten zu verwenden. Die Gleiter spielen also die Rolle der Bits in
einem Computer: Der Wert 1 entspricht einem Gleiter in einem Gleiterstrom, der
Wert 0 einem fehlenden Gleiter. Damit nun tatsächlich Rechenoperationen ausge-
führt werden können, müssen Verknüpfungen zwischen Gleitern definiert werden.
Die einfachste Operation ist das logische NOT, das der Auslöschung eines Gleiters
entspricht. Tatsächlich vernichtet ein Gleiter einen anderen vollständig, wenn man
zwei Gleiterströme im Winkel von 90 Grad aufeinander richtet. In ähnlicher Weise
lassen sich auch andere Verknüpfungen wie OR und AND realisieren.
Auch Speicher, bei denen die Lage von Viererblöcken den Speicherzustand bestim-
men, wurden bereits konstruiert. Durch Zusammenwirken mehrerer Gleiter können
diese Blöcke verschoben werden, was einer Manipulation der Speicherinhalte ent-
spricht. Soll nun eine bestimmte Aufgabe gelöst werden, so muss als Eingabe eine
bestimmte Anfangskonfiguration (die extrem komplex sein kann) vorgegeben wer-
den, die vor allem zahlreiche, passend positionierte Gleiterkanonen beinhaltet. De-
tails dazu sind in dem sehr lesenswerten Buch Winning Ways for Your Mathematical
Plays [Ber82] beschrieben.
Das Spiel des Lebens ist also in dem Sinne universell, als damit in der Tat ein Com-
puter simuliert werden kann. Rein theoretisch ist man also in der Lage, all das, was
ein Computer berechnen kann, auch mit dem Spiel des Lebens zu berechnen, wenn
auch mit einem in der Praxis unrealistischen Aufwand.
In diesem Zusammenhang stellt sich aber auch die Frage, ob denn jede beliebige
Konfiguration im Spiel des Lebens auftreten kann. Schon 1971 wurde von Roger
Banks eine als Paradies bezeichnete Konfiguration gefunden, die aus keiner An-
fangsstellung im Spiel des Lebens berechnet werden kann. Um zu zeigen, dass eine
Konfiguration tatsächlich keinen Vorgänger hat, muss man von einem Paradies-
Kandidaten ausgehend Rückwärtsschritte ausführen und dabei alle möglichen Vor-
gänger untersuchen. Da im Spiel des Lebens zwar jede Konfiguration nur einen
Nachfolger aber mehrere Vorgänger haben kann, ist der erforderliche Rechenauf-
wand ganz erheblich. So ist denn bis heute außer dem Banks-Paradies nur ein einzi-
ges weiteres bekannt.
Abbildung 11: Das Bild zeigt ein Muster, das innerhalb der Regeln des Game of Life nicht berechen-
bar ist. Für solche auch als „Paradies“ bezeichnete Muster existiert keine Anfangsstellung, aus der
heraus sich das gegebene Muster entwickeln könnte.

Ein Paradies hat also keinen Vorgänger oder „Vater“. Eine bis heute unbeantwortete
Frage ist, ob es Muster gibt, die zwar einen Vater, aber keinen Großvater haben.
Auch darauf hat Conway einen Preis von 50,- US Dollar ausgesetzt, der also noch
verdient werden will.
Zum Schluss nochmals ein Blick zurück auf von Neumanns universellen
selbstreproduzierenden Automaten. Da das Spiel des Lebens einen Computer
simulieren kann, muss auch Selbstreproduktion möglich sein. Conway geht noch
weiter, indem er postuliert, es sei „wahrscheinlich, dass in einem hinreichend großen
Lebensraum, der sich anfänglich in einem zufälligen Zustand befindet, nach langer
Zeit intelligente, selbstreproduzierende Spezies entstehen“. T. Toffoli, einer der
Pioniere in der Erforschung des Zusammenhangs zwischen Physik und
Informationswissenschaften sieht gar eine Analogie zwischen dem Spiel des Lebens
und der Evolution des Universums, wenn er schreibt: „In gewissem Sinne hat die
Natur über Jahrmilliarden immer nur den ‘nächsten Zustand’ des Universums
berechnet“. Es ist dies jedoch eine nicht allgemein geteilte Vorstellung, da hier das
Universum als streng deterministisch und berechenbar gedacht wird. Andererseits
legt die 1974 von Kenneth Wilson vorgeschlagene Gitter-Eichtheorie die Vorstellung
des Universums von einem gigantischen zellulären Automaten aus Elementarteilchen
nahe [Reb83].

5 Das Spiel des Lebens, nicht nur in der Ebene

Neben Conways bekanntester zweidimensionalen Version des Game of Life wurden
auch Varianten in nur einer Dimension oder in drei und mehr Dimensionen unter-
sucht.
Beschränkt man sich auf eine Dimension, so wird aus dem Spiel des Lebens ein li-
nearer zellulärer Automat [Hay84]. Die Population eines solchen Automaten besteht
in jeder Generation nur aus einer Linie mit toten oder lebenden Zellen. Zur Visualisie-
rung kann man die zu den einzelnen Generationen gehörenden Linien zu einem
zweidimensionalen Bild mit einer Zeitachse und einer Raumachse zusammenfügen.
Je nach den verwendeten Transformationsregeln bilden sich stabile, oszillierende
oder chaotische Zustände aus, die zu komplexen räumlichen und zeitlichen fraktalen
Mustern führen können. Gibt man ein Eingangsmuster vor und beobachtet dann des-
sen Entwicklung, so kann bei Transformationsregeln, die zu chaotischem Verhalten
führen, schon eine minimale Änderung der Anfangskonfiguration zu einer völlig ande-
ren Entwicklung führen. Bereits die folgenden einfachen Transformationsregeln füh-
ren zu einem derartigen Verhalten: Man betrachtet eine Nachbarschaft von fünf Zel-
len; die mittlere Zelle lebt weiter oder wird ins Leben gerufen, wenn zwei oder vier
der vier Nachbarzellen leben, ansonsten stirbt sie oder bleibt tot.
Lineare zelluläre Automaten weisen Parallelen zu komplexen, nichtlinearen Syste-
men und Selbstorganisationsprozessen auf. In Kapitel 12 wird davon wieder die Re-
de sein. Eindimensionale zelluläre Automaten zeigen eine vergleichbare Komplexität
wie das Spiel des Lebens und andere zweidimensionale zelluläre Automaten. Von
einem speziellen linearen zellulären Automaten wurde denn auch bereits bewiesen
[Hay84], dass er eine Turing-Maschine simulieren kann. Lineare zelluläre Automaten
sind damit die derzeit einfachste bekannte Struktur, die zu einem universellen Rech-
ner äquivalent ist. Interessant ist auch, dass lineare zelluläre Automaten, die zu ei-
nem stabilen oder oszillierenden Zustand konvergieren, durch eine besonders einfa-
che Klasse von formalen Sprachen, sog. reguläre Sprachen, beschrieben werden
können, die ihrerseits wieder äquivalent zu endlichen, deterministische Automaten
sind. Lineare zelluläre Automaten jedoch, die komplexes Verhalten zeigen, entspre-
chen auch komplexeren formale Sprachen, die über reguläre Sprachen bzw. deter-
ministische Automaten hinausgehen. Über diese Zusammenhänge wird in Kapitel 6
noch ausführlicher die Rede sein.
Ein andere Weg zur Erweiterung des Spiel des Lebens ist die Ausdehnung auf drei
oder noch mehr Dimensionen. Im dreidimensionalen Raum wird ein quadratisches
Feld zu einem Würfel mit 26 Nachbarn anstelle von 8. Entsprechend vielfältig sind
auch die möglichen Regeln die das Schicksal einer Ausgangskonfiguration bestim-
men. Um diese Vielfalt etwas übersichtlicher zu gestalten, hat sich eine abkürzende
Notation aus vier Ziffern eingebürgert:
• Die erste Ziffer legt fest, wie viele lebende Nachbarn eine lebende Zelle mindes-
  tens haben muss, damit sie nicht an Vereinsamung stirbt.
• Die zweite Ziffer legt fest, wie viele lebende Nachbarn eine lebende Zelle höchs-
  tens haben darf, damit sie nicht wegen Überbevölkerung stirbt.
• Die dritte Ziffer legt fest, wie viele lebende Nachbarn eine tote Zelle mindestens
  haben muss, damit sie zum Leben erwacht.
• Die vierte Ziffer legt fest, wie viele lebende Nachbarn eine tote Zelle höchstens
  haben darf, damit sie zum Leben erwacht.
Die Regeln für Conways ursprüngliches Spiel des Lebens lauten damit Life2333.
Die dreidimensionalen Varianten Life4555 und Life5766 wurden von Carter Bays nä-
her untersucht [Bay86]. Sie zeigen eine starke Ähnlichkeit mit Life2333, insbesonde-
re treten auch stabile sowie zyklische Strukturen wie Blinker auf und vor allem auch
dreidimensionale Gleiter.
6 Reversible zelluläre Automaten

Die bisher besprochenen zellulären Automaten arbeiten nicht reversibel, also nicht
umkehrbar. Das bedeutet, dass von einer bestimmten Konfiguration im Allgemeinen
nicht gesagt werden kann, wie die vorangegangene Konfiguration ausgesehen hat,
da eine gegebene Konfiguration meist auf vielen verschiedenen Wegen erreicht wer-
den kann. Bereits das weiter oben erwähnte Schicksal der Pentominos belegt dies
und erst recht die Schwierigkeit, von einem Muster nachzuweisen, ob es ein Para-
dies ist. Es ist jedoch durchaus möglich, Transformationsregeln zu finden, die nicht
nur in Vorwärtsrichtung deterministisch sind, sondern auch in Rückwärtsrichtung.
Das bedeutet, dass zu jeder Konfiguration eine eindeutige Vorgänger- und Nachfol-
ger-Konfiguration gehört. Als Konsequenz davon kann man einen reversiblen Auto-
maten jederzeit anhalten und rückwärts laufen lassen. Dabei nimmt er jeden durch-
laufenen Zustand in umgekehrter Richtung nochmals ein, so dass schließlich in end-
lich vielen Schritten die exakte Ausgangskonfiguration wieder erreicht wird. Ein Aus-
gangspunkt zur Konstruktion reversibler Transformationsregeln besteht darin, dass
man zur Berechnung einer Konfiguration zum Zeitpunkt t nicht nur die vorhergehende
zum Zeitpunkt t-1 heranzieht, sondern noch eine weitere Generation zum Zeitpunkt t-
2 [Hay84]. Wegen der Determiniertheit sowohl in die Zukunft als auch in die Vergan-
genheit kann es bei der Entwicklung der durch einen reversiblen Automaten erzeug-
ten Muster keine Verzweigungspunkte geben, also auch keine Attraktoren, da sich ja
im Widerspruch zur Reversibilität sehr viele Ausgangsmuster in ihrer Evolution zu
diesem Attraktor hinentwickeln müssten. Anders als in irreversiblen Automaten sind
also Attraktoren und damit auch Selbstorganisationsprozesse (siehe Kapitel 12) in
reversiblen Automaten ausgeschlossen. Daraus folgt ferner, dass ein reversibler Au-
tomat niemals in einen Zyklus geraten kann, andererseits aber auch einen Zyklus
niemals verlassen kann, wenn er sich von Anfang an aufgrund der Startkonfiguration
in einem Zyklus befindet.
Eine interessante und für die Theorie der Computer wichtige Eigenschaft reversibler
Automaten ist jedoch die Tatsache, dass die anfänglich vorhandene Information im-
mer erhalten bleibt, also weder zunehmen noch abnehmen kann. Dies wurde von
Fredkin und Toffoli [Fred82] in einem als Billardkugel-Modell bezeichneten Ansatz
genauer erforscht. Dabei geht man von einem idealisierten mechanischem System
aus, in dem „Billardkugeln“ reibungsfrei rollen und vollkommen elastisch miteinander
und mit den Begrenzungen stoßen. Das Vorhandensein bzw. Fehlen einer Kugel an
einer bestimmten Position zu einem bestimmten Zeitpunkt wird als Informationsein-
heit (Bit) mit dem Wert 1 bzw. 0 interpretiert. Damit kann man idealisierte reversible
logische Gatter konstruieren, die im Prinzip ohne Energieverbrauch arbeiten könnten.
Mit diesen Gattern wiederum lässt sich quasi als Gedankenexperiment ein reversib-
len Computer aufbauen, der Informationen verarbeiten kann, ohne dabei Energie zu
benötigen. Dieser Computer könnte eine die Eingangsdaten repräsentierende Zei-
chenkette schrittweise umformen, bis diese das gewünschte Ergebnis repräsentiert.
Danach würde derselbe Vorgang rückwärts ablaufen, d.h. die Ergebnis-Zeichenkette
würde wieder in die Eingabe-Zeichenkette rücktransformiert. In real existierenden
Computern geht ganz im Gegensatz zu diesen idealisierten Verhältnissen tatsächlich
Information verloren, und damit geht untrennbar nach den Gesetzen der Thermody-
namik bzw. der statistischen Physik ein Energieverlust einher (siehe Kapitel 10). Ins-
besondere beim Löschen von Information aus einem Speicher wird Energie dissi-
piert. Die Irreversibilität realer Computer geht bereits aus einer so simplen Aufgabe
wie der Berechnung 2+2=4 hervor: Nach Ermittlung des Ergebnisses „4“ werden die
beiden Operanden normalerweise gelöscht. Aus dem Ergebnis alleine ist aber nicht
mehr zu entnehmen, ob die ursprüngliche Aufgabe 2+2, 1+3 oder noch anders laute-
te.
Bemerkenswert ist nun, dass sich das Billardkugeln-Modell auf einen reversiblen zel-
lulären Automaten übertragen lässt. Die in Abbildung 12 gezeigten Transformations-
regeln gehen dabei jedoch nicht von einzelnen Zellen aus, sondern von Vierergrup-
pen.

                                              Ebenso rotierte                   Ebenso rotierte
                                              Konfigurationen                   Konfigurationen

Abbildung 12: Die Transformationsregeln für den Fredkinschen Billardkugeln-Automaten. Es werden
immer Gruppen von vier Feldern betrachtet. Änderungen ergeben sich offenbar nur bei Konfiguratio-
nen mit nur einem besetzten Feld, oder zwei diagonal besetzten Feldern.

7 Das Spiel des Lebens als C-Programm

Die Regeln des Spiels sind sehr einfach, infolgedessen ist es auch nicht besonders
schwierig, ein Programm zu schreiben, das die Entwicklung einer vorgegebenen Po-
pulation visualisiert. Im Folgenden ist ein entsprechendes C-Programm aufgelistet.
Damit kann auf einem vorgegebenen Feld von Zellen zunächst mit Hilfe der Cursor-
Tasten eine Ausgangspopulation von Individuen spezifiziert werden. Danach kann
Schritt für Schritt verfolgt werden, wie sich die Population verändert. Allerdings ist
wegen der Vermeidung von Grafik-Funktionen das Spielfeld relativ beschränkt.

//********************************************************************
// GAME OF LIFE nach Conway
// Regeln: Es wird ein rechteckiges Feld von Zellen betrachtet, die
// entweder tot sind (0) oder leben (1). Eine Zelle stirbt in der
// nächsten Generation an Einsamkeit, wenn weniger als zwei der acht
// nächsten Nachbarn leben. Sie stirbt an Überbevölkerung, wenn mehr
// als drei Nachbarn leben. Auf einem unbelebten Feld entsteht in der
// nächsten Generation eine neue lebende Zelle, wenn das Feld genau
// drei lebende Nachbar hat.
// Zur Vereinfachung der Abfrage der Nachbarn erhält das Spielfeld
// einen Rand mit 0en (=tot).
// Code: 0: tot
//       1: lebt
//       3: lebt in der nächsten Generation
//       4: stirbt in der nächsten Generation
//********************************************************************
#include 
#include 
#define DIM 23
#define ESC 27
#define CR 13
#define RUB 8
#define BLNK 32
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define BEEP printf("%c",7)     // Piepser
#define CLS printf("\x1b[2J")   // Bildschirm löschen (ANSI.SYS nötig)
// Cursor an Position (row,col) setzen. Ursprung (0,0) ist links oben
#define CURS(row,col) (printf("\x1b[%d;%dH",(row+1),(col+1)))
// Cursor auf (row,col) setzen und Rest der Zeile löschen
#define CLL(row,col) (printf("\x1b[%d;%dH\x1b[K",(row+1),(col+1)))

//----------------------------------------------------------------------
// Ein Zeichen von der Tastatur lesen und Tastatur-Puffer leeren.
// Beachte: Manche Sonderzeichen bestehen aus einem Null-Byte,
// gefolgt von dem eigentlichen Code des Zeichens.
// Rückgabewert: ASCII-Code des Zeichens
// oder -n für das Sonderzeichen mit Code n.
//----------------------------------------------------------------------
int getkey() {
  int i;
  do { if((i=getch())==0) i=-getch(); } while(kbhit());
  return(i);
}

//----------------------------------------------------------------------
// Hauptprogramm
//----------------------------------------------------------------------
void main() {
  int i, k, m, n=DIM-1, pos=2*DIM+2, it, c=CR;
  char a[DIM][DIM];                      // Spielfeld
  CURS(0,pos); printf("Game of Life\n");

 for(;;) {                               //***** Arbeitsschleife
   if(c==ESC) return;                    // Beenden
   if(c==CR) {                           //***** Spielfeld initialisieren
     for (i=0; iBLNK) { printf("#"); a[i][k]=1; }
       }
       CURS(i,2*k);
     }
     it=0;                               // Iterationszähler vorbesetzen
     c=BLNK;
     BEEP;
     CLL(2,pos); printf("Beenden:  \n");
     CLL(3,pos); printf("Neu:         \n");
     CLL(4,pos); printf("Weiter: \n");
     CLL(5,pos); CLL(6,pos);
   }
if(c==BLNK) {                        //***** Spielfeld ausgeben
          CURS(6,pos); printf("Iteration %d \n",it++);
          for (i=0; i
Sie können auch lesen