¿Cómo sería un programa cuántico muy simple?


76

A la luz del anuncio del primer chip fotónico cuántico programable del mundo , me preguntaba cómo sería un software para una computadora que utiliza enredos cuánticos. Uno de los primeros programas que escribí fue algo como

for i = 1 to 10
  print i
next i

¿Alguien puede dar un ejemplo de código de simplicidad comparable que utilizaría chips fotónicos cuánticos (o hardware similar), en pseudocódigo o lenguaje de alto nivel? Tengo dificultades para dar el salto conceptual de la programación tradicional al enredo, etc.


su enlace está roto
Suresh Venkat

1
+1 y para esta pregunta. Tengo mucha curiosidad acerca de un lenguaje de programación bajo un paradigma diferente al de las Máquinas de Turing, por muy lejos que estemos de ejecutar el código en una computadora cuántica.
Janoma

Respuestas:


60

Advertencia Emptor: lo siguiente está muy sesgado en mi propia investigación y visión en el campo del control de calidad. Esto no constituye el consenso general del campo e incluso podría contener cierta autopromoción.

El problema de mostrar un 'hola mundo' de la computación cuántica es que básicamente estamos tan lejos de las computadoras cuánticas como Leibnitz o Babbage de su computadora actual. Si bien sabemos cómo deberían funcionar teóricamente, no existe una forma estándar de construir una computadora cuántica física. Un efecto secundario de eso es que no existe un modelo de programación único de computación cuántica. Libros de texto como Nielsen et al. le mostrará un diagrama de 'circuito cuántico', pero estos están lejos de ser lenguajes de programación formales: se agitan un poco con los detalles, como el control clásico o los resultados de entrada / salida / medición.

Lo que más me ha convencido en mi investigación como científico de la computación en lenguaje de programación, y para transmitir la esencia del control de calidad a otro científico de la computación, es utilizar el modelo de control de calidad más simple que he encontrado que hace todo.

El programa de computación cuántica más simple que he visto que contiene todos los elementos esenciales es un pequeño programa de tres instrucciones en el modelo de programación cuántica más simple que he encontrado. Lo uso como lo haría con un 'hola mundo' para entender los conceptos básicos.

Permítanme dar un resumen rápido y simplificado de The Measurement Calculus de Danos et al. 1 que se basa en la computadora cuántica unidireccional 2 : un qubit se destruye cuando se mide, pero medirlo afecta a todos los demás qubits que se enredaron con él. Tiene algunos beneficios teóricos y prácticos sobre las computadoras cuánticas 'basadas en circuitos', tal como las realiza el chip fotónico, pero esa es una discusión diferente.

Considere una computadora cuántica que tiene solo cinco instrucciones: N, E, M, X y Z. Su "lenguaje ensamblador" es similar a su computadora normal, después de ejecutar una instrucción, pasa a la siguiente instrucción en la secuencia. Cada instrucción toma un identificador de qubit de destino, aquí usamos solo un número y otros argumentos.

N 2          # create a new quantum bit and identify it as '2'
E 1 2        # entangle qubits '1' and '2', qubit 1 already exists and is considered input
M 1 0        # measure qubit '1' with an angle of zero  (angle can be anything in [0,2pi]
             # qubit '1' is destroyed and the result is either True or False
             # operations beyond this point can be dependent on the signal of '1'
X 2 1        # if the signal of qubit '1' is True, execute the Pauli-X operation on qubit '2'

El programa anterior crea así una ancilla, la enreda con el qubit de entrada, mide la entrada y, según el resultado de la medición, realiza una operación en la ancilla. El resultado es que el qubit 2 ahora contiene el estado del qubit 1 después de la operación de Hadamard .

Lo anterior está naturalmente en un nivel tan bajo que no querrás codificarlo a mano. El beneficio del cálculo de medición es que introduce 'patrones', algún tipo de macros componibles que le permiten componer algoritmos más grandes como lo haría con las subrutinas. Empiezas con patrones de 1 instrucción y creces patrones más grandes a partir de ahí.

