Gioco della vita

Da Wikipedia, l'enciclopedia libera.
Esempio di versione grafica del Gioco della vita

Il Gioco della vita (Game of Life in inglese) è un automa cellulare sviluppato dal matematico inglese John Conway sul finire degli anni sessanta. Il Gioco della vita è l'esempio più famoso di automa cellulare: il suo scopo è quello di mostrare come comportamenti simili alla vita possano emergere da regole semplici e interazioni a molti corpi, principio che è alla base dell'ecobiologia, la quale si rifà anche alla teoria della complessità. Del gioco sono poi state sviluppate versioni con differenti topologie, ad esempio tridimensionali[1][2], differenti regole biologiche, e differenti tipi di cellule.

Storia[modifica | modifica sorgente]

L'evoluzione e il movimento di un aliante.

Ha fatto la sua prima apparizione in pubblico nell'edizione dell'ottobre 1970 di Scientific American, nella rubrica «Giochi matematici» di Martin Gardner. Dal punto di vista teorico è interessante perché ha le potenzialità di una macchina di Turing universale: in altre parole, ogni cosa che può essere elaborata algoritmicamente può essere elaborata nel contesto del Game of Life.

Dal momento della sua pubblicazione ha ottenuto molto interesse grazie ai modi sorprendenti in cui le diverse configurazioni possono evolvere. Il gioco è un esempio di sviluppo e auto-organizzazione. È interessante per scienziati, matematici, economisti, e altri, osservare il modo in cui schemi complessi possono emergere dall'implementazione di regole assai semplici.

Il Gioco della vita ha una grande quantità di modelli conosciuti che emergono da particolari configurazioni iniziali. Poco tempo dopo la pubblicazione furono scoperti i modelli dell'R-pentamino e dell'aliante, i quali incrementarono l'interesse verso il gioco. La sua popolarità fu aiutata dal fatto che fu immessa sul mercato una nuova generazione di minicomputer, permettendo così di lasciare il gioco in esecuzione per ore su queste macchine che sarebbero state altrimenti inutilizzate durante la notte. Per molti affezionati, Life era semplicemente una sfida di programmazione, un modo divertente per non sprecare i cicli delle CPU. Per molti altri, invece, Life aveva più connotati filosofici. Divenne oggetto di una sorta di culto amatoriale durante gli anni settanta e nella metà degli anni ottanta.

Descrizione[modifica | modifica sorgente]

Si tratta in realtà di un gioco senza giocatori, intendendo che la sua evoluzione è determinata dal suo stato iniziale, senza necessità di alcun input da parte di giocatori umani. Si svolge su una griglia di caselle quadrate (celle) che si estende all'infinito in tutte le direzioni; questa griglia è detta mondo. Ogni cella ha 8 vicini, che sono le celle ad essa adiacenti, includendo quelle in senso diagonale. Ogni cella può trovarsi in due stati: viva o morta (o accesa e spenta, on e off). Lo stato della griglia evolve in intervalli di tempo discreti. Gli stati di tutte le celle in un dato istante sono usati per calcolare lo stato delle celle all'istante successivo. Tutte le celle del mondo vengono quindi aggiornate simultaneamente nel passaggio da un istante a quello successivo: passa così una generazione.

Le transizioni di stato dipendono unicamente dal numero di vicini vivi:

  • Una cella morta con esattamente 3 vicini vivi nasce, diventando viva.
  • Una cella viva con 2 o 3 vicini vivi sopravvive; altrimenti muore (per isolamento o sovraffollamento)

Esempi di configurazioni[modifica | modifica sorgente]

Nel Gioco della vita compaiono configurazioni di tipi diversi, tra cui configurazioni statiche, configurazioni periodiche (oscillatori - un soprainsieme delle configurazioni statiche), e configurazioni che trasportano se stesse in giro per il mondo (navicelle spaziali). Gli esempi più semplici di queste tre classi sono raffigurati sotto, con le celle vive in nero, e le celle morte in bianco.

Game of life block.svg Game of life boat.svg Game of life blinker.svg Game of life toad.svg Game of life glider.svg Game of life lwss.svg
Blocco Barca Lampeggiatore Rospo Aliante (Glider) Astronave leggera
(LWSS)

