¿Cómo permutar (reorganizar) una entrada de n bits?

13

Estoy interesado en un algoritmo cuántico que obtiene como entrada una secuencia de n bits y que produce como salida una versión reorganizada (permutada) de esta secuencia de n bits.

Por ejemplo, si la entrada es 0,0,1,1 (entonces n = 4 en este caso), las posibles respuestas son:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

Tenga en cuenta que solo se debe generar una salida que se elija aleatoriamente entre todas las salidas válidas posibles.

¿Cómo se puede implementar esto mejor en un algoritmo cuántico ?

Ya se propone una solución para esto como parte de una de las respuestas para ¿Cómo crear un algoritmo cuántico que produzca 2 secuencias de n bits con igual número de 1 bits? . Pero el problema con esta solución es que esto requiere aproximadamente qubits de ayuda que se vuelven rápidamente enormes si n es grande.(norte2)

Nota:

  • Por favor, no proporcione un algoritmo clásico sin ninguna explicación de cómo los pasos del algoritmo clásico pueden asignarse a una computadora cuántica universal.
  • para mí hay 2 buenas formas de interpretar "elegidas al azar entre todos los buenos resultados posibles" : (1) cada producto bueno posible tiene la misma posibilidad de ser elegido. (2) cada salida buena posible tiene una posibilidad> 0 de ser elegido.
JanVdA
fuente
1
La entrada es una cadena binaria de longitud donde k de los bits son de 1 y la salida es cualquiera de los ( nnortekposibles permutaciones de la misma? Esto se puede hacer en una computadora clásica con 1 paso. ¿Quieresalllsalidas posibles? (nk)1
user1271772
No, solo se debe generar una salida que se elija aleatoriamente entre todas las salidas posibles.
JanVdA
¿Sería un algoritmo clásico lo suficientemente bueno? (Aún puede ejecutarlo en una computadora cuántica). ¿O necesita algo? ¿cuál supera el mejor algoritmo clásico?
Norbert Schuch
1
@ JanVdA: ¿Por qué no elegir cualquiera 1 y 0 e intercambiar los dos en una computadora clásica?
user1271772
1
Como no ha especificado la distribución aleatoria que desea, los dejaré aquí: Dilbert y XKCD ;)
Ali

Respuestas:

4

Se podría hacer con qubits adicionales a lo largo de estas líneas:Iniciar sesiónnorte

  1. Transforme los qubits adicionales para que codifiquen un número elegido uniformemente al azar.k{0 0,...,norte-1}

  2. Cambia cíclicamente los qubits de entrada veces.k

  3. Deje que el último de los qubits de entrada originales se fije como salida y vuelva a aparecer en el restante .norte-1

Este es un algoritmo clásico, pero puede ejecutarlo en una computadora cuántica, como Norbert ha sugerido en un comentario. (El aspecto de la pregunta que es inflexible acerca de que el algoritmo es cuántico todavía no me resulta claro, por lo que si ejecutar un algoritmo clásico como el que he sugerido en una computadora cuántica no es suficiente, sería útil que la pregunta ser aclarado)

Tenga en cuenta que debido a que la pregunta solicita una salida aleatoria, el algoritmo tendrá que generar entropía en algún momento, presumiblemente a través de mediciones o realizando otras operaciones no unitarias en qubits (como inicializarlas). En el algoritmo anterior, es el primer paso que genera entropía: independientemente del estado de los qubits adicionales antes de que se realice la operación en el paso 1, deben tener el estado después de realizar el paso 1 (conkcodificado en binario, digamos).

