En la teoría de la información cuántica , un circuito cuántico es un modelo para la computación cuántica , similar a los circuitos clásicos , en los que una computación es una secuencia de puertas cuánticas , mediciones , inicializaciones de cúbits a valores conocidos y posiblemente otras acciones. El conjunto mínimo de acciones que un circuito debe poder realizar en los cúbits para permitir la computación cuántica se conoce como criterios de DiVincenzo .
Los circuitos se escriben de forma que el eje horizontal sea el tiempo, comenzando en el lado izquierdo y terminando en el derecho. Las líneas horizontales son qubits, las líneas duplicadas representan bits clásicos . Los elementos que están conectados por estas líneas son operaciones realizadas en los qubits, como mediciones o puertas. Estas líneas definen la secuencia de eventos y, por lo general, no son cables físicos. [2] [3] [4]
La representación gráfica de los elementos del circuito cuántico se describe utilizando una variante de la notación gráfica de Penrose . [ cita requerida ] Richard Feynman utilizó una versión temprana de la notación del circuito cuántico en 1986. [ 5 ]
La mayoría de las puertas lógicas elementales de un ordenador clásico no son reversibles . Así, por ejemplo, en el caso de una puerta AND no siempre se pueden recuperar los dos bits de entrada a partir del bit de salida; por ejemplo, si el bit de salida es 0, no podemos saber a partir de esto si los bits de entrada son 01, 10 o 00.
Sin embargo, las puertas reversibles en las computadoras clásicas se construyen fácilmente para cadenas de bits de cualquier longitud; además, estas son realmente de interés práctico, ya que las puertas irreversibles siempre deben aumentar la entropía física . Una puerta reversible es una función reversible en datos de n bits que devuelve datos de n bits, donde un dato de n bits es una cadena de bits x 1 , x 2 , ..., x n de longitud n . El conjunto de datos de n bits es el espacio {0,1} n , que consta de 2 n cadenas de 0 y 1.
Más precisamente: una compuerta reversible de n bits es una aplicación biyectiva f del conjunto {0,1} n de datos de n bits sobre sí misma. Un ejemplo de una compuerta reversible de este tipo es una aplicación que aplica una permutación fija a sus entradas. Por razones de ingeniería práctica, normalmente se estudian las compuertas solo para valores pequeños de n , por ejemplo, n = 1, n = 2 o n = 3. Estas compuertas se pueden describir fácilmente mediante tablas.
Las puertas lógicas cuánticas son transformaciones unitarias reversibles en al menos un cúbit. A los múltiples cúbits tomados en conjunto se los denomina registros cuánticos . Para definir las puertas cuánticas, primero debemos especificar el reemplazo cuántico de un dato de n bits. La versión cuantificada del espacio clásico de n bits {0,1} n es el espacio de Hilbert.
Este es por definición el espacio de funciones de valor complejo en {0,1} n y es naturalmente un espacio de producto interno . significa que la función es una función integrable al cuadrado . Este espacio también puede considerarse como formado por combinaciones lineales o superposiciones de cadenas de bits clásicas. Nótese que H QB( n ) es un espacio vectorial sobre los números complejos de dimensión 2 n . Los elementos de este espacio vectorial son los posibles vectores de estado de los registros cuánticos de n - qubits .
Usando la notación de Diracket , si x 1 , x 2 , ..., x n es una cadena de bits clásica, entonces
es un registro especial de n -qubits que corresponde a la función que asigna esta cadena de bits clásica a 1 y asigna todas las demás cadenas de bits a 0; estos 2 n registros especiales de n -qubits se denominan estados de base computacional . Todos los registros de n -qubits son combinaciones lineales complejas de estos estados de base computacional.
Las puertas lógicas cuánticas, a diferencia de las puertas lógicas clásicas, son siempre reversibles. Se requiere un tipo especial de función reversible, a saber, una aplicación unitaria , es decir, una transformación lineal de un espacio de producto interno complejo que preserva el producto interno hermítico . Una puerta cuántica de n -qubits (reversible) es una aplicación unitaria U del espacio H QB( n ) de registros de n -qubits sobre sí misma.
Normalmente sólo nos interesan puertas para valores pequeños de n .
Una puerta lógica clásica reversible de n bits da lugar a una puerta cuántica reversible de n bits como sigue: a cada puerta lógica reversible de n bits f corresponde una puerta cuántica W f definida como sigue:
Nótese que W f permuta los estados de la base computacional.
De particular importancia es la puerta NOT controlada (también llamada puerta CNOT ) W CNOT definida en un cúbit cuantizado de 2 . Otros ejemplos de puertas lógicas cuánticas derivadas de las clásicas son la puerta Toffoli y la puerta Fredkin .
Sin embargo, la estructura de Hilbert de los cúbits permite muchas puertas cuánticas que no son inducidas por las clásicas. Por ejemplo, un desplazamiento de fase relativo es una puerta de 1 cúbit dada por la multiplicación por el operador de desplazamiento de fase :
entonces
Nuevamente, consideramos primero el cálculo clásico reversible . Conceptualmente, no hay diferencia entre un circuito reversible de n bits y una compuerta lógica reversible de n bits: cualquiera de los dos es simplemente una función invertible en el espacio de datos de n bits. Sin embargo, como se mencionó en la sección anterior, por razones de ingeniería nos gustaría tener una pequeña cantidad de compuertas reversibles simples, que se puedan juntar para armar cualquier circuito reversible.
Para explicar este proceso de ensamblaje, supongamos que tenemos una compuerta reversible de n bits f y una compuerta reversible de m bits g . Juntarlas significa producir un nuevo circuito conectando un conjunto de k salidas de f a un conjunto de k entradas de g como en la figura siguiente. En esa figura, n = 5, k = 3 y m = 7. El circuito resultante también es reversible y opera con n + m − k bits.
Nos referiremos a este esquema como un ensamblaje clásico (este concepto corresponde a una definición técnica del artículo pionero de Kitaev citado a continuación). Al componer estas máquinas reversibles, es importante asegurarse de que las máquinas intermedias también sean reversibles. Esta condición asegura que no se cree "basura" intermedia (el efecto físico neto sería aumentar la entropía, que es una de las motivaciones para realizar este ejercicio).
Nótese que cada línea horizontal en la imagen anterior representa 0 o 1, no estas probabilidades. Dado que los cálculos cuánticos son reversibles, en cada "paso" el número de líneas debe ser el mismo número de líneas de entrada. Además, cada combinación de entrada debe asignarse a una única combinación en cada "paso". Esto significa que cada combinación intermedia en un circuito cuántico es una función biyectiva de la entrada. [6]
Ahora es posible demostrar que la compuerta Toffoli es una compuerta universal. Esto significa que dado cualquier circuito clásico reversible de n bits h , podemos construir un ensamblaje clásico de compuertas Toffoli de la manera descrita anteriormente para producir un circuito de ( n + m ) bits f tal que
donde hay m entradas puestas a cero con arriostramiento insuficiente y
Obsérvese que el resultado siempre tiene una cadena de m ceros como bits auxiliares . Nunca se produce "basura", por lo que este cálculo es, en efecto, uno que, en un sentido físico, no genera entropía. Esta cuestión se analiza cuidadosamente en el artículo de Kitaev.
En términos más generales, cualquier función f (biyectiva o no) puede simularse mediante un circuito de puertas Toffoli. Obviamente, si la función no es inyectiva , en algún punto de la simulación (por ejemplo, como último paso) se debe producir algo de "basura".
Para los circuitos cuánticos se puede definir una composición similar de puertas cúbit. Es decir, asociada a cualquier ensamblaje clásico como el anterior, podemos producir un circuito cuántico reversible cuando en lugar de f tenemos una puerta n -cúbit U y en lugar de g tenemos una puerta m -cúbit W. Véase la siguiente ilustración:
Es fácil comprobar que la conexión de las puertas de esta manera da lugar a una aplicación unitaria en el espacio de n + m − k cúbits. En un ordenador cuántico real, la conexión física entre las puertas es un gran desafío de ingeniería, ya que es uno de los lugares donde puede producirse decoherencia .
También existen teoremas de universalidad para ciertos conjuntos de puertas bien conocidas; un teorema de universalidad de este tipo existe, por ejemplo, para el par que consiste en la puerta de fase de un solo cúbit U θ mencionada anteriormente (para un valor adecuado de θ), junto con la puerta CNOT de 2 cúbits W CNOT . Sin embargo, el teorema de universalidad para el caso cuántico es algo más débil que el del caso clásico; solo afirma que cualquier circuito reversible de n -cúbits puede aproximarse arbitrariamente bien mediante circuitos ensamblados a partir de estas dos puertas elementales. Nótese que hay un número incontable de posibles puertas de fase de un solo cúbit, una para cada ángulo posible θ, por lo que no todas pueden representarse mediante un circuito finito construido a partir de { U θ , W CNOT }.
Hasta ahora no hemos demostrado cómo se utilizan los circuitos cuánticos para realizar cálculos. Dado que muchos problemas numéricos importantes se reducen al cálculo de una transformación unitaria U en un espacio de dimensión finita (la famosa transformada discreta de Fourier es un excelente ejemplo), se podría esperar que se pudiera diseñar algún circuito cuántico para llevar a cabo la transformación U . En principio, solo se necesita preparar un estado de n qubits ψ como una superposición apropiada de estados de base computacionales para la entrada y medir la salida U ψ. Desafortunadamente, esto presenta dos problemas:
Esto no impide que los circuitos cuánticos para la transformada de Fourier discreta se utilicen como pasos intermedios en otros circuitos cuánticos, pero el uso es más sutil. De hecho, los cálculos cuánticos son probabilísticos .
Ahora proporcionamos un modelo matemático de cómo los circuitos cuánticos pueden simular cálculos probabilísticos pero clásicos. Consideremos un circuito de r -qubits U con espacio de registros H QB( r ) . U es, por lo tanto, una función unitaria.
Para asociar este circuito a un mapeo clásico en cadenas de bits, especificamos
Los contenidos x = x 1 , ..., x m del registro de entrada clásico se utilizan para inicializar de alguna manera el registro de cúbits. Lo ideal sería que esto se hiciera con el estado de base computacional
donde hay r - m entradas puestas a cero con arriostramiento insuficiente. Sin embargo, esta inicialización perfecta es completamente irreal. Supongamos, por lo tanto, que la inicialización es un estado mixto dado por algún operador de densidad S que está cerca de la entrada idealizada en alguna métrica apropiada, por ejemplo
De manera similar, el espacio de registro de salida está relacionado con el registro de cúbits, mediante un observable A con valor Y. Nótese que los observables en mecánica cuántica se definen generalmente en términos de medidas con valor de proyección sobre R ; si la variable resulta ser discreta, la medida con valor de proyección se reduce a una familia {E λ } indexada sobre algún parámetro λ que abarca un conjunto contable. De manera similar, un observable con valor Y puede asociarse con una familia de proyecciones ortogonales por pares {E y } indexadas por elementos de Y , de manera que
Dado un estado mixto S , corresponde una medida de probabilidad en Y dada por
La función F : X → Y se calcula mediante un circuito U : H QB( r ) → H QB( r ) dentro de ε si y solo si para todas las cadenas de bits x de longitud m
Ahora
de modo que
Teorema . Si ε + δ < 1/2, entonces la distribución de probabilidad
La distribución de probabilidad Pr en Y se puede utilizar para determinar F ( x ) con una probabilidad de error arbitrariamente pequeña mediante un muestreo mayoritario, para un tamaño de muestra suficientemente grande. En concreto, tome k muestras independientes de la distribución de probabilidad Pr en Y y elija un valor en el que coincidan más de la mitad de las muestras. La probabilidad de que el valor F ( x ) se muestree más de k /2 veces es al menos
donde γ = 1/2 - ε - δ.
Esto se logra aplicando el límite de Chernoff .
Con la llegada de la computación cuántica, se ha producido un aumento significativo tanto en el número de desarrolladores como en el de herramientas disponibles. [7] Sin embargo, el lento ritmo de los avances tecnológicos y los altos costes de mantenimiento asociados a las computadoras cuánticas han limitado una participación más amplia en este campo. En respuesta, los desarrolladores han recurrido a simuladores, como el Qiskit de IBM , para modelar el comportamiento cuántico sin depender únicamente de hardware cuántico real. Sin embargo, los simuladores, al ser computadoras clásicas, están limitados por la velocidad de cálculo. La ventaja fundamental de las computadoras cuánticas radica en su capacidad para procesar cúbits, aprovechando propiedades como el entrelazamiento y la superposición simultáneamente. Al ejecutar simulaciones cuánticas en computadoras clásicas, se elimina el paralelismo inherente de la computación cuántica. Además, a medida que aumenta el número de cúbits simulados, la velocidad de la simulación disminuye proporcionalmente.
En un circuito cuántico, los vectores se utilizan para representar el estado de los qubits y se utilizan diferentes matrices para representar la compuerta que se aplica a los qubits. Dado que el álgebra lineal es un componente principal de la simulación cuántica, las matrices de puertas programables en campo ( FPGA ) podrían utilizarse para acelerar la simulación de la computación cuántica. FPGA es un tipo de hardware que se destaca por ejecutar operaciones en paralelo, admite la segmentación, tiene recursos de memoria en chip con baja latencia de acceso y ofrece la flexibilidad de reconfigurar la arquitectura del hardware sobre la marcha, lo que lo convierte en una herramienta muy adecuada para manejar la multiplicación de matrices.
La idea principal de acelerar las simulaciones de computación cuántica es descargar parte de la computación pesada a hardware especial como FPGA para acelerar todo el proceso de simulación. Y cuanto más grandes sean los circuitos cuánticos (más cúbits y más puertas) que simulemos, más aceleración obtenemos al descargarlos a FPGA en comparación con las simulaciones de software en la CPU. El flujo de datos de la simulación se explica a continuación. Primero, el usuario ingresa toda la información del circuito cuántico, incluido el estado inicial y varias puertas a través de la interfaz de usuario. Luego, toda esta información se comprime y se envía a FPGA a través de algunos protocolos de comunicación de hardware como AXI. Luego, toda la información se almacena en la memoria en chip en FPGA. Y la simulación comienza cuando los datos se leen de la memoria y se envían al módulo de multiplicación de matrices. Una vez que se realiza todo el cálculo, el resultado se enviará de regreso a la memoria y a la CPU.
Supongamos que estamos simulando circuitos de 5 qubits, entonces necesitamos almacenar el vector que contiene 32 (2⁵) valores de 16 bits, cada uno de los cuales representa la probabilidad de raíz cuadrada de un posible estado existente. También necesitamos almacenar la matriz de 32x32 que representa la compuerta. Para realizar este cálculo en paralelo, podemos almacenar las 32 filas de la matriz por separado y replicar el hardware row_vec_mult de 32 de modo que cada fila pueda calcular la multiplicación en paralelo. Esto acelerará drásticamente la simulación a costa de un mayor uso de hardware y memoria en FPGA. [8]
Se ha descubierto que con un diseño cuidadoso del hardware, es posible lograr una arquitectura de hardware con una complejidad temporal de O(n), donde "n" denota la cantidad de cúbits. En cambio, el tiempo de ejecución de Numpy se acerca a O(2^2^n). Este hallazgo subraya la viabilidad de aprovechar los FPGA para acelerar las simulaciones de computación cuántica. [9]