Le ``jeu de la vie'' est un exemple fameux d'automate cellulaire qui décrit l'évolution (naissance et mort) d'une population de cellules. Depuis le milieu de année 80, cette technique s'est beaucoup développée comme un outil de modélisation permettant une meilleures compréhension des phénomènes complexes.
Le système évolue dans le temps en fonction d'une règle choisie. A chaque itération, l'état de chaque site est modifié selon cette règle. Pour chaque site, la {\bf même} règle est appliquée {\bf simultanément}. Par définition, cette règle est une fonction qui ne dépend que de l'état des sites voisins.
Par exemple, si l'état des cellules est soit 0 soit 1, une règle possible serait: (1) on calcul la somme des états dans le voisinage immédiat de chaque site (soit les cellules au nord, nord-est, est, sud-est, sud, sud-ouest, ouest, nord-ouest, ainsi que la cellule elle-même). Pour chaque site cette somme est un nombre compris entre 0 et 9. (2) Si cette somme vaut 0,1,2,3 ou 5, la cellule correspondante prend 0 comme nouvelle valeur de son état. Si, au contraire, la somme vaut 4,6,7,8 ou 9, la cellule prend 1 comme nouvelle valeur. La figure suivante illustre le résultat de cette règle:
Evolution de l'automate cellulaire avec une règle de
majorité biaisée, avec une condition initiale aléatoire, avec
50% de site á 1. On observe la croissance de domaines de sites
dans le même état.
% Initialisation de la session clear close all % Taille de l'automate m=32; % initialisation aleatoire de l'automate avec des 0 et 1, avec probabilité 0.5 X=rand(m,m)>0.5; % evolution de la regle de majorite biaisee % N est la somme des valeurs des etats des voisins while any(any(X)) %%%%%%%%%%%% %% remplir ici le calcul de N = somme de X plus les 8 voisins %%%%%%%%%%%% X=(N==4) | (N>5); % mise a jour selon la regle de l'annealing % affichage pcolor(X) axis off image shading flat % removes the lattice drawnow endcorrigé
Le comportement de la fourmi de Langton est incroyablement complexe, comme le montre la figure suivante:
Mouvement de la fourmi de Langton. Les pixels blancs ou gris
indiquent la couleur de chaque case. La position courante de la fourmi
est donnée par le point noir.
Le conseil du hacker futé: Pour réaliser un affichage rapide, il faut n'afficher que les cases qui ont été modifiés.
clear all m=200; %taille du domaine fpos=[m/2 m/2]; %position courante %%%%%%%%%%%%%%%%%%% %% peut-etre d'autres declarations %%%%%%%%%%%%%%%%%%% X=zeros(m,m); % remplit X de zeros figure('Units','points','Position',[20 20 3*m 3*m]) %ouvre une figure, unites sont des points, %position sur l'ecran 20, 20; %taille 3*m par 3*m (si on fait m par m, c'est trop petit) axis([1 3*m 1 3*m]) axis manual %pour pas qu'il ne se recalcule automatiquement hold on while(1); %%%%%%%%%%%%%%%%% %% regles d'evolution de la position de la fourmi %%%%%%%%%%%%%%%%%%% %exemple d'affichage d'un carré blanc pour la position fpos(1) fpos(2) plot(3*fpos(1),3*fpos(2),'square','Color','w','erasemode','background','markersize',3) %affiche un carre blancde taille 3 par 3 , a la poistion courante %idem en bleu plot(3*fpos(1),3*fpos(2),'square','Color','b','erasemode','background','markersize',3) drawnow endcorrigé
Proposer une démonstration théorique, selon les indications suivantes: remarquez que les cases peuvent être réparties en des cases de type H dans lesquelles la fourmi pénètre horizontalement et des case de type V dans lesquelles la fourmi entre verticalement. Les cases H et V alternent, comme les cases d'un échiquier. Supposez que la fourmi ait un mouvement borné et considérez, par exemple la case en haut à gauche du domaine visité. Que peut-on conclure du mouvement de la fourmi si elle repasse plusieurs fois sur cette case. En déduire la réponse au problème du mouvement borné ou non.
Simuler le comportement de plusieurs fourmis placées aléatoirement dans le région centrale du domaine. Qu'ob\-servez-vous sur le temps de création de la première autoroute?
Est-ce les conclusions du problème III restent valables s'il y a plusieurs fourmis? Que se passe-t-il si, à un moment donné de la simulation, on renvoie toutes les fourmis dans la direction opposées? En déduire que des trajectoires périodiques à deux fourmis peuvent exister.