“The traditional mathematician recognizes and appreciates mathematical elegance when he sees it. I propose to go one step further […]: if it’s clumsy, it’s not mathematics.”
Edsger Dijkstra
Ok: di questa faccenda della pandemia, siamo tutti un po’ pieni.
Credo sia la sensazione più facile, immediata da decodificare o quantomeno sulla quale abbiamo meno dubbi: la stanchezza. Come ha detto qualche giorno fa un amico di Barricata Liberale: siamo stremati dal saliscendi. Più difficile e incerto, invece, capirne i motivi così da saper accogliere i nostri stessi sentimenti a riguardo e parlare nel modo più proficuo delle possibili soluzioni.
A questo proposito, uno dei maggiori cavalli di battaglia da circa due anni a questa parte è la critica feroce ad un approccio liberale alla gestione del rischio. Una critica che suona più o meno così:
Questa, a mio modesto avviso, è una critica po’ spuntata e vorrei provare a spiegare perché.
Il tweet qui sopra solleva un punto molto interessante: tutti i problemi di ottimizzazione nella vita reale non sono liberi ma vincolati. Sono, cioè, soggetti ad un certo numero di condizioni che devono essere soddisfatte simultaneamente dalla soluzione, affinché essa sia sensata. Noi italiani siamo soliti dire: non si può aver la botte piena e la moglie ubriaca. Gli inglesi: you can’t have the cake and eat it too. O come canta Mick Jagger: you can’t always get what you want. Questa è probabilmente la cosa più vicina a una verità universale: ogni qual volta c’è una funzione obiettivo da minimizzare (poco ci importa che si tratti di costo, energia, numero di persone ricoverate in terapia intensiva a causa del COVID), sorge una tensione o un conflitto.
La ragione è molto semplice: la scarsità.
Le risorse a disposizione per risolvere qualsiasi problema sono sempre finite, il che implica che non possiamo fare ogni cosa allo stesso tempo. Un fatto che spesso preferiremmo ignorare anche se molto noto: noi italiani cantiamo con De Gregori “Non è proibito niente / ma tutto non si può”. Da parte loro, gli olandesi dicono de kool en de geit sparen, il nostro: “non si può salvare capra e cavoli”. Il riferimento, qui, è al gioco proposto da Alcuino di York, teologo e pedagogo inglese, che nel 782 fu chiamato da Carlo Magno a dirigere la Schola Palatina di Aquisgrana. Nelle sue Propositiones ad acuendos juvenes (al problema n. 18), Alcuino presenta questo rompicapo: un contadino deve attraversare un fiume portando con sé sull’altra riva una capra, un lupo e un cesto di cavoli.
Come immaginate, la scarsità non tarda a fare capolino. Infatti, proprio come la capienza delle unità di terapia intensiva nei nostri ospedali, anche quella della barca che il contadino si trova a utilizzare è limitata: egli può fare quanti viaggi vuole, ma può trasportare con sé solo uno dei tre item per volta. Primo vincolo.
Ma non finisce qui: il contadino non può lasciare da soli su una delle due rive la capra e il cesto di cavoli, così come il lupo e la capra, dal momento che la capra mangerebbe i cavoli, e il lupo la capra. Secondo vincolo.
Non facile, vero? Bastano queste due (apparentemente innocue ma simultanee) condizioni a rendere già non banale la soluzione del problema. La coperta sembra essere troppo corta. Dopo un po’ di tentativi, a-ha! Ecco una soluzione: traghettare prima la capra; tornare indietro e traghettare i cavoli; portare indietro sulla prima sponda del fiume la capra (affinché non mangi i cavoli); a quel punto traghettare il lupo (che si troverà da solo con i cavoli) e infine tornare indietro a prendere la capra.
Un paio di cose, su cui forse vale la pena riflettere. Se indichiamo in marrone, grigio, verde e giallo i tragitti di lupo, capra, cavoli e barca (vuota) rispettivamente, ci accorgiamo del fatto che sono necessari ben sette viaggi:
Inoltre, un tassello chiave della soluzione consiste nel realizzare che il contadino può riportare indietro degli item. Entrambi questi aspetti sono “stancanti”, non è vero? Pur di soddisfare tutti i vincoli del problema, ci troviamo a dover seguire una strada contorta e scomoda.
Dunque: tutto non si può. Ma allora perché, a mio modo di vedere, l’approccio liberale è ragionevole?
Il problema, nel caso di una pandemia, è che il numero di variabili e di vincoli è molto più grande: il che rende il problema immensamente più complesso. Peraltro, alcuni di tali vincoli possono essere hard (ovvero delle condizioni da soddisfare obbligatoriamente, in senso stretto) mentre altri possono essere soft (ovvero delle condizioni che possono essere violate in certa misura, a patto di “penalità” sulla funzione obiettivo).
Trovare una soluzione (o anche: date due soluzioni, indentificare la migliore cioè quella cui corrisponde un valore più piccolo della funzione obiettivo, e che quindi porta al compromesso più efficace) non è immediato.
Per farci un’idea più precisa di quanto rapidamente la complessità possa sfuggirci di mano, un buon esempio è il problema delle otto regine: tale rompicapo, originariamente proposto da Max Bezzel nel 1848 e al quale lavorarono nel corso del tempo matematici del calibro di Gauss, consiste nel posizionare otto regine su una scacchiera 8×8 in modo che nessuna di esse ne minacci un’altra (vincolo).
Questo vuol dire che nessuna coppia di regine può trovarsi sulla stessa riga, colonna o diagonale. Il problema sembra facile, eppure affrontarlo è molto oneroso dal punto di vista computazionale: infatti le configurazioni ammesse di otto regine su una scacchiera 8×8 sono ben 4.426.165.368, ma solo 92 di queste sono soluzioni del problema (12, se consideriamo come coincidenti le soluzioni che si possono ottenere l’una dall’altra per riflessioni e rotazioni).
Con problemi così complessi, le strategie rigide e a priori , non adattive tipiche di sistemi centralizzati possono rivelarsi maldestre e poco efficaci: proprio come stiamo constatando ormai da tempo in pandemia. Decisioni prese nell’ottica dirigista del Leviatano stanno sottoponendo a un enorme sforzo dei sistemi fragili, complessi e dai quali dipende molta della prosperità che diamo per scontata. Per questo motivo, a volte questi problemi possono essere affrontati in modo adattivo o iterativo, applicando in ogni momento la quantità di coercizione minima e indispensabile date le circostanze. Ricordiamoci, infatti, che il COVID non è l’unico rischio che ci troviamo ad affrontare, e dunque la nostra funzione obiettivo non può permettersi di divenire “cieca” rispetto a tutto il resto.
Ecco. Questo è il merito che scorgo nell’approccio liberale alla gestione del rischio, così come è implementato per esempio nei Paesi Bassi seguendo la tradizione della poldercultuur. Tanto per cominciare, non ci si divide in fazioni che si criminalizzano a vicenda ma ci si siede al tavolo (come contadini di un polder) a discutere senza pregiudizi, allo scopo di raggiungere la miglior soluzione possibile. Va da sé che, se non ho l’incrollabile convinzione che il mio interlocutore sia un minus habens, mi sforzerò di individuare una strada che lo lasci quanto più possibile libero di valutare e di decidere per conto proprio.
Se poi la soluzione candidata al primo step si rivela inefficace, vorrà dire che aggiusteremo il tiro: il cosiddetto approccio del muddling through, ossia “cavarsela alla meno peggio”. Gli olandesi hanno un’altra espressione che pure rende l’idea: schikken en plooien, cioè “accomodare e smussare”.
Per tornare all’esempio di poc’anzi: nel 1972, l’informatico olandese Edsger Dijkstra (nutrendo quell’avversità istintiva per gli approcci maldestri tipica dei matematici) propose una soluzione iterativa al problema delle n regine, la generalizzazione di quello con n = 8. La sua soluzione consisteva in quello che in gergo si chiama algoritmo di backtracking depth-first search (DFS, o “ricerca in profondità”). Ad ogni step, il programma posiziona una regina in una colonna che non genera un conflitto; se la colonna non viene trovata, il programma fa “marcia indietro” (o backtracking) fino all’ultimo stato ammesso e prova una differente colonna.
Se immaginiamo che le configurazioni delle n regine sulla scacchiera siano organizzate in un albero, questo algoritmo lo perlustra percorrendo ciascun ramo e arrivando quanto più in fondo possibile: ecco perché depth first search.
Ecco, forse, uno spunto interessante che il pensiero liberale (o che la programmazione strutturata di Dijkstra) ci può offrire: quando siamo alle prese con problemi complessi, può essere una buona idea quella di costruire una soluzione in maniera adattiva, o incrementale a partire da una candidata; la quale viene poi seguita senza imporre altri vincoli fin quando ci è possibile. Possiamo certo valutare di abbandonarla per correggere il tiro, ma solo dopo aver determinato (sulla base di solide evidenze) che non può portarci alla soluzione, e non in base a criteri a priori tutto sommato arbitrari.
I sistemi delicati (come i mercati) che stiamo mettendo sotto pressione, limitando le libertà, sono strumenti di calcolo distribuito di cui la società aperta si è dotata per affrontare sfide complesse: lasciarli liberi di poter operare mi sembra la migliore strada a disposizione.
Ci serve tutta la potenza di calcolo di cui possiamo usufruire.