En lugar de una secuencia de instrucciones similar a un ensamblador, también es común escribir el programa como un gráfico:

 input                .........
    \--> ( E ) ---> (M:0)     v
(N) ---> (   ) ------------> (X) ---> output

donde las flechas completas son dependencias qubit y la flecha punteada es una dependencia de 'señal'.

El siguiente es el mismo ejemplo de Hadamard expresado en una pequeña herramienta de programación que imagino que usaría un 'programador cuántico'.

Herramienta de cálculo de medición

editar: (agregando relación con las computadoras 'clásicas') Las computadoras clásicas siguen siendo realmente eficientes en lo que hacen mejor, por lo que la visión es que las computadoras cuánticas se usarán para descargar ciertos algoritmos, de forma análoga a cómo la computadora actual descarga los gráficos a un GPU Como ha visto anteriormente, la CPU controlaría la computadora cuántica enviándole un flujo de instrucciones y leería los resultados de las mediciones de las 'señales' booleanas. De esta manera, tiene una separación estricta del control clásico por parte de la CPU y el estado cuántico y los efectos en la computadora cuántica.

Por ejemplo, voy a usar mi coprocesador cuántico para calcular un valor booleano o cointoss aleatorio. Las computadoras clásicas son deterministas, por lo que es malo devolver un buen número aleatorio. Sin embargo, las computadoras cuánticas son inherentemente probabilísticas, todo lo que tengo que hacer para obtener un 0 o 1 aleatorio es medir un qubit igualmente equilibrado. La comunicación entre la CPU y 'QPU' se vería así:

 qrand()       N 1; M 1 0;
 ==>  | CPU | ------------> | QPU |  ==> { q1 } ,  []
                 start()
      |     | ------------> |     |  ==> { } , [q1: 0]
                 read(q1)         
      |     | ------------> |     |
                  q1: 0 
 0    |     | <-----------  |     |
 <==

¿Dónde { ... }está la memoria cuántica de la QPU que contiene qubits y [...]es su memoria clásica (señal) que contiene booleanos?


  1. Danos y col. El cálculo de la medida. arXiv (2007) vol. ph cuant
  2. Raussendorf y Briegel. Una computadora cuántica unidireccional. Physical Review Letters (2001) vol. 86 (22) págs. 5188-5191

Excelente discusión del tema, gracias, carne. Por cierto, el OP habla de "Estoy teniendo dificultades para dar el salto conceptual de la programación tradicional al enredo, etc." Entonces, algo que ayude en esa transición debería ser bienvenido.
Kris

Tienes razón, me parecía realmente han perdido esa parte, por la vergüenza: / Adición de un paragraph.≈
Beef

"Considere una computadora cuántica que solo tiene cinco instrucciones: N, E, M, X y Z". sin explicación de la instrucción Z :(
Fernando Gonzalez Sanchez

Z es muy parecido a X;) en.wikipedia.org/wiki/Pauli_matrices La operación X convierte el vector [ab] en [ba], la operación Z lo convierte en [a -b].
Carne

21

Supongo que el libquantum de C , las mónadas cuánticas de Haskell o el Quantum :: Entanglement de Perl representan fielmente los cálculos cuánticos. Podrías mirar sus ejemplos.

En general, usted describe un algoritmo cuántico como un algoritmo clásico que aplica una serie de operadores lineales a una superposición que representa el estado de su sistema cuántico. Los artículos de revistas a menudo representan un circuito con líneas para bits / registros cuánticos y cuadros para operadores lineales.

Por supuesto, la parte difícil no es describir el algoritmo sino comprender por qué funciona, al igual que los algoritmos probabilísticos. Siempre he considerado el algoritmo de Grover bastante comprensible. También podría leer sobre la transformación Quantum Fourier utilizada por el algoritmo de Shor .


11

Se parece a esto: ingrese la descripción de la imagen aquí

Usted también puede tener acceso a un procesador cuántico real. Vaya aquí y regístrese: http://www.research.ibm.com/quantum/

