Stomachion

mercoledì 17 giugno 2026

Incendi e automi cellulari

20260617-incendio-foresta-pixelart-copilot
Giovedì 12 marzo 2026, il secondo giorno di Didacta, nel primo pomeriggio si è tenuto un breve incontro dal titolo Videogiochi e didattica condotto da Franco Bagnoli e Andrea Focardi del dipartimento di fisica dell'Università di Firenze. La presentazione era sostanzialmente basata sul preprint Introducing the Physics of Complex Systems through Videogames scritto dai due conferenzieri insieme con Andrea Guazzini e Giorgio Gronchi.
Come avevo scritto nel resoconto di quella giornata, l'incontro è stato un po' deludente, innanzitutto perché non è stato impostato in termini generali, e poi perché ha raccontato l'esperienza specifica del gruppo di Bagnoli e Focardi sullo sviluppo di alcuni simulatori, impropriamente chiamati videogiochi, da utilizzare a scopo didattico. Non ci sarebbe nulla di male in ciò, se non fosse che alla base di una di queste proposte ci sono gli automi cellulari, e in particolare il gioco della vita di Conway, che non vengono mai citati all'interno dell'incontro.
Prima di affrontare l'argomento nello specifico, però, permettetemi di scrivere qualche riga sul gioco della vita riprendendola da un vecchio Rompicapo scritto proprio sul tema degli automi cellulari:
20260412-cellular-automata-fire-simulator-universita-firenze
Accendere e spegnere
Il gioco venne ideato negli anni Settanta del XX secolo dal matematico John Conway che ebbe la felice (o forse non troppo: dipende dai punti di vista) idea di chiamarlo game of life, gioco della vita. Il primo a diffonderlo fu Martin Gardner sulle pagine della sua rubrica di giochi matematici pubblicata all'interno di Scientific American.
Su una plancia, grande a piacere, di celle quadrate bianche si fissano alcune di esse di colore nero: questa configurazione iniziale è detta generazione 0.
Da qui in poi si osserva lo sviluppo delle generazioni successive, che si evolveranno in base a queste semplici regole:
  1. se una cella nera ha due o tre vicini, allora sopravvive fino alla generazione successiva; il destino dei vicini dipende dai loro vicini;
  2. se una cella nera ha quattro o più vicini, allora alla generazione successiva muore, ovvero la cella diventa bianca;
  3. se una cella nera ha uno o nessun vicino, allora alla generazione successiva muore;
  4. se una cella vuota ha esattamente tre vicini, allora alla generazione successiva avviene una nascita, ovvero la cella vuota diventa nera.
Il gioco così creato è di tipo deterministico, ma partendo da configurazioni differenti, anche di poco (differenze di appena una cella) è possibile ottenere risultati differenti e imprevedibili: proprio come la teoria del caos, ma a un livello più semplice, il gioco della vita permette di evidenziare come l'imprevedibilità e la complessità possano emergere da basi deterministiche.
Ad ogni buon conto, evolvendo differenti sistemi di vita, le configurazioni, su tempi lunghi, possono:
  1. scomparire completamente;
  2. raggiungere uno stato stazionario;
  3. ripetere la stessa sequenza per sempre;
  4. ripetere la stessa sequenza per sempre, ma in una posizione ogni volta differente;
  5. comportarsi in maniera caotica;
  6. esibire un comportamento computazionale, ovvero comportarsi come una macchina di Turing.
In particolare da quest'ultima osservazione emerge come sia possibile, ed è stato fatto, utilizzare il gioco della vita, e più in generale gli automi cellulari, per eseguire dei calcoli, sebbene rispetto agli algoritmi classici la computazione risulti sensibilmente più lenta.
Studiare gli incendi
In effetti nell'articolo dei fisici fiorentini non si trova alcun riferimento esplicito agli automi cellulari, il cui utilizzo in questo campo sembra abbastanza consolidato. Per capire come si possano utilizzare, ho spulciato tra le pagin di ForFIS: A forest fire firefighting simulation tool for education and research di Marvin Bredlau, Alexander Weber e Alexander Knoll, che citano esplicitamente gli automi cellulari (cellular automata).
Innanzitutto nel modello proposto dai tre ricercatori, la foresta, vista come un piano bidimensionale, viene suddivisa con due differenti tipologie di griglie, una rettangolare e una esagonale. Ogni cella della griglia è intuitivamente associata allo spazio occupato da un albero. Inoltre da ciascuna cella si diramano i vettori che la collegano con i suoi primi vicini, che sono 8 in caso di griglia rettangolare e 6 in caso di griglia esagonale.
Lo stato di ciascuna griglia è influenzato da due distinti insiemi di agenti. Nell'insieme detto \(X\) troviamo healthy, afire, burnt, ext e nonflam. Essi caraterizzano una cella sana, in fiamme o bruciata oppure che è stata estinta. Infine nonflam descrive una cella che non può bruciare.
L'insieme \(U\) è invece caratterizzato dagli elementi nop e retardant: il primo identifica una cella che è rimasta intatta (nop come crasi di no operation) oppure dove è stato applicato un ritardante.
Lo stato di una cella cambia in funzione del tempo in base a una funzione di transizione che dipende da un elemento di \(X\) e da un elementi di \(U\).
Per studiare lo viluppo dell'incendio viene introdotta una funzione di probabilità dove sono utilizzati alcuni paramentri: un vettore che identifica la velocità del vento; la probabilità che una data area (una cella del reticolo) venga completamente bruciata; un parametro che identifica l'efficacia del ritardante.
A questo punto si inserisce all'interno del modello della foresta l'agente del fuoco e si vede come esso si propaga all'interno della foresta.
20260412-forfis
Ovviamente uno studio del genere ha come obiettivo quello di aiutare nella scelta delle migliori strategie per prevenire gli incendi e per limitarne lo sviluppo. Il codice di ForFIS, scritto in pyton, si trova su github, per cui i più curiosi ed esperti in programmazione possono andare a darci un'occhiata.
Sempre l'articolo che descrive ForFIS ci fornisce un'idea di quanto sia "vecchia" l'idea di applicare gli automi cellulari allo studio della propagazione degli incendi: nella bibliografia, infatti, troviamo uno studio datato 1994, A cellular automaton model of wildfire propagation and extinction.
Altri simulatori
Sempre per gli appassionati di programmazione e di automi cellulari segnalo anche PyTorchFire scritto in pyton, mentre per chi vuole "giocare" con simulatori di questo genere un primo semplice punto di partenza è il Forest Fire Simulator di John Whitehouse. Ovviamente se ne possono trovare molti altri, anche segnalati nell'articolo di Focardi et al.
Un altro automa cellulare (l'ultimo che segnalo) sviluppato proprio per lo studio degli incendi è Propagator, che implementa elementi stocastici al suo interno, rendendolo uno dei più completi e, potenzialmente, molto utile per applicazioni sul campo.
L'argomento lo si potrebbe esplorare ulteriormente, ma in effetti di automi cellulari utilizzati per questo specifico problema ce ne sono diversi. E d'altra parte gli automi cellulari hanno diversi campi di applicazione, e magari in futuro potrei tornare ad affrontarli, ma applicati a qualche altra cosa. I commenti sono aperti a suggerimenti!
Immagine di apertura generata con Copilot

Nessun commento:

Posta un commento