Emersione: pensa localmente, agisci localmente

Un sistema complesso è costituito da una pluralità di attori che interagiscono tra di loro mediante semplici regole. Si ha il fenomeno dell'emersione quando le interazioni a livello locale producono una complessità organizzata a livello globale. Quando il tutto è più della somma delle parti.

Spesso gli animali (incluso l'uomo) si muovono in gruppo generando un comportamento emergente. Un tipico esempio è lo stormo di uccelli. Ogni volatile segue tre semplici regole locali:

  1. Separazione. Non avvicinarti troppo ai tuoi vicini. E' una repulsione a breve distanza.
  2. Allineamento. Segui la direzione media dei tuoi vicini.
  3. Coesione. Non allontanarti troppo dai tuoi vicini. E' una attrazione a lunga distanza.

Il risultato, inaspettato, è quello di un'unica entità che si muove nell'aria, cambiando sovente forma. Questo comportamento di gruppo è tipico anche di altri animali come formiche, api, termiti, pesci e uomini (folle). Qui una simulazione.

Robert Hodgin

L'aspetto interessante dei sistemi complessi è che non esiste un centro che regola il comportamento del sistema; al contrario, gli attori si muovono in autonomia e hanno una conoscenza locale del solo contesto che li circonda. Spesso le interazioni tra gli attori vengono modellate attraverso una struttura a grafo detto rete complessa.

Per esempio, nella rete complessa di Twitter i nodi sono gli utenti della rete sociale e esiste un arco orientato dal nodo A al nodo B se l'utente A è un seguace di B. Gli utenti di Twitter operano con regole di una semplicità disarmante: cinguettano in autonomia, al più ispirati dal ristretto numero di utenti che seguono. I 140 caratteri di un cinguettio, moltiplicati per la moltitudine di utenti e veicolati attraverso la rete complessa sottostante, possono trasformarsi in fenomeni globali, quali opinioni, mode, rivoluzioni.

Sharon Molloy

"My quest is to reveal how everything is interconnected. From the atom to the cell, to the body and beyond into society and the cosmos, there are underlying processes, structures and rhythms that are mirrored all around and permeate reality. I attempt to visualize 'the molecular process of revolution'; how one small thing leads to another and larger patterns emerge. (...) This work embraces the multiple, the network, the paradoxical and the idea that even the smallest gesture or event has significance, and the power to change everything." (Sharon Molloy)



Mentre la tecnica della casualità organica (rumore di Perlin) si basa su aspetti non deterministici legati al caso. Un sistema complesso, invece, è perfettamente deterministico: ogni stato del sistema è ottenuto a partire dallo stato precedente applicando delle regole logiche alle componenti. Il comportamento del sistema è però talmente intricato che il risultato è imprevedibile, quasi fosse casuale (in realtà in filosofia si parla di caso anche quando le cause esistono ma sono sconosciute).

"The distinction that's new, and that we didn't used to make, is that something can be deterministic but not predictable. We tend to think they are synonyms but they're not. Something can be obeying some law of nature but it's not predictable because what it's doing is so complicated that the time it would take you to calculate what it was going to do would take longer than the thing actually doing it. So you could compute it but you can't compute the world any faster than it is happening." (Rudy Rucker)

Un sistema complesso si presta bene ad essere realizzato usando la programmazione orientata agli oggetti: ogni attore viene rappresentato da un oggetto appartenente ad una classe che ne descrive le caratteristiche (campi) e i comportamenti (metodi).

Vediamo un paio di esempi di sistemi complessi:

  1. Bubble Bobble: gli attori sono delle bolle descritte da una posizione, una dimensione, un colore, una direzione e velocità di movimento. Ogni bolla si muove, si disegna, e si connette mediante una linea con altre bolle che si sovrappongono. Ciò che emerge dal sistema complesso è la rete delle connessioni tra bolle vicine, frutto delle interazioni degli attori.
  2. Modificare lo sketch in modo da mostrare solo la connessione tra le bolle (basta una semplice modifica). Ritornando alla versione originale, modificare lo spazio da circolare a chiuso in modo che le bolle rimbalzino sulle pareti invece di andarci attraverso.
  3. Game of Life: è un automa cellulare sviluppato dal matematico inglese John Conway sul finire degli anni sessanta. Il suo scopo è quello di mostrare come comportamenti complessi simili alla vita possano emergere da regole semplici di interazione tra molti corpi. Il gioco si svolge su una griglia infinita di caselle quadrate (celle) 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. 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 regole di transizione di stato dipendono unicamente dal numero di vicini vivi:
  4. Leggi Game of Life su Wikipedia. Provare a cambiare le regole di vita e morte ottenendo nuove versioni del gioco.