Mi ero dimenticato il brivido che si prova nel mandare una newsletter in tempo.
Quella sensazione di adrenalina, quando non sei ancora sicuro di poter finire di scrivere entro il lunedì sera. E poi la soddisfazione di scrivere l’ultima frase, rileggere tutto e dirsi ufficialmente: “è pronta”.
Che poi non è neanche tanto vero, visto che mentre scrivo devo ancora finire di preparare un’immagine.
Una produzione artistica di alto livello, poi vedrete andando avanti a leggere.
In ogni caso, oggi mi sento di voler condividere con voi un rapido aggiornamento sulle mie attività divulgative. Come sempre, ve lo separo dal resto, così potete saltarlo se non vi interessa
Inizio pippone personale
Col passare dei mesi, mi sto rendendo conto che questo progetto della newsletter, per quanto a volte mi sembri di non riuscire a dedicarci abbastanza tempo, è decisamente l’attività che mi dà più soddisfazione.
Come probabilmente molti e molte di voi sanno, ho iniziato la mia attività divulgativa online aprendo una pagina Instagram. Al confronto, questa cosa della newsletter è abbastanza una novità. Eppure vedo che più passa il tempo e più tendo a priviligare la newsletter rispetto alla produzione di contenuti su Instragram. Al punto che ormai ho difficoltà a pubblicare regolarmente sui social network.
Non è la prima volta che mi succede, di perdere motivazione nel pubblicare su Instragram. La differenza è che, in tutte le altre occasioni, non sapevo se fosse perché ogni tanto avevo bisogno di una pausa dalla produzione di contenuti divulgativi. Ora che ho anche il progetto della newsletter in parallelo, però, ho capito che non è così.
Anche se ho difficoltà a farmi venire idee per Instagram, sedermi a pensare (e poi scrivere) un episodio della newsletter, mi costa molta meno fatica. E di solito mi diverte molto.
Insomma penso proprio che il mio problema principale sia con Instagram, il modo in cui funziona, e il fatto che non sia compatibile con come a me piace (e viene facile) produrre contenuti. Sto valutando sempre di più l’idea di abbandonarlo e magari usare il tempo che dedicavo a quello per iniziare qualche altro progetto.
In tutto questo, la newsletter credo proprio che per ora continuerà. Anche se, a breve, penso mi prenderò un momento di pausa estiva.
Fine pippone personale
Ok, basta distrazioni. L’argomento di cui vi voglio parlare oggi è una delle prime cose che ho imparato quando ho iniziato a studiare il campo dell’informazione quantistica. E che ho sempre trovato molto soprendente, come idea.
Ha a che vedere con il concetto di universalità dei computer, sia tradizionali che quantistici.
Se pensate a molti dispositivi che usiamo nella vita quotidiana, siamo molto abituati all’idea che, per svolgere compiti diversi, dobbiamo usare oggetti diversi. Non ci sorprende il fatto che un tostapane non possa essere usato per fare un arrosto. O che, per dormire comodi a terra, una bicicletta non serva a molto.
I computer non funzionano allo stesso modo, perché possiamo usarli per svolgere compiti estremamente diversi.
Come mai succede una cosa del genere? E soprattutto, vale lo stesso discorso anche per i computer quantistici?
Vediamo.
Uncini, di nuovo
Oggi, dopo vari mesi di pausa, vi porto di nuovo nel mondo unciniano.
(Se non sapete di cosa sto parlando, o in qualunque momento vi sembrerà confuso quello che dico da ora in poi, vi straconsiglio di fare un ripasso dell’episodio 4, probabilmente troverete varie chiarificazioni che qui eviterò di ripetere).
In brevissimo, parliamo di questa popolazione dotata di uncini al posto delle mani. Che, per comodità e praticità, ha deciso di adottare un sistema di numerazione diverso dal nostro. Il sistema binario.
Siccome le mani degli unciniani e delle unciniane hanno un solo “dito”, il sistema binario si basa su solo due numeri, 0 e 1. Può sembrare incredibile all’inizio, ma vi avevo raccontato in dettaglio di come il sistema binario può riprodurre qualunque numero del nostro sistema decimale. Non solo, si possono trovare regole per rappresentare le lettere dell’alfabeto e i simboli che usiamo per scrivere. E quindi possiamo rappresentare testi interi usando solo liste di 0 e 1.
Perché ci interessa il sistema binario? Abbiamo in programma di sostituire le nostre mani con uncini robotici? Non che io sappia. Ma i computer e tutti i dispositivi elettronici che usiamo ogni giorno basano il loro funzionamento sul sistema binario. Semplicemente perché è molto facile tecnologicamente creare dei bit, ovvero degli oggetti che possono avere solo due stati, 0 e 1.
Vi avevo anche rapidamente raccontato che è possibile fare delle operazioni con i bit dei computer, rappresentando i valori 0 e 1 con la corrente elettrica che passa attraverso un transistor.
Ora vorrei raccontarvi più in dettaglio quali operazioni si possono fare. E come fa un computer (o uno smartphone) a fare tutte quelle cose diverse che lo vediamo fare ogni giorno.
In qualche modo, i computer sono come delle grande scatole della Lego. Hanno vari pezzi a disposizione, e li combinano in vari modi per costruire le cose più diverse. Esattamente come i Lego, i computer hanno solo una manciata di pezzi diversi. Eppure le combinazioni che riescono a creare con quei pochi pezzi sono tantissime.
Nel caso dei computer, l’equivalente dei pezzi della Lego sono le operazioni fra bit. Tra l’altro, i computer sono decisamente più minimalisti della Lego. Mentre per costruire un modellino abbastanza complicato non è difficile trovarsi di fronte una lista così
Il numero di pezzi disponibili all’interno di un computer si può contare sulle dita di una mano. Potrebbe persino essere semplicemente di tre. Tipo una cosa del genere
Quelle che vedete sono le tre operazioni fondamentali di un computer a bit. Ve le presento meglio, sono
Il NOT, ovvero l’operazione che cambia il valore di un bit nel suo contrario. Da 0 a 1 e viceversa.
Il AND, l’operazione che prende in input due bit e dà come risultato 0 in tutti i casi, eccetto se i due bit sono entrambi 1, in cui dà come risultato 1.
Il OR, l’operazione che prende in input due bit e dà come risultato 1 in tutti i casi, eccetto se i due bit sono entrambi 1, in cui dà come risultato 0.
Quante cose diverse possiamo costruire se combiniamo questi mattoncini fra di loro? Moltissime. Anzi, in pratica tutte le cose possibili.
Che?
Lo so, ve la devo spiegare un attimo con calma.
In ambito computazionale, il significato di “tutte le cose possibili” si può definire molto precisamente. Immaginate che il vostro computer abbia in memoria 100 bit. Quindi può fare operazioni che coinvolgono al massimo numeri composti da una sequenza di cento 0 e 1. Possiamo descrivere qualunque operazione vogliamo far fare al computer come una tabella che assegna, ad ogni configurazione di bit iniziali, un risultato finale. Questo risultato potrebbe essere un numero molto lungo, magari composto da 100 bit, oppure qualcosa di più semplice, magari un solo bit.
Questa descrizione può sembrare molto astratta, ma in realtà qualunque operazione che facciamo con i nostri computer o smartphone si può rappresentare così. Vi faccio un paio di esempi.
Il caso più semplice è quello di un’operazione matematica vera e propria. Diciamo che vogliamo usare la calcolatrice del nostro smartphone per dividerci il pagamento di una cena tra amicə. Quello che dobbiamo fare è semplicemente inserire il totale riportato sullo scontrino e dividere per il numero totale di persone. Ora, la calcolatrice dello smartphone non sa in anticipo se vi siete mangiatə 5 pizze margherite o avete cenato ad un ristorante stellato. Allo stesso modo, non sa se eravate ad un appuntamento galante o un cenone di classe. Quindi deve essere pronta a fare qualunque divisione. 100 euro divisi tra 5 persone. Oppure 500 divisi tra 20 persone. Ecco che entra in gioco la nostra tabella. La calcolatrice ha a disposizione una procedura (un algoritmo), che permette di dare il risultato della divisione tra due numeri qualunque. Nel primo caso, stiamo dicendo che i numeri iniziali sono 100 e 5, e la calcolatrice risponderà con 20 come risultato. Nel secondo caso i numeri iniziali sono 500 e 20, e la calcolatrice ci darà 25 come risultato. Tutto questo, per farla semplice, ve l’ho raccontato con numeri decimali, mentre la calcolatrice fa tutto usando una rappresentazione di 100,500,5,20,… con numeri binari. Ma alla fine il discorso rimane lo stesso.
Un altro esempio è quello in cui ci vogliamo mandare un messaggio Whatsapp. In quel caso, il procedimento può essere molto molto semplice. L’operazione che il nostro smartphone deve fare è di copiare qualunque testo abbiamo scritto e riportarlo uguale sullo schermo del cellulare del ricevente. Tutto questo, rappresentando le parole con dei numeri binari, come vi raccontavo sempre nell’episodio 4. A livello pratico, questa è la procedura più semplice possibile, perché significa che qualunque numero iniziale sarà a sua volta il risultato della procedura. Se scrivo “Ciao”, voglio che il risultato che compare sullo schermo dell’altro cellulare sia “Ciao”. Detta così sembra super semplice, ma in realtà l’operazione che fanno i nostri cellulari per copiare semplicemente il messaggio fra di loro richiede una serie di passaggi. Tipo comprimere il messaggio che abbiamo scritto in una serie di numeri piú corta, così da consumare meno dati per mandarlo. Correggere errori che possono essere accaduti nel trasmettere il messaggio attraverso la linea telefonica. E idealmente anche crittografare il messaggio e poi decodificarlo, in modo che solo lə ricevente possa leggerlo.
E poi ce ne sono mille altri, fino ad applicazioni molto moderne come quelle dell’intelligenza artificiale. Magari stiamo utilizzando un’applicazione come Shazam, che dopo aver ascoltato qualche secondo di una canzone ci dice che titolo ha. Anche questa operazione è una tabella. Vogliamo che per ogni sequenza di suoni iniziale che corrisponde ad una canzone esistente, il procedimento ci dia come risultato una serie di numeri binari che rappresentano titolo, autore ed album. E se la sequenza di suoni non corrisponde ad una canzone, ci risponde “non sono riuscito a riconoscere la canzone”.
Insomma, qui vi ho fatto un paio di esempi per provare a convincervi che tutto quello che facciamo con i nostri computer si può rappresentare come una regola che associa ad ogni valore di bit iniziali, dei bit che corrispondono alla risposta che vogliamo. Tutto questo si può anche descrivere in modo molto matematico, usando concetti come funzioni e variabili Booleane.
Ora che abbiamo capito come definire il concetto di “tutte le cose possibili” che può fare un computer, passiamo alla domanda centrale. Ovvero quanti pezzetti diversi servono per realizzare qualunque di queste tabelle? La risposta probabilmente la immaginate, e coincide con le tre operazioni che vi ho descritto prima.
In pratica, qualunque delle procedure che ho descritto prima (dividere il conto di una cena, mandare un messaggio, riconoscere una canzone), si può realizzare combinando delle operazioni di NOT, AND e OR tra i bit coinvolti. Come nel caso della Lego, magari dobbiamo usare tantissime copie degli stessi pezzi. Ma se seguiamo le istruzioni giuste, riusciamo ad ottenere il risultato che vogliamo.
Non solo, queste tre operazioni sono dette “universali”, perché qualunque altra procedura ci venga in mente si può scomporre in una combinazione di questi tre pezzetti. Strano no? Però è così, e si può dimostrare matematicamente.
Ed è un concetto molto importante, perché è quello che rende i computer estremamente diversi da molti altri oggetti che usiamo tutti i giorni. Pensate se venissi da voi con un mano una forchetta e vi dicessi che la potete usare sia per mangiare che per sapere che ore sono. Suppongo mi prendereste per matto.
Invece i computer funzionano così. Non abbiamo bisogno di comprare due computer diversi per svolgere due compiti molto diversi. Lo stesso smartphone può mandare messaggi su Whatsapp e riconosce canzoni su Shazam. E questo perché dobbiamo solo costruirlo in modo tale che possa fare le tre operazioni universali, ripetendole in combinazioni diverse e su bit diversi.
Universalità quantistica
No, non mi sono dimenticato che questa è una newsletter dedicata alla meccanica quantistica.
E infatti è arrivato il momento di dedicarci alla controparte quantistica di tutto quello che vi ho raccontato finora. Abbandonate la nave dei bit perché sbarchiamo nel mondo dei qubit.
Possiamo fare lo stesso discorso di prima riguardo all’universalità dei computer quantistici? Esistono dei mattoncini universali anche per i qubit? O dobbiamo sviluppare computer quantistici diversi per fare compiti diversi?
Questa è una domanda su cui ci si è interrogatə molto rapidamente dopo la nascita del concetto di computer quantistico. E vorrei concludere questa newsletter raccontandovi la risposta a cui si è arrivatə.
Per chi è in vena di spoiler, la risposta corta è SÌ. Ma le cose nel mondo dei qubit funzionano un pò diversamente, quindi anche i mattoncini universali saranno abbastanza diversi.
La differenza principale nasce proprio dal caro principio di sovrapposizione. Lo so, sempre lui. Ma non dite che non vi avevo avvertito, quando vi dicevo che è uno dei concetti più importanti della meccanica quantistica. Il principio di sovrapposizione implica che un qubit non assuma solo lo stato di 0 o 1, ma possa anche trovarsi in uno stato in cui è 0 con probabilità 1/3 e 1 con probabilità 2/3. E questi valori di probabilità non hanno niente di speciale, nel senso che qualunque altra scelta è anche una combinazione valida. Ad esempio 1/2 e 1/2. O 2/5 e 3/5.
Questo semplice cambio ci costringe a modificare completamente il concetto “cose possibili” in un computer quantistico. La tabella di cui parlavamo per i computer tradizionali, ora deve includere ogni possibile scelta di sovrapposizione. Così che esistono operazioni possibili in un computer quantistico, che non hanno corrispettivi nei computer tradizionali. Ad esempio, potremmo considerare l’operazione che, dati due numeri iniziali, dà come risultato la sovrapposizione della loro somma e della loro differenza. O immaginarci lo Shazam quantistico, che ascoltando qualche nota di una canzone, metà delle volte ci dice il titolo e metà delle volte l’autore. E questi sono solo un paio di esempi, probabilmente neanche tra i più interessanti che possiamo immaginare.
Il punto è che “tutte le cose possibili” in un computer quantistico sono molte di più di quelle di un computer tradizionale. Perché includono i casi in cui i qubit del risultato sono in sovrapposizione di valori diversi. E con qualunque scelta di probabilità associata ad ognuno di questi valori.
Ok, finora la storia sembra essersi fatta decisamente più complicata. E forse a questo punto le vostre speranze di scomporre tutte queste possibili operazioni in un insieme di pezzetti elementari si sono ridotte abbastanza. Eppure vi ho detto che la risposta alla domanda dell’universalità per i computer quantistici è SÌ. Anche se devo ammettere che una maniera più corretta di formulare la risposta è
Sì, ma…
Perché effettivamente c’è un MA abbastanza grosso. Dovuto al fatto che, se vogliamo ottenere l’universalità nel caso quantistico, dobbiamo fare qualche concessione.
Una concessione che possiamo fare, è quella di rinunciare all’utilizzo di un numero discreto di pezzetti. Si può dimostrare, infatti, che tutte le operazioni effettuabili da un computer quantistico si possono costruire usando questi due mattoncini
L’operazione NOT controllata. Ovvero quella che agisce su due qubit insieme e, se il primo qubit è 0, lascia il secondo qubit nello stato in cui si trovava. Mentre se il primo qubit è 1, allora applica un’operazione NOT al secondo qubit, e quindi ne cambia il valore da 0 a 1, o da 1 a 0.
Una operazione arbitraria su un singolo qubit.
Direte voi: “Ma sono solo due mattoncini, è persino meglio del caso dei computer tradizionali, no?”
La trappola sta nel secondo dei mattoncini, che ho definito in modo molto vago. Che significa poter fare “un’operazione arbitraria” su un singolo qubit? Significa che dobbiamo poter essere in grado di fare un’operazione che possa generare qualunque stato di sovrapposizione di un qubit. Sia quella che da 0 (o 1) dà come risultato la sovrapposizione 1/2 zero e 1/2 uno, sia quella che dà come risultato 1/3 zero e 2/3 uno. E così via per ogni altra combinazione di probabilità. In pratica, il mattoncino numero due è come se fosse un pezzo arcobaleno. La forma è la stessa, ma ci sono un’infinita di colori diversi. Uno per ogni possibile scelta delle probabilità nella sovrapposizione.
Questo è quello a cui mi riferisco quando dico che dobbiamo abbandonare il caso di un numero “discreto” di pezzetti. I tipi di operazioni universali sono sempre due, ma ora una delle due operazioni è determinata da un parametro che può avere infinite combinazioni di valore possibile. E questa infinità di combinazioni nasce dal fatto che, mentre nei computer tradizionali esistono solo i valori 0 e 1, per i computer quantistici ci sono un infinità di possibilità nel mezzo. Gli stati di sovrapposizione appunto.
Non disperate, non tutto è perduto. Questa cosa di avere a disposizione un mattoncino arcobaleno sembra una cosa estremamente difficile da fare, ma in realtà è tecnologicamente possibile. E infatti molti dei prototipi di computer quantistici attuali sono effettivamente in grado di effettuare operazioni arbitrarie di un singolo qubit.
Non abbiamo ancora risolto tutti i problemi, però. Uno fra tutti, quello di come gestire il caso in cui il nostro computer quantistico commetta degli errori. Cosa che di solito si risolve facendo un altro tipo di concessione rispetto a quello che vi ho descritto qui. In pratica, si prende un MA in una direzione differente, quella della cosiddetta “universalità approssimata”.
Ma queste sono storie che vi dovrò raccontare in altre newsletter. Per stavolta credo proprio di aver fatto abbastanza uso della vostra attenzione.
E quindi direi che è ora di chiudere il quindicesimo episodio della newsletter. Spero che l’episodio sia piaciuto e vi abbia stimolato una sana dose di curiosità.
Commentate qui
o scrivetemi in privato se avete domande/commenti/qualunque cosa. Sono sempre felice di leggervi e rispondervi.
E se vi è piaciuto particolarmente, considerate l’idea di condividerlo con qualche amicə. In compagnia si sta meglio :)
Nel frattempo, noi ci rileggiamo - forse per l’ultima volta prima della pausa estiva - fra due settimane.
A presto!
Un disclaimer finale
Hai ricevuto questa email perchè qualcunə te l’ha inoltrata?
Ti svelo un segreto: fa parte di una newsletter. Si parla di meccanica quantistica e molte delle sue applicazioni più recenti, ma non solo. Ne mando, di solito, una ogni due settimane, il martedì mattina.
Se ti interessa rimanere al passo con le prossime newsletter, ecco il bottone per iscriversi
Altrimenti, amicə come prima.
Puoi sempre recuperare tutti gli episodi passati e futuri sulla pagina Substack de la posta di Schrödinger.