1nortek=0 0norte-1El |kkEl |
k
John Watrous
fuente
gracias por la respuesta. Estoy interesado en un algoritmo cuántico real para el problema: si pudieras mapear el algoritmo clásico anterior a un programa cuántico, entonces eso también está bien, pero no tengo idea de cómo hacerlo.
JanVdA
2
Creo que la pregunta ahora se está enfocando: realmente no estás buscando un algoritmo, estás buscando código. Lo que he descrito es un algoritmo, y la tarea que queda es implementar ese algoritmo (o uno diferente) como código en algún lenguaje o como la descripción de bajo nivel de un circuito cuántico. Le sugiero que revise la pregunta para aclarar esto, pero tenga en cuenta que le está pidiendo a alguien que haga un trabajo tedioso y poco interesante para usted. La alternativa de aprender a hacer esto usted mismo puede parecer desalentadora, pero podría terminar siendo la mejor solución a largo plazo.
John Watrous
He agregado una nota a la pregunta. Creo que hemos interpretado el concepto de algoritmo cuántico de manera diferente. Para mí, un "algoritmo clásico" no es un algoritmo cuántico, pero podría mapearse en un algoritmo cuántico .
JanVdA
@ JanVdA: ¿Qué quieres decir con algoritmo cuántico? Por ejemplo, ¿requiere que implique al menos una puerta ? ¿O que requiere al menos una puerta Y ? ¿O que requiere algún otro conjunto de puerta específico? ¿Qué conjunto de puertas desea que utilice este algoritmo? HY
user1271772
Un algoritmo cuántico es un algoritmo que se puede asignar (a nivel de paso) a un programa para una computadora cuántica universal. La entrada y salida de los pasos del algoritmo cuántico son qubits (o podrían asignarse a una serie de qubits). El último paso del algoritmo cuántico = leer (observar) los valores de los qubits (para que los qubits se asignen a bits reales) No hay restricciones en el conjunto de puertas. La idea es que el algoritmo completo pueda ejecutarse en una computadora cuántica universal.
JanVdA
3

Nota: esta respuesta supone que desea que la permutación sea coherente , es decir, que desea en lugar de una oportunidad 1/3 de001, una posibilidad de 1/3 de010, y una oportunidad de 1/3100.13(|001+|010+|100)001010100

Tenga cuidado al especificar esta tarea, ya que podría ser fácilmente imposible debido a restricciones de reversibilidad. Por ejemplo, para la entrada desea emitir el estado GHZ | 3|001. Pero si también desea generar el estado GHZ para la entrada| 010y| 100, que no funciona. No puede enviar múltiples estados de entrada al mismo estado de salida (sin decoherencia). Mientras diga "Solo me interesan las entradas ascendentes ordenadas como 0000111 pero no 1110000 o 0010110; puede hacer lo que quiera con ellas", esto estará bien.|31=13(|001+|010+|100)|010|100

Un truco para producir una permutación cuántica de una entrada ordenada es preparar primero un "estado de permutación" mediante la aplicación de una red de clasificación a una lista de valores semilla, cada uno en una superposición uniforme. La red de clasificación generará qubits con las semillas clasificadas, pero también qubits con las comparaciones de la red de clasificación. El estado de permutación son solo los qubits de comparación. Para aplicarlo a su entrada, simplemente ejecute la entrada a través de la red de clasificación en reversa. Tenga en cuenta que hay algunos detalles difíciles aquí; ver el artículo " Técnicas mejoradas para preparar estados propios de hamiltonianos fermiónicos ". Tendría que generalizar esta técnica para trabajar en entradas con valores repetidos, en lugar de solo valores únicos.

|nknk

|000114|41|0011|4216

Craig Gidney
fuente
Necesito más estudio para valorar su respuesta, pero no estoy totalmente de acuerdo con su segundo párrafo sobre la restricción de reversibilidad. Tenga en cuenta que ha usado13(El |001+El |010+El |100) como solución para El |001 pero hay muchas más soluciones ya que estamos trabajando con números complejos (por ejemplo, la siguiente también es una posible solución 13(El |001-El |010+yo.El |100)
JanVdA
1
@ JanVdA Correcto, uno puede usar las fases para hacer que las diversas salidas sean ortogonales. Mi lectura de su pregunta fue que quería la misma fase en todos los casos.
Craig Gidney
0

Una computadora cuántica puede hacer cálculos clásicos. El algoritmo óptimo sería:

  1. Elija cualquier bit (el más rápido al que pueda acceder).
  2. Encuentre un bit que tenga el valor opuesto (si en el paso 1 obtuvo un 0, encuentre un 1)
  3. Cámbielos (0 se convierte en 1 y 1 se convierte en 0).

El paso 2 implica buscar a través de un norte cadena de bits que utiliza operaciones clásicas toma O(norte) operaciones, pero si puede obtener el norteth valor de bit al evaluar una función, puede utilizar el algoritmo cuántico de Grover para encontrar el bit opuesto con O(norte) operaciones

usuario1271772
fuente
Gracias, pero el algoritmo solo cambiaría 2 bits (por lo que no generará todas las permutaciones) y sigue siendo un algoritmo clásico, mientras que me gustaría ver un algoritmo cuántico.
JanVdA