lunes, 23 de noviembre de 2015

Física fundamental

COMPUTACIÓN CUÁNTICA
El teorema de no clonación, introducido independientemente por William Wootters y Wojciech Zurek por un lado y por Dennis Dieks por otro (este último relacionándolo con la causalidad relativista) en 1982, afirma que de acuerdo con las propiedades unitarias de la mecánica cuántica, no es posible hacer una copia o clonación de un estado cuántico arbitrario.
Lo que se afirma por tanto es que no existe la puerta cuántica:
En efecto, consideremos el estado general:
Aplicando la linealidad tendremos
y por otra parte
el cual es un estado en general distinto a no ser que una de las dos amplitudes sea nula.
Por tanto, hemos probado, sólo admitiendo la linealidad de la MC, que no es posible clonar un estado cuántico arbitrario. Se puede ver además que la unitariedad implica que no se pueden clonar dos estados cuánticos distintos y no ortogonales. En efecto, sean los estados a clonar ψ y φ y el estado auxiliar χ, de forma que:
y hagamos el producto escalar de las dos igualdades miembro a miembro:
aplicando la unitariedad se tiene
es decir
lo cual sólo es cierto si φ=ψ (estados iguales) o si su producto escalar es cero (estados ortogonales).
La simplicidad de este teorema desconcertó a la comunidad científica, que no entendió cómo pudo pasar inadvertido durante tantos años.
Es cierto que este hecho, aunque tiene la grave desventaja en computación cuántica relacionada con las lecturas y las copias de seguridad, es de una gran importancia en criptografía cuántica.
Además, el teorema no impide la copia exacta de un estado conocido, y tampoco el hecho de que se puedan construir algoritmos de copia aproximados (Vladimir BuzekMark Hillery, 1996). Esto tampoco impide la teleportación de estados, en donde es borrado el estado original.
Clásicamente un ordenador se define como una cinta finita dividida en n estados (celdas) con un estado inicial y otro final distinguibles. Además las celdas son descritas mediante cierto alfabeto y habrá una cabeza que lea y escriba ese alfabeto, dirigida por una unidad de control que dicta ciertas reglas. Cuando la unidad de control alcanza un estado final se para.
En computación clásica los estados vienen representados por bits. En computación cuántica el estado viene representado por un vector del espacio de Hilbert:
para un estado de n qubits. Es decir, un vector será de la forma:
con
La diferencia principal con el caso clásico estriba en el principio de superposición. Si tenemos n bits podemos almacenar un solo entero de entre los 2n posibles. Sin embargo, con n qubits, gracias al principio de superposición podemos formar infinitos estados, cualquier combinación lineal de los 2n estados base, y su especificación requiere conocer 2namplitudes (para n=300 ese número es del orden del número de grados de libertad del universo visible). Esto hace que mientras en un ordenador clásico su capacidad de memoria sea linealmente proporcional a su tamaño, en uno cuántico habría dependencia exponencial.
Así como en computación clásica hay un teorema que establece la equivalencia entre máquinas de Turing y circuitos lógicos, curiosamente establecido en los años 70 (Savage, Schnorr, Fischer), mucho después de la construcción de los primeros ordenadores, en el caso cuántico hay un resultado similar de 1993 debido a Andrew Chi-Chih Yao, mostrando que la máquina de Turing cuántica se puede reducir al estudio de los circuitos cuánticos. Para cualquier cómputo cuántico se necesita:
1) Preparar un estado inicial i>.
2) Manipularlo mediante transformaciones unitarias f>=U|Ψi>.
3) Realizar una medición en nuestra base computacional (por ejemplo medir la polarización a lo largo del eje z mediante el operador de Pauli σz de cada uno de los qubits).
El proceso de medida convierte un estado simple de un qubit |Ψ>=α|0>+β|1> en un bit clásico R que será cero con probabilidad |α|2 ó 1 con probabilidad |β|2. Gráficamente:
El fenómeno del entrelazamiento, puramente cuántico, viene a decir que los estados cuánticos de dos o más partículas se deben describir haciendo referencia a los estados de todos los objetos del sistema, sin importar que estén separados espacialmente.
Si los estados de dos partículas se definen por los subespacios H1 y H2, un estado general del sistema no será de la forma
en cuyo caso diríamos que es separable, sino un estado entrelazado, es decir, una combinación lineal del tipo:
Por ejemplo el estado
sería separable, ya que
Ejemplos clásicos de estados entrelazados son los estados de Bell:
en donde la notación nos permite usar la forma abreviada
Se puede diseñar un circuito para obtener estos estados a partir de los de la base. Por ejemplo:
y de la misma forma se generan los demás
El mayor poder de cálculo en el terreno cuántico es originado por el llamado paralelismo cuántico, consecuencia a su vez de la superposición cuántica, que nos permitiría conocer los resultados de varias operaciones simultáneamente.
En 1995, los profesores de la Universidad de Oxford Vlatko VedralArtur Ekert y Adriano Barenco publicaron diferentes formas con las que se podían hacer operaciones clásicas cuánticamente. Veamos cómo se podrían realizar sumas simultáneas con una única unidad de control.
Recordemos primero cómo se hacían las sumas en binario (módulo 2):
En el caso cuántico para las sumas de dos bits utilizamos la puerta de Toffoli con el tercer qubit a cero y la puerta CNOT:
Si preparamos el primer estado como superposición en teoría podríamos hacer dos sumas simultáneamente:
El fenómeno de interferencia se puede ilustrar con la aplicación de la puerta de Hadamard a un quibit arbitrario:
Se observa que en un caso las probabilidades se suman (interferencia constructiva) y en el otro se restan (interferencia destructiva). El caso extremo es aquel en el que:
en donde se tiene que el estado |0> pasa de tener 50% de probabilidades de aparecer a la certeza absoluta de encontrarlo después de la medición, cuando ya no se podrá encontrar el estado |1>.
En computación clásica un teorema importante afirma que cualquier función sobre bits puede ser evaluada mediante la composición de puertas NAND únicamente, ya que como consecuencia de las leyes de Morgan (en honor del lógico inglés Augustus De Morgan), si denotamos con  a la operación NAND se puede probar que:
Esto implica que en computación cuántica nos bastaría con la puerta de Toffoli para evaluar funciones clásicamente. Es por esto que se dice que la puerta NAND es universal. En realidad si se habla de conjuntos universales, en este caso la mencionada puerta, para de verdad emular un verdadero computador, debería ir acompañada de la puerta COPY oFANOUT que copie estados, definida como:
En computación cuántica se dice que un conjunto de puertas es universal si cualquier operación unitaria puede ser aproximada con precisión arbitraria por un circuito cuántico construido con esas puertas. La puerta de Toffoli no es ya universal en computación cuántica.
Fue David Deutsch en 1989 el primero que mostró la existencia de una puerta universal cuántica, la puerta de Deutsch, de tres qubits. Se trata de una generalización de la puerta de Toffoli del tipo:
Como se ve, se trata en realidad de una familia de puertas. Además, debido al hecho de que D(α)D(α')=iD(α+α'), se suele fijar α como un múltiplo irracional de π, de forma que una puerta pueda generar todas las demás asintóticamente. Además, la equivalencia
asegura que cualquier cálculo clásico se puede hacer también con un circuito cuántico.
En 1994 David DiVicenzo descubrió que la puerta de Deutsch podía descomponerse en puertas binarias, lo cual fue una sorpresa, dado que la lógica clásica reversible requiere puertas ternarias para la universalidad. Ya comentamos que Toffoli y Fredkin observaron que hacían falta puertas ternarias para la lógica clásica reversible. Sin embargo, la puerta de Toffoli (y cualquiera) puede ser descompuesta en puertas binarias y monarias con la ayuda de las características eminentemente cuánticas, lo que implica el sorprendente resultado de que sólo son necesarios dos qubits para la lógica cuántica.
Vamos a desarrollar esto un poco más. Veamos por qué son necesarios tres bits en lógica clásica reversible. Imaginemos que queremos implementar la puerta universal NANDcon solo dos bits. Para hacerla invertible deberíamos poner el resultado en uno de los dos bits entrantes:
Como se ve, esto no nos valdría ya que perdemos la reversibilidad. Las dos primeras entradas producen la misma salida. Es necesario pues un tercer bit que nos dé información de la entrada.
Con puertas ternarias clásicas sin embargo siempre se pueden simular puertas de más bits. Vemos por ejemplo cómo se puede reducir la puerta cuaternaria CCC-NOT con puertas de Toffoli:
como se ve, se usa un bit auxiliar inicializado a 0, de forma que en él se escriba el resultado de los dos primeros bits, si están a 1 este también estará a 1 y nos servirá para aplicar unNOT al cuarto bit siempre que también esté el tercero encendido, como hacía la puerta original cuaternaria. Se ha reducido pues una puerta cuaternaria a dos puertas ternarias. Veamos ahora por qué no se puede reducir clásicamente una ternaria con binarias:
vemos que el NOT aquí sobre b3 se hace cuando uno de los dos bits son 1, no cuando lo son los dos. Sin embargo, con puertas eminentemente cuánticas sí se puede reducir el circuito ternario, en la forma:
En donde ya hemos estudiado la raiz de NOT como puerta unitaria, la recordamos aqui en sus varias formas:
Para hacernos una idea de cómo actúan los circuitos, veamos en dos ejemplos cómo efectivamente las puertas binarias reprocucen la de Toffoli:
En realidad esto se puede extender a cualquier puerta C2-U, en donde siempre se tendrá la equivalencia:
El resultado general mostrado por Adriano Barenco y otros que se apoyaron en trabajos anteriores fue que cualquier operación unitaria en el espacio de Hilbert H de n qubits puede descomponerse en una secuencia de puertas de 1 qubit y de 2 qubits CNOT. Este conjunto infinito además es exactamente universal. Existen sin embargo conjuntos discretos universales, como el formado por la puerta de Hadamard y la puerta de fase controlada.
Un algoritmo cuántico es un proceso encaminado a realizar alguna tarea computacional específica. Esto en la práctica supone extraer alguna de las amplitudes de los N qubits que forman parte de la computación. Recordemos que en efecto cualquier estado de un conjunto de N bits queda especificado por N bits mientras que para especificar N qubits necesitamos los 2N números que representan las amplitudes de superposición.
Aunque en teoría esto denota la mayor capacidad de cálculo de la computación cuántica, en la práctica esta información almacenada en las amplitudes permanece oculta, y la mayor parte se destruye en el proceso de medición, obteniendo sólo una pequeña parte. Aún así, la información extraída en un algoritmo suele ser de una utilidad y efectividad mucho mayor que la correspondiente al cálculo clásico.
Algunos de los algoritmos cuánticos más famosos son:
Algoritmo de Deutsch-Jozsa, o "cómo mirar las dos caras de la moneda a la vez".
Algoritmo de Simon, o "cómo averiguar, en tiempo polinómico, el periodo de una función".
Algoritmo de Shor, o "cómo factorizar en tiempo polinómico".
Algoritmo de Grover, o "cómo hallar una aguja en un pajar".
Por razones históricas el primero de los algoritmos a estudiar es el propuesto por David Deutsch en 1985. Aunque en el fondo no sea de una gran utilidad para casos prácticos, en él se empieza a apreciar el funcionamiento y la potencia de los programas cuánticos.
Antes debemos hacer algún comentario sobre la forma de evaluar una función en computación cuántica. Para asegurar la reversibilidad del proceso de evaluación, es necesario siempre un registro auxiliar en donde se guarde el resultado de la consulta auxiliar (a veces denominada query por contagio de los lenguajes de bases de datos) además de encontrarse también los valores iniciales en el registro de salida. Es decir, usaremos un registro dividido en dos, la fuente (source) y el destino (target):
Para implementar una función booleana por tanto necesitaremos únicamente un qubit adicional que nos dé el resultado, el cual se puede evaluar fácilmente mediante la suma módulo 2 (⊕) , o, dicho de otra forma, el operador lógico XOR:
o gráficamente
El problema de Deutsch trata de discernir, para m=1, si la función es constante o no con una sola pregunta. Es decir, una función puede que dé en una query f(0)=1, pero por esto no podemos afirmar, clásicamente, que la función sea constante, habrá que averiguar también cuánto vale f(1), es decir, hacer dos queries. Pues bien, usando adecuadamente el llamado a veces oráculo cuántico Uf (no deja de ser una puerta a la que se le hace una pregunta) se demuestra que con sólo una indagación en computación cuántica podemos averiguar el resultado. El circuito es el siguiente:
Vamos analizar el programa paso por paso. Antes recordemos la forma de actuar del operador de Hadamard:
Partimos del estado inicial
aplicamos los operadores de Hadamard:
ahora haremos actuar el operador que implementa nuestra función, teniendo en cuenta que:
con lo que se podrá poner
y por último el primer qubit pasa por una puerta de Hadamard:
Sólo queda medir el primer qubit. Si está en el estado |0>, la función será constante, de lo contrario no. Esto es así debido al siguiente hecho:
La generalización a funciones booleanas sobre n qubits la hizo Deutsch junto a Richard Jozsa en 1992. Ahora se trataba de ver si una función es constante o está equilibrada o balanceada, es decir, si es 0 para la mitad de las entradas y 1 para el resto. El circuito que se emplea es similar:
Ahora el estado inicial es de la forma:
aplicando los operadores de Hadamard, recordando el resultado en notación decimal se obtiene:
y después de pasar por la puerta funcional queda:
Para aplicar el operador de Hadamard sobre los n primeros estados hay que tener en cuenta el resultado:
por ejemplo
resultado que se puede compactar usando el producto escalar binario pero en notación decimal:
Usando el resultado obtenemos el estado final:
y de nuevo se puede obtener, con una sola medida, que si los primeros n qubits están en el estado |0n> con probabilidad 1, la función será constante, y si la probabilidad es 0, la función estará balanceada, en los restantes casos la función simplemente no sería constante. Como ilustración, los términos para n=2 para el primer qubit serían:
por tanto, con una sola query podemos adivinar la constancia o el balanceo de la función. Nótese que, si a priori sabemos que la función es constante o balanceada, clásicamente en teoría habría que hacer tres medidas para averiguar cuál de las dos opciones es, en el peor de los casos (en el mejor con dos nos valdría). En general en el peor de los casos habría que indagar en la mitad más uno de los posibles resultados, es decir, para una función de n bits habría que hacer 2n/2+1 queries, frente a dos si tenemos suerte o a uno si aplicamos la computación cuántica.
La primera implementación experimental de este algoritmo fue propuesta, para dos qubits, en 1998 por Jonathan Jones y Michele Mosca para técnicas de espines bajo resonancia magnética nuclear (RMN). Hay que señalar que este algoritmo en el fondo no mejora exponencialmente los cálculos clásicos, ya que siempre se puede diseñar un algoritmo clásico probabilista (consultas aleatorias a la función) que nos dé el resultado con gran margen de precisión en muy poco tiempo.

No hay comentarios:

Publicar un comentario