L’esempio riportato nel
precedente articolo, descrive in modo esaustivo il comportamento dell’
automa cellulare proposto da
John Von Neumann all’inizio degli anni ‘50. Ciascuna cella (o pattern) può trovarsi in un dato istante in uno di ventinove possibili stati. Il processo autoriproduttivo dell’automa è in tal caso gestito attraverso lo scambio di messaggi tra celle adiacenti; in particolar modo, lo spostamento nello spazio bidimensionale si ottiene trasferendo lo stato di una cella x alla vicina cella y e resettando lo stato corrente della cella x.
L’
autoriproduzione è garantita da un
costruttore universale definito scegliendo alcune celle dell’
automa cellulare e fissando per esso specifici valori di stato e regole di transizione, applicate tramite un apposito programma. Il processo autoriproduttivo è eseguito in due fasi: nella prima fase viene eseguito il programma per generare una copia del costruttore; nella seconda fase, viene duplicato il programma e la sua copia viene associata alla copia del costruttore.
Il lancio degli
automi cellulari, si è avuto grazie ad un
articolo di
Martin Gardner pubblicato sulla prestigiosa rivista
Scientific American, sulla quale presentò il lavoro del matematico inglese
John Horton Conway. Quest’ultimo propose, all’inizio degli anni Settanta, uno studio su modelli di simulazione, mostrando un esempio che chiamò
Life, successivamente battezzato
The Game of Life.
Nella versione originale, è definita una griglia bidimensionale, teoricamente non limitata, sulla quale ogni cella rappresenta un organismo vivente. A differenza dell’
automa cellulare proposto da
Von Neumann, ogni organismo può trovarsi in uno di due stati, vivo o morto. Per distinguere graficamente le aree con organismi vivi da quelle con organismi morti, una cella che ospita un organismo vivo è marcata con un simbolo, mentre la cella che ospita un organismo morto, semplicemente non è marcata.
Anche in questo caso, ogni cella è vicina ad altre otto celle e ogni cella comunica con le vicine per scambiarsi informazioni relative allo stato dell’organismo ospite. E’ bene ricordare anche che per le leggi di evoluzione della popolazione:
- un organismo vivo con quattro o più vicini vivi, alla generazione successiva (iterazione successiva), sarà morto per soffocamento;
- un organismo vivo con uno o zero vicini vivi, alla generazione successiva sarà morto per solitudine;
- un organismo vivo con due o tre vicini vivi, alla generazione successiva sarà ancora vivo;
- un organismo morto con esattamente tre vicini vivi, alla generazione successiva rinascerà.
Lo stato di ogni cella viene valutato a ogni iterazione e i cambiamenti di stato avvengono tutti simultaneamente in un determinato istante; in questo modo le celle il cui stato deve cambiare, non influenza il cambiamento di stato delle celle vicine. In definitiva, il sistema evolve a scatti, in determinati periodi di tempo.
Il gioco della vita può essere implementato facilmente in qualsiasi linguaggio di programmazione partendo dalle regole base e definendo altri stati ed altre leggi di evoluzione per adattarlo a casi specifici. Attualmente esistono molte varianti, ma il gioco lascia ancora tantissimo spazio all’immaginazione.