calcolo quantistico - Home di homes.di.unimi.it

CALCOLO QUANTISTICO
Vogliamo simulare le reti neurali quantistiche utilizzando un
computer classico.
Per fare questo utilizzeremo il calcolo quantistico.
Esso è basato su tre concetti quantistici:
- sovrapposizione
- entanglement
- interferenza.
Cercheremo di esprimere la rete da rappresentare come un
algoritmo, rappresentato da una funzione di input
f : {0,1}n ->{0,1}m
e dal problema costituito dalla ricerca di una certa proprietà per f.
L’input sarà una funzione da una stringa binaria ad una stringa
binaria.
La funzione f viene codificata in un operatore matrice unitaria Uf
.
Una matrice quadrata Uf nel campo complesso è unitaria sse la
sua matrice inversa coincide con la sua trasposta coniugata:
Uf-1 = Uf+ .
Una volta generato, l’operatore Uf viene incapsulato in un
quantum gate G, che è la chiave dell’algoritmo quantistico.
Il quantum gate agisce su una base canonica iniziale per generare
come output una combinazione lineare complessa
(sovrapposizione) dei vettori della base.
Una volta giunti alla sovrapposizione, ha luogo la misura in modo
da poter estrarre l’informazione.
In meccanica quantistica la misura è un’operazione non
deterministica che produce come output solo uno dei vettori della
base nella sovrapposizione.
A probabilità di ciascun vettore di base di essere l’output della
misura dipende dai suoi coefficienti complessi (ampiezza di
probabilità) .
Si dice quantum block l’insieme delle azioni quantum gate/misura.
Il quantum block viene ripetuto k volte in modo da produrre k
vettori di base, che non saranno necessariamente identici.
Ciascuno di loro conterrà una parte della soluzione cercata.
CODIFICA
Per prima cosa dunque dobbiamo codificare la funzione f in Uf.
La tabella che costituisce f viene trasformata nella funzione
iniettiva
F: {0,1}n+m ->{0,1}n+m t.c.
F(x0,…,xn-1,y0,….,ym-1) = (x0,….,xn-1,f(x0,….,xn-1)  (y0,….,ym-1))
In modo che f possa sempre essere calcolata da F.
 è l’operatore XOR.
XOR fra due stringhe binarie p e q di lunghezza m è una stringa di
lunghezza m t.c. la i-esima cifra di s è calcolata come un OR
esclusivo fra la iesima cifra di p e q:
p=(p0,…,pn-1)
q=(q0,…,qn-1)
s = p  q = ((p0 + q0) mod 2,…,(pn-1+qn-1) mod 2)) .
A questo punto la funzione F viene trasformata in una tabella Uf,
nel seguente modo:
Uf[(s)] = ([F(s)]
Dove  : {0,1}n+m -> C 2n+m  C 2n+m (spazio di Hilbert) t.c.
Ciò significa che mappa valori di bit in vettori complessi di
dimensione 2 che appartengono alla base canonica di C2.
Usando il prodotto tensoriale, mappa lo stato di una stringa
binaria di dimensione n in un vettore di dimensione 2n.
Ogni stato espresso in bit viene trasformato nel corrispondente
vettore bidimensionle della base e successivamente lo stato
espresso in stringa viene mappato nel corrispondente vettore della
base 2n dimensionale componendo tutti i vettori bit con il
prodotto tensoriale.
Prodotto tensoriale:
Esempi:
Se un componente di un vettore complesso è interpretato come
l’ampiezza di probabilità del sistema di essere in un certo stato, il
prodotto tensoriale fra due vettori descrive la probabilità congiunta
dei due sistemi di essere in uno stato congiunto.
I vettori della base sono denotati con la notazione ket |i>.
Allora essendo [Uf]ij=1
Uf |j> = |i>
Visto che |i> e |j> sono vettori colonna.
Di fatto quindi Uf definisce una mappa di permutazione delle
righe della matrice identità.
L’intelligenza dell’algoritmo da costruire consisterà nell’estrarre
l’informazione necessaria per trovare la proprietà richiesta di f ed
immagazzinarla nei vettori di output.