2008-05-17

Quantum Computing

Parole misteriose, se ne parla da un po'. Vediamo di capire di cosa si tratta; è solo una piccola introduzione: chi è interessato può utilizzare i link forniti.
Intanto notiamo che nei passati decenni le CPU sono andate nella direzione di inglobare sempre più cose al loro interno: dai pochi byte di registri interni alle attuali cache e decine di registri. Il tutto rientra nel principio di ridurre il più possibile le dimensioni, per aumentare la velocità. La prossima generazione di processori avrà una scala ancora minore, ma prima o poi verrà raggiunto un limite tecnologico, oltre il quale non si potrà andare; già oggi vengono costruiti componenti inferiori al micron e magari arriveremo a progettarne di quelli composti da pochi atomi.
A quel punto, però il modello di natura che conosciamo non funziona più: come sappiamo, infatti, il molto piccolo si presenta secondo i modelli dalla meccanica quantistica. E come effetto collaterale, oltre al prevedibile aumento di velocità, ci troveremo ad avere delle logiche completamente diverse, basate appunto sulla natura quantistica. Nascerà (anzi, è già nata) una teoria dell'informazione quantistica, che sposa l'Informatica con la Fisica Quantistica. L'introduzione a livello tecnologico dei nuovi principi dovrebbe portare ad una sorta di rivoluzione, la prima dell'informatica: in effetti, i suoi principi sono finora sempre stati gli stessi della partenza, con progressi solo sulla velocità e sulle dimensioni.

Sappiamo che i computer utilizzano da sempre una rappresentazione binaria della realtà, in cui ogni grandezza può prendere uno solo dei valori 0 e 1, oppure vero e falso, aperto e chiuso. Dal punto di vista tecnologico, di solito i due livelli si differenziano per una tensione (volt), ma si possono utilizzare anche altri metodi: carica elettrica su un condensatore, polarizzazione destra o sinistra, ecc... Ma quando entriamo nella Meccanica Quantistica, si scopre che se un sistema può esistere in 2 stati, allora può esistere anche in una molteplicità di altri stati ottenuti come sovrapposizione dei 2 di partenza. Questi stati sono piuttosto strani, certamente non intuitivi: non sono direttamente visibili (misurabili) poiché non appena si fa una misura per vedere in che stato è il sistema, troveremo sempre e soltanto uno dei due di partenza. Tutto come se l'operazione della misura influenzasse il sistema e lo facesse cadere su uno dei stati normali.
L'applicazione di questo principio a sistemi macroscopici porta a dei paradossi, ma per spiegare il concetto, anche se non corretto, può bastare il seguente esempio: supponiamo di aver pescato una pallina da un sacchetto contenente palline bianche e nere in ugual numero, senza guardarne il colore e mettiamola in una scatola, che chiudiamo. Finché non la apriamo, non potremo dire con sicurezza di che colore è la pallina; al massimo, diremo di avere il 50% delle probabilità che sia bianca, ma anche che sia nera. Secondo la Fisica Quantistica, il sistema "pallina pescata dal sacchetto e messa nella scatola" si trova allora in uno stato ibrido, composto per il 50% dal colore bianco e per il 50% dal nero. Ora facciamo una misura, cioé apriamo la scatola per vedere il colore della pallina: non la vedremo grigia, ma soltanto bianca o nera. La misura ha distrutto lo stato ibrido e fatto cadere il sistema in uno dei 2 stati noti.
Qualcuno potrebbe chiedere che senso ha introdurre uno stato ibrido se non posso misurarlo; la risposta è che ci sono esperimenti (non sulle palline, eh!) che mostrano come i fotoni, elettroni e simili, interagiscono con l'ambiente proprio come fossero in questo stato ibrido; la probabilità finale del risultato di una misura deve tener conto che la "pallina quantistica" ha in sé tutti gli stati che gli sarebbero permessi, anche se la misura ne mostra solo uno .
Se indichiamo con |i> questo stato ibrido, mentre |b> è la pallina bianca e |n> la nera, si usa dire che:
|i> = x |a> + y |b>
dove x e y sono numeri legati alle probabilità di trovare la bianca o la nera.

Passando all'informatica, consideriamo un bit: i possibili valori sono [0, 1] ma solo uno dei due è registrato. Nel caso quantistico, un qubit (equivalente quantistico del bit) in generale avrà un valore ibrido, sovrapposizione di 0 e 1. Cioé un qubit conterrà entrambi i valori! Allo stesso modo, mentre un registro a 3 bit può tenere un solo numero nell'intervallo 0-7, un registro a 3 qubit potrà tenere tutti gli 8 numeri! In generale, N qubit possono contenere 2^N numeri, come sovrapposizione dei possibili stati! Un esempio che si trova ripetutamente in rete dice che un registro a 200 qbit (idealmente composto da 200 atomi) invece di un numero solo, potrebbe conservare tanti numeri quanti sono gli atomi dell'universo... :-)
Appena avviene la lettura, nel qbit si trova solo uno dei possibili numeri; ma se noi questa lettura non la facciamo? Allora il computer quantistico può effettuare calcoli usando tutti i possibili numeri, nello stesso momento! Come risultato avremo ancora uno stato ibrido: avremo ottenuto un calcolo in parallelo nel tempo che richiede una singola operazione, come se avessimo 2^N processori.

Naturalmente, le regole quantistiche ci dicono che, al momento della misura, il valore sarà quello atteso ma con una certa probabilità! In altre parole, la nuova Informatica Quantistica deve progettare delle procedure che portino la probabilità del risultato corretto vicina al 100%, altrimenti potremmo ottenere anche risultati errati!

Un esempio pratico. Gli ordinamenti di una lista sono tra le operazioni più dispendiose, dovendo in media leggere almeno metà degli elementi della lista, ma un computer quantistico può ottenere tutta la lista con un solo accesso alla memoria; è stato dimostrato che su una lista di 1 milione di elementi, si arriva ad un risultato con probabilità 50% con solo 1000 operazioni.
Si prevede che l'applicazione migliore del Quantum Computing sia nei casi in cui i dati vengono generati da un algoritmo: in un software di scacchi: in una singola operazione sarebbe possibile esaminare moltissime varianti. Come rimarcato in alcune pubblicazioni de Le Scienze (purtroppo non ricordo il titolo), computer del genere sarebbero in grado di decifrare qualsiasi algoritmo di criptazione: una chiave a 256 bit verrebbe superata in una decina di minuti! Naturalmente, si sta sviluppando un nuovo tipo di crittografia (quantum cryptography) con lo scopo di far ridiventare possibile la trasmissione sicura; per esempio creando stati quantistici in grado di generare sequenze casuali identiche, sapendo che se uno stato arriva a destinazione in un certo modo, non è stato certamente intercettato.

Se la teoria sta avanzando speditamente, non così la tecnologia necessaria: nella meccanica quantistica è facile interagire con l'ambiente e quindi perdere coerenza, cioé influenzare il sistema, generando errori. La quantum error correction ha lo scopo di ridurre le interferenze spurie, portando a computer che possono sopportare un
certo livello di errore. Nei laboratori IBM è stato realizzato un computer a 7 qubit, utilizzato per scomporre in fattori primi il numero 15. Sembra nulla, ma il passo è importante.

Se siete interessati, potete esaminare il sito Qubit oppure Quantum Computing FAQ ed anche l'ottima Introduzione, da cui ho tratto spunto per questo post.

Nessun commento: