Comment permuter (remanier) une entrée de n bits?

13

Je m'intéresse à un algorithme quantique qui obtient en entrée une séquence de n bits et qui produit en sortie une version remaniée (permutée) de cette séquence de n bits.

Par exemple, si l'entrée est 0,0,1,1 (donc n = 4 dans ce cas), les réponses possibles sont:

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

Notez qu'une seule sortie doit être générée qui est choisie au hasard parmi toutes les sorties valides possibles.

Comment cela peut-il être mis en œuvre au mieux dans un algorithme quantique ?

Une solution pour cela est déjà proposée dans le cadre d'une des réponses pour Comment créer un algorithme quantique qui produit 2 séquences de n bits avec un nombre égal de 1 bits? . Mais le problème avec cette solution est que cela nécessite environ qubits d'aide qui deviennent rapidement énormes si n est grand.(n2)

Remarque:

  • Veuillez ne pas fournir d'algorithme classique sans expliquer comment les étapes de l'algorithme classique peuvent être mappées sur un ordinateur quantique universel.
  • pour moi, il existe 2 bonnes façons d'interpréter "choisi au hasard parmi toutes les bonnes sorties possibles" : (1) chaque bonne sortie possible a une chance égale d'être choisie. (2) chaque bonne sortie possible a une chance> 0 d'être choisie.