Il blocco e la barca sono oggetti stabili, il lampeggiatore e il rospo sono oscillatori, l'aliante e l'astronave leggera sono navicelle spaziali che si spostano per il mondo intanto che il tempo scorre.

Le configurazioni chiamate methuselah possono evolversi per lungo tempo prima di ripetersi. Il diehard (duro a morire) è uno schema che alla fine scompare, dopo 130 generazioni. L'eptomino di Alessandro Goretti e l'eptomino-P impiegano rispettivamente 172 e 173 generazioni prima di stabilizzarsi in una forma statico-oscillatoria. La ghianda impiega 5206 generazioni per generare 13 alianti e poi si stabilizza nella forma di tanti oscillatori.

La configurazione dei due eptomini è: 3x3 (111101101); 5x2 (0111011011)

 Game of life diehard.svg   Game of life methuselah.svg 
Diehard Ghianda

Nell'apparizione originale del gioco, Conway offrì un premio in denaro per un qualunque schema che crescesse indefinitamente. Il primo fu trovato da Bill Gosper nel novembre del 1970. Questi schemi includono i gun (fucili), che sono stazionari e sparano alianti o altre navicelle, i fumatori, che si muovono lasciando dietro di loro una coda di detriti statici, e i rastrelli, che si muovono ed emettono navicelle. Gosper ha più tardi scoperto uno schema con un tasso di crescita quadratico, chiamato reattore, che lavorava lasciando dietro di sé una coda di fucili. Da allora sono state create complicate costruzioni, tra cui porte logiche per alianti, un sommatore, un generatore di numeri primi, e una cella che emula lo stesso Gioco della vita riscalato nello spazio e nel tempo.

Il primo emettitore di alianti scoperto è tuttora il più piccolo conosciuto:

Game of life glider gun.svg
Cannone di alianti di Gosper

Gospers glider gun.gif
Cannone di Gosper in azione

Schemi più semplici, anch'essi dotati di crescita infinita, furono scoperti più tardi. Tutti e tre i seguenti schemi hanno una crescita infinita. I primi due creano un motore di interruttori a blocchi (blocklaying switch engine) ciascuno, mentre il terzo ne crea due. Il primo ha solo 10 celle vive (che sono state dimostrate essere il minimo). Il secondo si situa in un quadrato 5 per 5. Il terzo (di Paul Callahan) è alto solo una riga.

Game of life infinite1.svg     Game of life infinite2.svg

Game of life infinite3.svg

Sono possibili interazioni interessanti tra alianti e altri oggetti. Per esempio, se due alianti colpiscono un blocco nella maniera giusta, il blocco si muove verso la sorgente degli alianti. Se tre alianti sono lanciati nella giusta maniera il blocco si muove allontanadosi dalla sorgente degli alianti. Questa memoria a blocchi può essere usata per simulare un contatore. È possibile costruire porte logiche AND, OR e NOT usando alianti. È possibile costruire una configurazione che agisca come una macchina a stati finiti connessa a due contatori.[3] Questo ha lo stesso potere computazionale di una macchina di Turing universale, così il Gioco della vita è potente quanto un qualunque computer con memoria infinita: è Turing equivalente. Inoltre, uno schema può contenere un insieme di fucili che si combinano per creare nuovi oggetti, tra cui copie dello schema originale. Può essere costruito un costruttore universale che contenga un computer Turing equivalente, e che può costruire numerosi tipi di oggetti complessi, includendo copie di se stesso.[4]

Note[modifica | modifica sorgente]

  1. ^ (EN) Kaleidoscope of 3D Life sul sito IBiblio.org
  2. ^ (EN) Conway's Game of Life in 3D in MATLAB sul sito MathWorks.com
  3. ^ (EN) Paul Rendell's Game of Life Page
  4. ^ (EN) Elwyn R. Berlekamp, John Conway; Richard K. Guy, Winning Ways for Your Mathematical Plays, Vol. 4, 2003.

Bibliografia[modifica | modifica sorgente]

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

matematica Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica