An Stelle eines echten Organismus wurden kleine Programme verwendet, die sich selbständig vermehren können. Diese Programme können aber nur „überleben“, wenn sie bestimmte Rechenaufgaben lösen, weil sie für jede richtige Lösung „Futterpunkte“ erhalten. An Stelle von molekularbiologischen Codons der DNA besteht das Genom der Programme aus einfachen mathematischen Befehlen, von denen es 26 verschiedene gibt. Durch eine Zusammensetzung solcher einfacher Befehle entstehen sogenannte Boolesche Funktionen. Diese erzeugen bei Eingabe von zwei Werten, die beide entweder 0 („nein“) oder 1 („ja“) sein können, wiederum eine 0 oder 1 als Ausgabe. Insgesamt gibt es nach Regeln der elementaren Algebra nur 16 Boolesche Funktionen mit unterschiedlicher Bedeutung wie etwa „und“ und „oder“. Die Länge der Befehlsfolgen ist jedoch nicht begrenzt. Somit kann jede der 16 Bedeutungen auf viele verschiedene Weisen dargestellt werden. Wenn man zur Verdeutlichung anstelle von Ausdrücken mit „und“ und „oder“ einmal Ausdrücke mit + und – betrachtet, kann man zum Beispiel die beiden Ausdrücke a+b und a+b+a–a miteinander vergleichen. Die beiden Ausdrücke sind zwar unterschiedlich lang, bedeuten aber genau das gleiche, da sich +a und –a im zweiten Ausdruck aufheben und so der Wert des ersten Ausdrucks übrig bleibt. Jede arithmetische Funktion mit a und b kann also auf mehrere, ja sogar beliebig viele Weisen dargestellt werden. Dabei bleibt die Funktion immer die gleiche, und nur die Länge der Darstellung ändert sich. Genau so gibt es auch für die 16 verschiedenen Booleschen Funktionen unendlich viele (beliebig lange) Darstellungen durch Befehlsfolgen.
Die Unterscheidung zwischen der Darstellung einer Funktion durch Befehlsfolgen und der Funktion selbst ist ein ganz wesentlicher Gesichtspunkt in der Programmierung; und sie ist ebenfalls wesentlich für die Molekularbiologie, da nicht schon die Folge der Aminosäuren in einem Eiweiß (Syntax), sondern erst deren physiologischer Effekt (Semantik) eventuell einen Vorteil oder Nachteil für ein Lebewesen darstellt. Derselbe Effekt kann im Prinzip zudem von ganz unterschiedlichen Eiweißen erzielt werden, deren Aminosäuren-Folgen äußerlich keinerlei Ähnlichkeit erkennen lassen.
Zu Beginn der Experimente nach Lenski et al. enthält jedes Genom 50 einfache Befehle, deren Abfolge noch keine solche Funktion darstellt, und außerdem 15 Codons, die für die Vervielfältigung des Genoms zuständig sind. Durch Änderungen im Genom eines solchen Programms entstehen nach einigen Generationen neue Folgen von elementaren Befehlen, die schließlich die beschriebenen Booleschen Funktionen ausdrücken können. Unter den 16 genannten Booleschen Funktionen wurden 9 von den Forschern für hinreichend wichtig gehalten, um ihre Entstehung zu belohnen. Wenn ein virtueller Organismus eine dieser 9 Funktionen richtig ausführen kann, bekommt er „Futterpunkte“ und überlebt so leichter als andere virtuelle Organismen, die das nicht können.
Die komplizierteste Funktion, die von Lenski et al. durch diese „virtuelle Evolution“ erzeugt wird, entspricht in der üblichen Sprache der Aussagenlogik dem Ausdruck „a und b oder nicht a und nicht b“. Es handelt sich um die sogenannte Boolesche Äquivalenz-Funktion (Equ). Das System von Lenski belohnt auch schon Teilergebnisse auf dem evolutiven „Weg“ zu einer Darstellung dieser Funktion durch einen selektiven Vorteil. |
|