JanVdA
la source
1
L'entrée est une chaîne binaire de longueur où des bits sont des 1 et la sortie estnk une despermutations possibles de. Cela peut être fait sur un ordinateur classique en 1 étape. Voulez-vous toutes les sorties possibles? (nk)-1
user1271772
Non, une seule sortie doit être générée qui est choisie au hasard parmi toutes les sorties possibles.
JanVdA
Un algorithme classique serait-il suffisant? (Vous pouvez toujours l'exécuter sur un ordinateur quantique.) Ou avez-vous besoin de quelque chose? qui surpasse le meilleur algorithme classique?
Norbert Schuch
1
@JanVdA: Pourquoi ne pas simplement choisir n'importe quel 1 et n'importe quel 0 et échanger les deux sur un ordinateur classique?
user1271772
1
Comme vous n'avez pas spécifié la distribution aléatoire que vous souhaitez, je vais laisser celles-ci ici: Dilbert et XKCD ;)
Ali

Réponses:

4

Cela pourrait être fait avec qubits supplémentaires le long de ces lignes:logn

  1. Transformez les qubits supplémentaires pour qu'ils encodent un nombre choisi uniformément au hasard.k{0,,n1}

  2. Décaler cycliquement les qubits d'entrée fois.k

  3. Laissez le dernier des qubits d'entrée d'origine être fixé en sortie et récapitulez sur les restants d'entre eux.n1

Il s'agit d'un algorithme classique, mais vous pouvez bien sûr l'exécuter sur un ordinateur quantique, comme Norbert l'a suggéré dans un commentaire. (L'aspect de la question catégorique sur l'algorithme quantique n'est toujours pas clair pour moi, donc si l'exécution d'un algorithme classique tel que celui que j'ai suggéré sur un ordinateur quantique n'est pas suffisant, il serait utile que la question soit être clarifié.)

Notez que parce que la question demande une sortie aléatoire, l'algorithme va devoir générer l'entropie à un moment donné, probablement par le biais de mesures ou d'effectuer d'autres opérations non unitaires sur des qubits (comme les initialiser). Dans l'algorithme ci-dessus, c'est la première étape qui génère l'entropie: quel que soit l'état des qubits supplémentaires avant l'opération de l'étape 1, ils doivent avoir l'état une fois l'étape 1 effectuée (avec

1nk=0n-1|kk|
encodé en binaire, disons).k
John Watrous
la source
Merci d'avoir répondu. Je m'intéresse à un algorithme quantique réel pour le problème - si vous pouviez mapper l'algorithme classique ci-dessus à un programme quantique, alors qu'il convient également, mais je ne sais pas comment le faire.
JanVdA
2
Je pense que la question se pose maintenant: vous ne cherchez pas vraiment un algorithme, vous cherchez du code. Ce que j'ai décrit est un algorithme, et la tâche qui reste est d'implémenter cet algorithme (ou un autre) en tant que code dans un langage ou en tant que description de bas niveau d'un circuit quantique. Je vous suggère de réviser la question pour la rendre plus claire - mais sachez que vous demandez à quelqu'un de faire un travail fastidieux et conceptuellement sans intérêt pour vous. L'alternative d'apprendre à le faire vous-même peut sembler décourageante, mais pourrait finir par être la meilleure solution à long terme.
John Watrous
J'ai ajouté une note à la question. Je pense que nous avons interprété différemment le concept d' algorithme quantique . Pour moi, un_algorithme classique_ n'est pas un algorithme quantique mais pourrait être mappé dans un algorithme quantique .
JanVdA
@JanVdA: Qu'entendez-vous par algorithme quantique? Par exemple, exigez-vous qu'il implique au moins une porte ? Ou qu'il nécessite au moins une porte Y ? Ou qu'il nécessite un autre ensemble de portes spécifique? Quel ensemble de portes souhaitez-vous que cet algorithme utilise? HOui
user1271772
Un algorithme quantique est un algorithme qui peut être mappé (au niveau de l'étape) à un programme pour un ordinateur quantique universel. L'entrée et la sortie des étapes de l'algorithme quantique sont des qubits (ou pourraient être mappées sur une série de qubits). La dernière étape de l'algorithme quantique = lecture (observation) des valeurs des qubits (de sorte que les qubits deviennent mappés sur des bits réels) Il n'y a aucune restriction sur l'ensemble de portes. L'idée est que l'algorithme complet peut fonctionner sur un ordinateur quantique universel.
JanVdA
3

13(|001+|010+|100)001010100

|001|31=13(|001+|010+|100)|010|100

Une astuce pour produire une permutation quantique d'une entrée triée consiste à préparer d'abord un "état de permutation" en appliquant un réseau de tri à une liste de valeurs de départ chacune dans une superposition uniforme. Le réseau de tri produira des qubits contenant les graines triées, mais également des qubits contenant les comparaisons du réseau de tri. L'état de permutation n'est que les qubits de comparaison. Pour l'appliquer à votre entrée, vous exécutez simplement l'entrée via le réseau de tri en sens inverse. Notez qu'il y a quelques détails délicats ici; voir l'article " Techniques améliorées pour la préparation des états propres des hamiltoniens fermioniques ". Il faudrait généraliser cette technique pour travailler sur des entrées avec des valeurs répétées, au lieu de seulement des valeurs uniques.

|nknk bits de jeu) que vous voulez produire. La principale différence est que vous exécuteriez le circuit de compression quantique en sens inverse, et il attend un nombre codant "combien y en a-t-il?" au lieu de "donnez-moi un état avec le nombre correct de ceux".

|000114|41|0011|4216

Craig Gidney
la source
13(|001+|010+|100)|00113(|001|010+i.|100)
1
@JanVdA Correct, on peut utiliser les phases pour rendre les différentes sorties orthogonales. Ma lecture de votre question était que vous vouliez la même phase dans tous les cas.
Craig Gidney
0

Un ordinateur quantique peut effectuer des calculs classiques. L'algorithme optimal serait de:

  1. Choisissez n'importe quel bit (le plus rapide auquel vous pouvez accéder).
  2. Trouvez un bit qui a la valeur opposée (si à l'étape 1 vous avez obtenu un 0, trouvez un 1)
  3. Changez-les (0 devient 1 et 1 devient 0).

NO(N)nthO(N)

user1271772
la source
Merci mais l'algorithme ne changerait que 2 bits (donc il ne générera pas toutes les permutations) et c'est toujours un algorithme classique, alors que j'aimerais voir un algorithme quantique.
JanVdA