Je sais qu'Oxmo est surtout un forum technique, mais je me suis dit que le sujet vous intéresserait peut-être.
Il s'agit en effet d'informatique théorique, et accessoirement de mon futur thème de recherche. Comme je passe pas mal de temps dessus, je me suis dit que ça pourrait être rigolo de vous exposer ça, histoire de faire un peu partager ce sujet passionant et aussi de voir si je suis capable de bien vulgariser la chose.
En très bref, les automates cellulaires sont surtout connus par l'intermédiaire du Jeu de la Vie de John Conway. On peut les voir comme un modèle de calcul (à la manière des machines de Turing, pour ceux qui connaissent) ou simplement comme des choses qui font des jolis dessins.
L'idée est la suivante : on se donne un grille (infinie ou juste torique) de dimension d et un ensemble d'états Q = {q1, q2,... qn}. Chaque élément de la grille est une "cellule" qui peut se trouver dans un des états de Q. A chaque instant t, on applique un jeu de règles pour déterminer le nouvel état de chaque cellule. Ces règles dépendent de l'état des voisins de la cellule considérée.
Le jeu de la vie, par exemple, utilise une grille torique de dimension 2 (donc un plan) et deux états. Le voisinage considéré est celui des 8 cases voisines. Si une cellule dans l'état 1 a deux ou trois voisins dans l'état 1, elle reste dans cet état, sinon elle passe à l'état 0. Si elle est dans l'état 0 et a exactement 3 voisins, elle passe dans l'état 1, sinon reste dans l'état 0.
Il y a de nombreuses pages sur le jeu de la vie,
en voici une en français.
Un autre exemple, plus intéressant, est celui de l'automate 110 (selon la numérotation de Wolfram). Cette fois en dimension1, donc une ligne, ce qui permet de placer son évolution temporelle sur le diagramme. On a toujours 2 états, 0 et 1, et le voisinage est simplement : {cellule à ma gauche, moi-même, cellule à ma droite}. Si on écrit 110 en binaire et qu'on trie lexicographiquement les voisinages, cela nous donne le jeu de règles, soit :
000 -> 0
001 -> 1
010 -> 1
011 -> 1
100 -> 0
101 -> 1
110 -> 1
111 -> 0
Ce qui est proprement surprenant, c'est qu'on arrive à générer des comportement extrêmement complexes avec ces règles aussi simples et des conditions initiales qui le sont tout autant.
Un exemple d'évolution de 110 :
et
Il a été démontré très récemment que 110 était intrinsèquement universel, ce qui veut dire qu'il peut simuler n'importe quel autre automate cellulaire unidimensionnel.
Selon les intérêts soulevés, je peux développer beaucoup sur les différents détails ou clarifier tout ce qui n'est pas clair dans la courtissime présentation ci-dessus (mais dites-moi si vous ne comprenez pas, et ce que vous ne comprenez pas !). Un jeu de transparents est également à l'étude.