dimanche 30 août 2009

Le jeu de la vie éternelle

Vous connaissez sans doute le célèbre jeu de la vie. Il s'agit d'un automate cellulaire illustrant comment l'évolution déterministe, mais chaotique, d'un système est susceptible de générer des structures particulières. Les règles de base sont très simple : une cellule vivante survivra si elle est entourée de 2 ou 3 voisines vivantes, sinon elle mourra. Une cellule morte renaitra uniquement si elle est entourée de 3 voisines vivantes. A partir de ces règles et de conditions initiales aléatoire, il est possible d'observer un foisonnement de formes dont l'évolution semble imprévisible.

Le problème du jeu de la vie, c'est qu'il finit par s'essouffler : après un certain nombre d'itérations, seules restent quelque formes basiques dont l'évolution est périodique ou nulle. Tout se passe comme si le hasard des conditions initiales avait été consommé au cours des itérations.

Je me suis demandé s'il était possible de rendre le jeu de la vie éternel en "nourrissant la bête", c'est à dire en introduisant de légères fluctuations aléatoires dans les états des cellules. C'est effectivement le cas. Après avoir réalisé une simulation, je constate qu'une forme simple soumise à des fluctuations permet de générer plusieurs formes simples... Ce qui laisse penser que le jeu ne se terminera jamais.

Le principe est le suivant : chaque cellule possède un état correspondant à un nombre réel entre 0 et 1. Le nombre de cellules voisines est calculé en effectuant la somme des états voisins. Les régles de survie et de renaissance sont simplement adaptées en utilisant non pas des valeurs discrètes (2 ou 3) mais des intervalles de valeurs (entre 1.5 et 3.5). Elles sont ensuite appliquées, et pondérées suivant l'état de la cellule avec la formule d'évolution suivante :

Etat(t+1) = survie(voisins(t)) * Etat(t) + renaissance(voisins(t)) * (1 - Etat(t))

Jusqu'ici nous aboutissons à un fonctionnement strictement identique au jeu de la vie classique, dans le cas ou les états vaudraient soit 1 soit 0. Il s'avère d'ailleurs que les états intermédiaires finissent par disparaitre. Mais la principale différence est qu'il est possible d'introduire des fluctuations : soit dans le décompte des cellules voisines, soit dans l'état de chaque cellule. Or en introduisant de telles fluctuations (de l'ordre de 0,03 à chaque itération), on observe que le jeu de la vie ne s'arrête jamais...

Il est intéressant de constater que si ces fluctuations sont trop importantes, elles finissent par détruire entièrement le système est on aboutit à un écran noir. La vie éternelle n'est possible que si les fluctuations sont suffisamment faibles. D'autre part ces fluctuations ne sont pas suffisantes pour faire émerger spontanément de nouvelles formes. Si on les augmentes suffisamment pour qu'elles le soient, on obtient un système aléatoire relativement peu intéressant : les structures typiques du jeu initial n'y apparaissent pas.

La leçon de tout ceci, c'est que ce ne sont pas tant les lois déterministes, aussi non-linéaire soient-elles, qui conduisent aux phénomènes chaotiques que leur conjugaison avec le hasard.

Un applet Java conçu par mes soins qui permet de simuler différentes formes du "jeu de la vie" est disponible ici.