• Aucun résultat trouvé

Le jeu de la vie de Conway (*)

N/A
N/A
Protected

Academic year: 2022

Partager "Le jeu de la vie de Conway (*)"

Copied!
2
0
0

Texte intégral

(1)

Sujet 2

Le jeu de la vie de Conway (*)

1 Introduction

Le but de ce projet est d’étudier l’évolution d’une population d’individus dans ce qu’on appelle le jeu de la vie. Le jeu de la vie a été très populaire dans les années 1970-1980, en tant qu’exemple ludique d’automate cellulaireet d’application pratique de la micro-informatique alors en plein essort.

Il a été proposé par John Horton Conway, célèbre mathématicien britannique, en 1970.

Ce système dynamique obéit à des règles très simples. Il est donc extrêmement facile à programmer : – Il est défini sur un réseau à deux dimensions composé de mailles appelées cellules.

– Pour simplifier, les bords de ce réseau seront supposées périodiques.

– Il obéit à une dynamique à temps discret et l’état à un instant donné ne dépend que de l’état à l’instant précédent (pour la culture, on dit que la dynamique estmarkovienne).

Malgré cette simplicité, ce type de systèmes présente une très grande richesse de comportements qui a fait son succès.

2 Règles d’évolution

À un instant donné tn, chaque case peut prendre deux états possibles, 0 (morte) ou 1 (vivante) (d’où la dénomination de jeude la vie). L’état de chaque case à l’instanttn+1ne dépend que de celui de ses 8 plus proches voisines et d’elle-même à l’instanttn. Plus précisément, l’évolution d’une cellule dépend du nombre de cellules voisines qui sont vivantes :

– une cellule morte (état 0) à l’instanttn ne change d’état (devient vivante) à l’instanttn+1 que si elle possède exactement 3 voisines déjà vivantes ;

– une cellule vivante à l’instanttnne change d’état (meurt) à l’instanttn+1que si elle possède stric- tement moins de 2 voisines vivantes (elle meurt alors d’isolement) ou si elle possède strictement plus de 3 voisines vivantes (elle meurt alors de surpopulation.

Les mises à jour des cellules sont simultanées (et non pas séquentielles), c’est-à-dire qu’on ne remplace pas l’état d’une cellule par son état suivant avant d’avoir calculé les états suivants de toutes les cellules. Un exemple est donné sur la figure.

Nous allons dans la suite explorer la richesse des comportements observés en fonction de l’état initial à l’instantt0.

3 Travaux

• La figure 1 présente un exemple d’évolution sur un pas de temps. Vérifier à la main cet exemple et continuer à le faire évoluer sur plusieurs pas de temps. Dans ce cas précis, la population finit par complètement disparaître. Combien de pas de temps faut-il pour atteindre cet état ?

• Écrire un programme C qui permet de suivre l’évolution d’une population de départ au cours du temps.

7

(2)

Sujet 2. Lejeu de la vie de Conway (*)

1 1 1

1 1 !

1

1 1

1 1

tn tn+1

Figure1 – Exemple d’évolution entre deux instants successifs du jeu de la vie. Les 1 représentent les cases vivantes, les cases mortes sont laissées vides.

• La visualisation des résultats pourra dans un premier temps se faire en affichant les états succes- sifs dans un terminal xterm avec deux symboles différents pour les cellules mortes ou vivantes (par exemple un espace pour les cellules mortes et une étoile * pour les cellules vivantes).

Au besoin, on pourra utiliser la fonction delay(t)donnée en annexe pour ralentir l’affichage.

Une représentation graphique plus élaborée pourra éventuellement être envisagée dans un se- cond temps (par exemple en écrivant les valeurs dans un fichier et en utilisant la commande plot "fichier.dat" matrix with imagede gunplot).

• Le programme étant relativement simple à implémenter, on attachera une attention particulière à l’écrire de façon structurée, en faisant au maximum appel à des fonctions simples, par exemple une fonction voisins(i,j) qui calcule le nombre de cellules vivantes parmi les 8 voisines (at- tention aux conditions aux bords périodiques), ou encore une fonction soupe() qui crée une

“soupe” de cellules aléatoirement vivantes ou mortes dans l’état initial.

• Tester l’évolution pour des conditions initiales différentes. La page suivante : http://en.wikipedia.org/wiki/Conway’s_Game_of_Life

donne un certain nombre d’exemple simples. Les programmer. Commencer par le planeur(ou glideren Anglais). Qu’observez-vous ?

• Pour ces schéma simples, les raisons pour lesquelles ils sont stationnaires ou périodiques dans le temps peuvent être démontrées rigoureusement. Trouver quelques exemples ou cela est faisable.

Au-delà, Internet fourmille d’exemples plus ou moins sophistiqués ou ludiques, faites appel à votre imagination !

4 Annexe : Fonction delay

void delay(int milliseconds) { long pause;

clock_t now,then;

pause = milliseconds*1000; // ajuster ce paramètre au besoin now = then = clock();

while( (now-then) < pause ) now = clock();

}

8

Références

Documents relatifs

Mais toute sa vie elle aspire à un ailleurs mythique et quand, enfin, le docteur, à l’indépendance, propose de lui donner sa maison, elle refuse le cadeau malgré

4 – Dans un deuxième temps, colorier en décalant une bande sur deux à l’intérieur de l’animal. Quelques exemples réalisés dans

En effet, non seulement l’”Essai sur les éléments de philosophie” n’est pas un ouvrage à proprement parler, puisqu’il constitue le quatrième volume

6 Proposer un programme permettant de trier une liste de 10 entiers pass´ es en arguments dans le terminal (vous vous aiderez de la fonction atoi fournie par la librairie

Le jeu d´ emarre ` a une certaine configuration donn´ ee (repr´ esentant l’´ etat - mort ou vie - de chaque cellule) et passe de g´ en´ eration en g´ en´ eration en

5 et utiliser la formule (9) ou (10) où les points t i sont donnés dans le tableau de la question 1a, tandis que les points milieux corres- pondent à des réels où f n’est pas connue

(c) Comparer au rendement maximum d’une machine idéale fonctionnant entre les deux mêmes sources. Justifier la comparaison de

Nous recourons donc, ici, aux technologies modernes de l'information en élaborant un logiciel pour évaluer et rééduquer les erreurs de perception visuelle des mots écrits en