Je recherche un algorithme quantique que je peux utiliser pour démontrer la syntaxe de différents langages quantiques. Ma question est similaire à cela , cependant, pour moi, «bon» signifie:
- Ce qu'il fait pourrait être décrit dans 1-2 paragraphes et devrait être facile à comprendre.
- Devrait utiliser plus d'éléments du "monde de programmation quantique" (je veux dire que l'algorithme devrait utiliser autant de constantes classiques, mesures, conditions, qregistres, opérateurs, etc.).
- L'algorithme doit être petit (au plus 15-25 pseudo-lignes de long).
Les algorithmes utiles sont souvent trop longs / difficiles, mais l'algorithme de Deutsch n'utilise pas autant d'éléments. Quelqu'un peut-il me suggérer un algorithme bon pour la démo?
Réponses:
Je suggère de regarder les protocoles d'estimation des valeurs propres / vecteurs propres. Il y a beaucoup de flexibilité pour rendre le problème aussi simple ou aussi difficile que vous le souhaitez.
Commencez par choisir deux paramètres, et k . Vous voulez concevoir un unitaire à n bits, U qui a des valeurs propres de la forme e - 2 π i q / 2 k pour les entiers q . Assurez-vous qu'au moins une de ces valeurs propres est unique et appelez-la ω . Assurez-vous également qu'un état de produit simple, par exemple | 0 ⟩ ⊗ n , a chevauchement non nul avec le vecteur propre de valeur propre ω .n k n U e- 2 πje q/ 2k q ω | 0 ⟩⊗ n ω
Cela fonctionne comme suit:
la source
On dirait que vous voulez un "Hello World" quantique. La version quantique la plus simple de cela serait simplement d'écrire une version codée binaire du texte
Hello World
dans un registre de qubits. Mais cela nécessiterait ~ 100 qubits et serait plus long que votre limite supérieure pour la longueur du code.Écrivons donc un morceau de texte plus court. Écrivons
;)
, nous avons besoin d'une chaîne de bits de longueur 16. Plus précisément, en utilisant le codage ASCIIEn utilisant QISKit, vous le feriez en utilisant le code suivant.
Bien sûr, ce n'est pas très quantique. Vous pouvez donc faire une superposition de deux émoticônes différentes à la place. L'exemple le plus simple est de superposer;) avec 8), car les chaînes de bits pour celles-ci ne diffèrent que sur les qubits 8 et 9.
Vous pouvez donc simplement remplacer les lignes
de ce qui précède avec
Le Hadamard crée une superposition de
0
et1
, et le cnot en fait une superposition de00
et11
sur deux qubits. Il s'agit de la seule superposition requise pour;)
et8)
.Si vous voulez voir une implémentation réelle de cela, vous pouvez le trouver sur le tutoriel QISKit (divulgation complète: il a été écrit par moi).
la source
Je proposerais le (parfait) générateur de nombres aléatoires 1 bit. C'est presque trivialement facile:
la source