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:
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.
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: