Estoy buscando un algoritmo cuántico que pueda usar para demostrar la sintaxis de diferentes lenguajes cuánticos. Mi pregunta es similar a esto , sin embargo, para mí, "bueno" significa:
- Lo que hace podría describirse en 1-2 párrafos, y debería ser fácil de entender.
- Debería usar más elementos del "mundo de programación cuántica" (quiero decir que el algoritmo debería usar algunas constantes clásicas, mediciones, condiciones, registros q, operadores, etc., la mayor cantidad posible).
- El algoritmo debe ser pequeño (como máximo 15-25 líneas de pseudocódigo largas).
Los algoritmos útiles son a menudo demasiado largos / difíciles, pero el algoritmo de Deutsch no usa tantos elementos. ¿Alguien puede sugerirme un algoritmo bueno para demostración?
Respuestas:
Sugiero mirar los protocolos de estimación de valores propios / vectores propios. Hay mucha flexibilidad para hacer que el problema sea tan fácil o difícil como desee.
Comience eligiendo dos parámetros, y k . Desea diseñar una unidad n unitaria, U que tenga valores propios de la forma e - 2 π i q / 2 k para enteros q . Asegúrese de que al menos uno de esos valores propios sea único y llámelo ω . También asegúrese de que un estado del producto simple, digamos | 0 ⟩ ⊗ n , tiene no nulo solapamiento con el vector propio de valor propio ω .n k n U e−2πiq/2k q ω |0⟩⊗n ω
El objetivo sería implementar un algoritmo de estimación de fase en esto, recibir el valor y la tarea de generar un vector | Psi ⟩ que es el vector propio correspondiente al valor propio ω . En general, esto comprenderá un circuito de n + k qubits (a menos que necesite ancillas para implementar U controlado ).k |ψ⟩ ω n+k U
Esto funciona de la siguiente manera:
Para simplificar, puede elegir , k = 1 , por lo que necesita una matriz unitaria 4 × 4 con valores propios ± 1 . Usaría algo como ( U 1 ⊗ U 2 ) C ( U † 1 ⊗ U † 2 ) , donde C denota el NOT controlado. Solo hay un vector propio con valor propio -1, que es | Psi ⟩ = ( U 1 ⊗ U 2n=2 k=1 4×4 ±1
fuente
Parece que quieres un "Hola Mundo" cuántico. La versión cuántica más sencilla de esto sería escribir una versión codificada en binario del texto
Hello World
en un registro de qubits. Pero esto requeriría ~ 100 qubits y sería más largo que su límite superior para la longitud del código.Así que escribamos una porción de texto más corta. Vamos a escribir
;)
, necesitamos una cadena de bits de longitud 16. Específicamente, usando codificación ASCIIUsando QISKit, haría esto usando el siguiente código.
Por supuesto, esto no es muy cuántico. Entonces, podrías hacer una superposición de dos emoticones diferentes. El ejemplo más fácil es superponer;) con 8), ya que las cadenas de bits para estos difieren solo en los qubits 8 y 9.
Entonces puedes simplemente reemplazar las líneas
de lo anterior con
El Hadamard crea una superposición de
0
y1
, y el nudo lo convierte en una superposición de00
y11
en dos qubits. Esta es la única superposición requerida para;)
y8)
.Si desea ver una implementación real de esto, se puede encontrar en el tutorial QISKit (divulgación completa: fue escrito por mí).
fuente
Yo propondría el generador de números aleatorios (perfecto) de 1 bit. Es casi trivialmente fácil:
Comienza con un solo qubit en el estado inicial habitualEl | 0 ⟩ . Luego aplicas la puerta HadamardH que produce la superposición igual de El | 0 ⟩ y El | 1 ⟩ . Finalmente, mides este qubit para obtener 0 o 1, cada uno con un 50% de probabilidad.
fuente