También incluye un simulador para que pueda probar sin usar hardware real, o usar créditos (gratis) para ejecutar en hardware real.



3

Creo que la respuesta es "Se parece mucho a un simple programa clásico".

Si consideramos que el cálculo lambda de tipo simple (con productos) es el corazón de la programación clásica, entonces podemos explotar que es la teoría interna del tipo de una categoría cartesiana cerrada, lo que nos da un puntero.

Es decir, en física, las estructuras algebraicas relacionadas con la física cuántica a menudo se modelan en teoría de categorías con categorías monoidales simétricas. (Ver Hilb , Cob , Tang .) Y las categorías monoidales simétricas son solo un paso antes de las categorías cartesianas (solo necesita agregar duplicación y eliminación).nkk

Entonces, si el STLC es para categorías cerradas cartesianas, ¿qué es para categorías monoidales simétricas cerradas? Bueno, sabemos que la lógica interna de una categoría monoidal simétrica es MILL . Entonces, lo que necesitamos es una teoría de tipo correspondiente a MILL, una teoría de tipo lineal.

Alejándonos del sinsentido abstracto, ¿qué obtenemos con una teoría de tipo lineal? Linealidad Obtenemos linealidad de los recursos. Y esto es exactamente lo que queremos. No está permitido clonar bits cuánticos. No está permitido medir implícitamente. Y la linealidad significa que no puede hacer ninguno de estos durante la reducción.

Se han realizado algunos trabajos sobre teorías de tipo lineal, pero ni una tonelada. Obtuve algunas de las ideas en esta publicación de este artículo: Física, Topología, Lógica y Computación: Una piedra de Rosetta de Mike Stay y John Baez, que va mucho más en detalle que mi saludo manual.


0

Para empezar, probablemente iría con una simple implementación de contador "dividir entre pequeños n".

Por ejemplo: dada una fuente de 10 GHz, genera una salida de 5 GHz (pero estos números son arbitrarios y solo tienen la intención de ilustrar el concepto).

Esto nos permite ignorar problemas como el almacenamiento y la arquitectura de Von Neumann, y nos permite centrarnos en si los componentes realmente están haciendo algo comprensible.

El siguiente objetivo, entonces, sería construir un pequeño repertorio de "n pequeña" (pero también escucharía el rechazo de mis investigadores; si sintieran que otros objetivos pequeños serían más inmediatos fructíferos, ciertamente querría entender lo que me decían)

Los objetivos a largo plazo incluirían mecanismos para bombear información dentro y fuera del sistema, y ​​retener esa información el tiempo suficiente para usarla.

(Probablemente valga la pena recordar que los primeros programas de computadora fueron "programados". Fue solo después de una amplia experiencia con esos sistemas que pudimos implementar programas almacenados).


-6

Creo que la programación de una computadora cuántica debería verse desde un punto de vista diferente al de la programación normal orientada a objetos.

El control de calidad tiene la misma capacidad del cerebro para pensar y decidir. La capacidad de pensar significa que el poder de la minería de datos es una fuente de datos que sería la mejor opción, y decidir cuál elegir de todos los estados posibles.

Un software en este punto necesitaría ser diseñado de manera que los qubits representaran la fuente de datos que pueden ser extraídos y enredados con otros grupos de datos.

El control de calidad debe tener un minero de datos que procese la lectura de datos, vinculando diferentes opciones entre sí diferentes grupos de fuentes de datos que presenten información, leyendo todos los estados posibles y elija cuál continuar.

Así es como funciona nuestro cerebro. El control de calidad es capaz de comprender y actuar de acuerdo con la ley de la mecánica cuántica, lo que significa que usted da un problema y el control de calidad le muestra todas las soluciones posibles para resolverlo.

así de poderoso podría ser el control de calidad, ¿está de acuerdo?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf este es el punto de partida, luego cree un dataminer para construir el dispositivo cuántico con puertas, etc., un lector conectado al dataminer, para leer y suministre realimentación. datos de host del componente de origen de datos cuántico y el alcance del conocimiento donde actúa el minero de datos

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.