Partie I. Générateur Pseudo Aléatoire : Automate Cellulaire
Il existe différentes méthodes pour générer des séquences pseudo-aléatoire de nombre. La plus connue est la
méthode basée sur une boucle fermée d’un registre à décalage sur lui même suivant un polynôme générateur. Ici,
nous allons utiliser une seconde technique basée sur les automates cellulaires. Avant de coder en VHDL cet
automate, une brève introduction est donnée ci-dessous.
Le nom d’automate cellulaire peut sonner comme une oxymore. D’un côté le mot ‘automate’ suggère l’artificiel,
la mécanique, le logique, le déterminisme et de l’autre côté le mot ‘cellulaire’ renvoie au naturel, à la biologie et
au vivant et donc à l’imprévisible. Comment deux concepts aussi opposés peuvent-ils s’associer au sein d’un
même nom pour désigner un objet ?
Dans les années quarante, le mathématicien Stanislas Ulam donna naissance aux
automates cellulaires en modélisant la croissance des cristaux sur une grille. Son
point de départ était un quadrillage, soit un espace à deux dimensions définissant
un nombre fini de cases ou de cellules. Chacune des cellules était booléenne :
allumé ou éteint. A l’état de départ, t0, certaines cellules de façon arbitraire étaient
allumées. A partir de cette configuration initiale, les états des cellules évoluaient
en fonction de règles de voisinage entre cellules. Par exemple, si une cellule
donnée était en contact avec deux cellules allumées, alors elle s'allumait, sinon elle
s'éteignait. Ces mécanismes simples permettaient de générer des figures
complexes qui, dans certains cas, pouvaient se répliquer.
Dans les mêmes années, John Von Neumann, un collègue de Ulam, travaillait sur les mécanismes
mathématiques de machines auto-réplicatives, c'est-à-dire des machines capables de produire une copie d’elle-
même.
"... living organisms are very complicated aggregations of elementary parts, and by any reasonable theory of
probability or thermodynamics highly improbable. That they should occur in the world at all is a miracle of the
first magnitude; the only thing which removes, or mitigates, this miracle is that they reproduce themselves.
Therefore, if by any peculiar accident there should ever be one of them, from there on the rules of probability do
not apply, and there will be many of them, at least if the milieu is reasonable."
John Von Neumann, Theory of Self-Reproducing Automata.
source : The artificial Self-replication page by Moshe Sipper.
A partir des travaux de Ulam, John von Neumann construisit une première implémentation de l’auto
reproduction. Ulam avait conçu des programmes intégrant des règles simples qui permettait la génération de
motif auto-reproductif et John Von Neumann inventa alors le Kinématon. Le ‘Kinématon est un automate
cellulaire bidimensionnel intégrant environ 200.000 cellules à 29 états, avec un voisinage de 5 cellules (1 cellule
cible + 4 voisines). L’objectif de Von Neumann au travers le Kinématon était de réaliser un constructeur
universel, capable de répliquer à l’identique toute structure dont on lui a donné le plan.
Un automate cellulaire se caractérise par 4 paramètres :
• Sa dimension : un automate cellulaire est le plus généralement 1D (ligne), 2D (matrice), ou de
dimension N. Toutes les cellules qui constituent l’automate sont mises à jours de manière synchrone.
• Le voisinage d’une cellule : celui-ci détermine le nombre de cellules qui participeront à la détermination
de l’état futur de la cellule en cours d’étude. Dans le cas d’une ligne, une cellule possède un voisinage
de deux. Ces deux cellules détermineront l’état de cellule centrale à l’instant t+1. Toutes les cellules
utilisent les mêmes règles pour déterminer leur état suivant.
• Son Alphabet ou espace d’état : Cet alphabet correspond à l’ensemble de tous
les états qu’une cellule peut prendre. Le plus souvent ils sont Booléen (2 états) mais il
existe des exemples d’automates cellulaires ou l’alphabet est supérieur à 2, comme dans
le cas du Kinématon.
• Sa fonction de transition : elle correspond aux règles de passage d’un état présent à un état futur d’une
cellule en fonction de son voisinage. Le nombre de fonction de transition correspond au nombre de
voisinage à la puissance nombre de configuration de voisinage.