¿Se puede modelar una computadora cuántica en una computadora estándar?

¡Por supuesto! Todo lo que necesitas hacer es resolver la ecuación de Schroedinger. No he escrito nada para el modelo de compuerta, pero todo es un estado cuántico [matemático] | \ Psi \ rangle [/ matemático], que es un vector de coeficientes que corresponden a ciertos estados básicos (si lo expandió, [matemáticas] | \ Psi \ rangle = c_0 | \ psi_0 \ rangle + c_1 | \ psi_1 \ rangle +… + c_ {2 ^ n} | \ psi_ {2 ^ n} \ rangle [/ matemáticas] donde [matemáticas] n [/ math] es el número de qubits y [math] | \ psi_k \ rangle [/ math] es un vector base (o, en mecánica cuántica, uno de los vectores propios del hamiltoniano), que está siendo desarrollado por operadores unitarios (que son solo matrices hermitianas). Para un caso de 1 qubit, hay una gran visualización llamada esfera de Bloch:


Entonces, los coeficientes le dicen qué tan probable es que esté en el estado propio correspondiente (en este caso, es el estado cero o uno, o arriba y abajo). Luego aplica el operador a este estado. Un operador es como una función o mapeo de un espacio vectorial a otro. La matriz siempre debe ser cuadrada, de modo que se garantice el mapeo de un espacio vectorial [matemático] 2 ^ n [/ matemático] a otro espacio vectorial del mismo tamaño (piense en lo que le sucede al vector de estado si la matriz no cuadrado … no se mantendrá la misma longitud, lo que no tiene sentido físico).

Entonces, en computación cuántica, todo lo que está haciendo es aplicar estos operadores unitarios (podrían ser pulsos láser, por ejemplo) en su estado. Para el caso de un qubit, todo lo que sucede es que el vector de estado gira en la esfera Bloch de arriba. En términos matemáticos, es simple multiplicación matriz-vector. Si desea modelar más la física, tendrá que comenzar a pensar en otras cosas como la pérdida de información por ruido o decoherencia o algo así. No sé exactamente cómo hacer esos cálculos, pero probablemente pueda encontrarlo en este libro: Computación cuántica e información cuántica: Edición del décimo aniversario: Michael A. Nielsen, Isaac L. Chuang: 9781107002173: Amazon.com: Libros. O si desea pensar más en ello, puede comenzar con la ecuación de Schroedinger y luego pensar en cómo modelar todos estos otros efectos por separado con la mecánica cuántica, y luego descubrir cómo ponerlo todo junto. Hay mucho código por ahí, así que seguramente alguien ya lo ha hecho. Otra cosa interesante es que hay personas que trabajan en la construcción de lenguajes más abstractos para la computación cuántica de puerta lógica.

Otra cosa que puede hacer es modelar el paradigma de optimización adiabática para la computación cuántica. Aquí es donde simplemente resuelve la ecuación de Schroedinger dependiente del tiempo:

[matemáticas] i \ hbar \ frac {\ partial \ Psi} {\ partial t} = \ hat {H} \ Psi [/ math]

Su Hamiltoniano comienza en una forma (el caso típico es un campo magnético transversal en el estado de giro [math] \ sigma_x [/ math]) y se reactiva a otro (el caso típico es el estado de giro [math] \ sigma_z [/ math]). También tiene coeficientes para esto y … bueno, se complica. Si está interesado, vea mis otras respuestas sobre computación cuántica adiabática aquí: la respuesta de Hadayat Seddiqi a ¿Cómo funciona la computación cuántica? ¿Qué lo hace diferente del paradigma informático actual? ¿Qué tipo de problemas podría resolver la computación cuántica? ¿Cómo se realiza la corrección de errores? y la respuesta de Hadayat Seddiqi a ¿Cómo funciona la computación cuántica adiabática en términos simples?

De todos modos, eso implica simplemente modelar la ecuación anterior. De hecho, eso ha sido parte de mi investigación recientemente y en realidad tengo un código que lo modela por completo (escrito en Python). Si tiene curiosidad acerca de cómo se resuelve exactamente la ecuación, mire el archivo solver.py. Aquí está el enlace:

https://github.com/hadsed/AdiaQC

Algunas cosas a tener en cuenta sin embargo. Por supuesto, tenemos que hacer aproximaciones para resolver la ecuación dependiente del tiempo. Esto significa que dos parámetros importan mucho: su tiempo de recocido total y su paso de tiempo. Otra cosa a considerar es que [matemáticas] 2 ^ n [/ matemáticas] es exponencial. Con [math] n = 16 [/ math], estás viendo un número de alrededor de 65,000, y 16 qubits no son nada. Haciendo un poco de aritmética manual, una simulación para [matemática] n = 42 [/ matemática] ocupará toda la memoria del Titán (la supercomputadora más rápida del mundo en este momento, alojada en el Laboratorio Nacional Oak Ridge). Y recuerde, también está almacenando el Hamiltoniano, que es [matemáticas] 2 ^ n \ veces 2 ^ n [/ matemáticas]. Y tiene que hacer una descomposición propia en cada paso de tiempo para ver su espectro de energía (que es cómo analizará su programa de recocido). Entonces estás viendo muchos problemas al simular estas cosas.

Espero haber cubierto lo suficiente, avíseme si tiene más preguntas y trataré de responder.

Hadayat tiene razón en que todos los modelos estándar de computación cuántica (máquinas de medición cuántica, modelos de circuito cuántico, computación cuántica adiabática, etc.) pueden modelarse en una computadora estándar. Técnicamente hablando, decimos que las computadoras cuánticas y de clase tienen las mismas propiedades de computabilidad, es decir, el conjunto de funciones computables y el conjunto de lenguajes decidibles es el mismo en ambos tipos de computadoras.

Donde las computadoras cuánticas y clásicas difieren es en su complejidad computacional, es decir, las velocidades a las que el tiempo y los requisitos de memoria de un algoritmo escalan con el tamaño de la instancia del problema. Como señala Hadayat, si intenta simular una computadora cuántica en una computadora clásica de una manera ingenua, simplemente rastreando los coeficientes del vector de estado en cada paso de la computación, esto requeriría un tiempo exponencialmente grande y recursos de memoria. Sin embargo, en realidad podemos hacerlo un poco mejor que eso, escapando solo con recursos de memoria polinómica, pero aún así requiere un tiempo exponencial.

Técnicamente hablando, la clase de problemas que es manejable en una computadora cuántica se llama BQP (Polinomio cuántico acotado; consulte Complexity Zoo: B para obtener más detalles). Sabemos que BQP está contenido en PSPACE, que es la clase de problemas que una computadora clásica puede resolver con recursos de memoria polinómica. Hay una prueba simple de este resultado en el libro de Nielsen and Chuang Computación cuántica e información cuántica: Edición del décimo aniversario: Michael A. Nielsen, Isaac L. Chuang: 9781107002173: Amazon.com: Libros. La idea básica detrás del resultado es que su simulación clásica no tiene que rastrear el estado cuántico paso a paso como lo haría una computadora cuántica. Podemos trabajar hacia atrás desde el final del cálculo, así como hacia adelante desde el principio al mismo tiempo, retrocediendo de tal manera que consuma menos memoria. La construcción es esencialmente un análogo de tiempo discreto del enfoque integral de la trayectoria de Feynman a la teoría cuántica.

En realidad, podemos hacerlo un poco mejor que el resultado de PSPACE, y las clases de complejidad en las que se sabe que BQP está contenida se enumeran en Complexity Zoo: B, aunque el significado de la mayoría de ellas es un poco más oscuro que el de PSPACE. Sin embargo, para todas las contenciones conocidas, creemos que la clase que contiene todavía requiere recursos de tiempo exponenciales. En realidad, no podemos probar esto en este momento, ya que es notoriamente difícil demostrar que cualquier problema debe tener una complejidad exponencial, incluso en una computadora clásica (ver el problema P vs NP).

Hasta ahora, he descrito la situación de los modelos estándar de computación cuántica. Todos estos modelos comparten la propiedad de que producen una salida clásica al final de la computación, por ejemplo, la salida puede ser un poco diciéndole la respuesta a un sí / saber preguntas como si la entrada es un número primo. Sin embargo, también podríamos considerar una clase expandida de modelos cuánticos en la que la salida del cálculo cuántico es en realidad un estado cuántico. Una computadora clásica no puede simular tales modelos por la simple razón de que no produce estados cuánticos. Aunque estamos interesados ​​principalmente en usar computadoras para resolver problemas clásicos, es decir, si desea un resultado que le dé la respuesta a alguna pregunta al final del día, es útil considerar estos modelos expandidos como subrutinas dentro de un cálculo. Por ejemplo, sabemos que algunos problemas, como el isomorfismo gráfico, podrían resolverse eficientemente en una computadora cuántica si pudiéramos encontrar una manera eficiente de preparar una cierta clase de estados cuánticos. Los estados cuánticos complicados también pueden ser necesarios para otras aplicaciones de información cuántica, por ejemplo, en la corrección de errores cuánticos o para un protocolo de criptografía cuántica. Estudiar la complejidad de preparar estados cuánticos es, por lo tanto, una pregunta interesante. Por lo tanto, hay un sentido en el que las computadoras clásicas no pueden simular las cuánticas, aunque esto es un poco engañoso porque se podría argumentar que solo deberíamos comparar la complejidad del problema clásico general en lugar de mirar las subrutinas cuánticas.