Tas de sable et criticalité auto-organisée

L’algorithme de « combustion » ou comment tester si une configuration est récurrente

Il semble a priori difficile de déterminer si une configuration est récurrente ou non. Mais D. Dhar a trouvé un algorithme simple pour le déterminer. Cet algorithme équivaut à tester si la configuration donnée contient des sous-configurations dites « interdites ». Le lecteur peut deviner qu’il existe en effet des sous-configurations qui ne vont jamais être créées par additions de grains et relaxations, à moins qu’elles ne soient présentes dans la configuration initiale. Voici quelques exemples :

Exemples de sous-configurations impossibles dans une configuration récurrente

Il est possible de démontrer qu’une configuration est récurrente si et seulement si elle ne contient aucune configuration interdite.

L’algorithme de combustion est le suivant :
On choisit arbitrairement une case qu’on « brûle » si le nombre de grains qu’elle contient est supérieur ou égal au nombre de ses voisins non brûlés.
Une case qui se trouve dans un coin a deux voisins. Une case qui se trouve au bord mais pas dans un coin en a trois et une case qui n’est pas sur le bord en a quatre.
On peut commencer par tester les cases du bord puis continuer récursivement vers le centre du quadrillage.

Exemple de test de combustion
Exemples de configurations récurrentes

On peut démontrer qu’une configuration est récurrente si et seulement si on peut brûler toutes les cases.
La simulation ci-dessus permet d’appliquer l’algorithme de combustion.
Demandez d’afficher le test de combustion, et essayez de trouver une configuration récurrente. Quand une case peut être « brulée » elle apparaît en vert. Commencez par une grille 3x3, puis augmentez la taille de la grille.