À quoi ressemblerait un programme quantique très simple?

76

À la lumière de l'annonce de la première puce au monde à photonique quantique programmable , je me demandais quel serait le logiciel d'un ordinateur utilisant l'intrication quantique. L’un des premiers programmes que j’ai écrit était quelque chose comme:

for i = 1 to 10
  print i
next i

Quelqu'un peut-il donner un exemple de code d'une simplicité comparable qui utiliserait des puces photoniques quantiques (ou du matériel similaire), en pseudocode ou en langage de haut niveau? J'ai du mal à faire le saut conceptuel de la programmation traditionnelle à l'enchevêtrement, etc.

xpda
la source
votre lien est cassé
Suresh Venkat
1
+1 et pour cette question. Je suis très curieux de voir un langage de programmation sous un paradigme différent de celui de Turing Machines, aussi loin que nous puissions être d’exécuter le code dans un ordinateur quantique.
Janoma

Réponses:

60

Caveat Emptor: Ce qui suit est fortement biaisé par mes propres recherches et points de vue sur le champ de la CQ. Cela ne constitue pas le consensus général du terrain et pourrait même contenir une certaine auto-promotion.

Le problème de montrer un «monde bonjour» de l'informatique quantique est que nous sommes toujours aussi éloignés des ordinateurs quantiques que Leibnitz ou Babbage de votre ordinateur actuel. Bien que nous sachions comment ils devraient fonctionner en théorie, il n’existe pas de méthode standard pour construire un ordinateur quantique physique. Un effet secondaire de cela est qu’il n’existe pas de modèle de programmation unique pour l’informatique quantique. Des manuels tels que Nielsen et al. vous montrera un diagramme de «circuit quantique», mais ceux-ci sont loin des langages de programmation formels: ils obtiennent un peu de "manipulation" sur des détails tels que le contrôle classique ou le traitement des résultats d'entrée / sortie / mesure.

Ce qui me convient le mieux dans mes recherches d’informaticien en langage de programmation, et pour faire comprendre le concept de contrôle de la qualité à d’autres informaticiens, c’est d’utiliser le modèle de contrôle de la qualité le plus simple que j’ai jamais rencontré et qui fasse tout.

Le programme informatique quantique le plus simple que j'ai vu et qui contient tous les éléments essentiels est un petit programme à trois instructions du modèle de programmation quantique le plus simple que j'ai rencontré à ce jour. Je l'utilise comme un «bonjour monde» pour faire passer les bases.

Permettez-moi de résumer rapidement le calcul de The Measurement de Danos et al. 1 qui est basé sur est basé sur l'ordinateur quantique unidirectionnel 2 : un qubit est détruit lorsqu'il est mesuré, mais sa mesure affecte tous les autres qubits qui étaient enchevêtrés avec lui. Il présente des avantages théoriques et pratiques par rapport aux ordinateurs quantiques "basés sur des circuits" réalisés par la puce photonique, mais la discussion est différente.

Prenons un ordinateur quantique ne comportant que cinq instructions: N, E, M, X et Z. Son "langage d'assemblage" est similaire à votre ordinateur habituel. Après avoir exécuté une instruction, il passe à l'instruction suivante de la séquence. Chaque instruction utilise un identifiant de qubit cible, nous utilisons seulement un nombre ici et d’autres arguments.

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'

Le programme ci-dessus crée donc une ancilla, l’enchevêtre avec le qubit d’entrée, mesure l’entrée et, en fonction du résultat de la mesure, effectue une opération sur la ancilla. Le résultat est que le bit 2 contient maintenant l'état du bit 1 après le fonctionnement de Hadamard .

Ce qui précède est naturellement tellement bas que vous ne voudriez pas le coder à la main. L'avantage du calcul de mesure est qu'il introduit des «motifs», une sorte de macros composables qui vous permettent de composer des algorithmes plus volumineux, comme vous le feriez avec des sous-routines. Vous commencez avec des modèles à 1 instruction et vous développez des modèles plus grands à partir de là.

Au lieu d'une séquence d'instructions de type assembleur, il est également courant d'écrire le programme sous forme de graphique:

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

où les flèches pleines sont des dépendances de qubit et la flèche en pointillé est une dépendance de 'signal'.

Ce qui suit est le même exemple de Hadamard exprimé dans un petit outil de programmation que j'imagine qu'un "programmeur quantique" utiliserait.

Outil de calcul de mesure

edit: (ajout de la relation avec les ordinateurs 'classiques') Les ordinateurs classiques sont toujours très efficaces dans ce qu'ils font le mieux, et la vision est donc que les ordinateurs quantiques seront utilisés pour décharger certains algorithmes, de la même manière que l'ordinateur actuel décharge les graphiques vers un GPU. Comme vous l'avez vu ci-dessus, la CPU contrôlait l'ordinateur quantique en lui envoyant un flux d'instructions et en relisant les résultats des mesures à partir des "signaux" booléens. De cette manière, vous obtenez une séparation stricte entre le contrôle classique par la CPU et l’état quantique et les effets sur l’ordinateur quantique.

Par exemple, je vais utiliser mon coprocesseur quantique pour calculer un booléen ou un cointoss aléatoire. Les ordinateurs classiques sont déterministes, il est donc difficile de renvoyer un bon nombre aléatoire. Les ordinateurs quantiques sont intrinsèquement probabilistes, cependant, tout ce que je dois faire pour obtenir un 0 ou un aléatoire est de mesurer un qubit tout aussi équilibré. La communication entre le processeur et 'QPU' ressemblerait à ceci:

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

{ ... }est la mémoire quantique du QPU contenant des bits et [...]sa mémoire classique (signal) contenant des booléens.


  1. Danos et al. Le calcul de la mesure. arXiv (2007) vol. quant-ph
  2. Raussendorf et Briegel. Un ordinateur quantique à sens unique. Physical Review Letters (2001), vol. 86 (22) pp. 5188-5191
Du boeuf
la source
Excellente discussion sur le sujet, merci, boeuf. En fait, le PO parle de "j'ai du mal à faire le saut conceptuel de la programmation traditionnelle à l'enchevêtrement, etc." Donc, quelque chose qui aide dans cette transition devrait être la bienvenue.
Kris
Vous avez raison, il me semblait que j'avais manqué cette partie, par honte: / Ajout d'un paragraphe.≈
Beef
"Considérons un ordinateur quantique qui n’a que cinq instructions: N, E, M, X et Z." pas d'explication de l'instruction Z :(
Fernando Gonzalez Sanchez le
Z ressemble beaucoup à X;) en.wikipedia.org/wiki/Pauli_matrices L'opération X transforme le vecteur [ab] en [ba], l'opération Z le transforme en [a -b].
Boeuf
21

Je suppose que le libquantum de C , les monades quantiques de Haskell ou Quantum :: Entanglement de Perl représentent tous fidèlement les calculs quantiques. Vous pouvez regarder leurs exemples.

En général, vous décrivez un algorithme quantique comme un algorithme classique qui applique une série d'opérateurs linéaires à une super-position représentant l'état de votre système quantique. Les articles de journaux décrivent souvent un circuit avec des lignes pour les bits / registres quantiques et des boîtes pour les opérateurs linéaires.

Bien entendu, la partie difficile ne consiste pas à décrire l’algorithme, mais à comprendre pourquoi il fonctionne, comme les algorithmes probabilistes. J'ai toujours considéré que l'algorithme de Grover était très compréhensible. Vous pouvez également lire des informations sur la transformation de Fourier Quantum utilisée par l'algorithme de Shor .

Jeff Burdges
la source
11

Cela ressemble à ceci: entrez la description de l'image ici

Vous aussi, vous pouvez avoir accès à un véritable processeur quantique. Allez ici et inscrivez-vous: http://www.research.ibm.com/quantum/

Il inclut également un simulateur pour vous permettre de tester sans utiliser de matériel réel ou d'utiliser des crédits (gratuits) pour exécuter du matériel réel.

Robert Lisiecki
la source
3

Je pense que la réponse est "un peu comme un programme classique simple".

Si nous considérons le calcul lambda simplement typé (avec les produits) comme le cœur de la programmation classique, nous pouvons alors exploiter le fait qu’il s’agit de la théorie de type interne d’une catégorie cartésienne fermée, ce qui nous donne un pointeur.

Notamment, en physique, les structures algébriques liées à la physique quantique sont souvent modélisées dans la théorie des catégories avec des catégories monoïdales symétriques. (Voir Hilb , Cob , Tang .) Et les catégories monoïdales symétriques ne sont qu'une étape avant les catégories cartésiennes (il vous suffit d'ajouter des duplications et des suppressions).nkk

Ainsi, si le STLC est destiné aux catégories fermées cartésiennes, qu’est-ce que les catégories fermées symétriques symétriques? Eh bien, nous savons que la logique interne d’une catégorie monoïdale symétrique est MILL . Nous avons donc besoin d’une théorie des types correspondant à MILL - une théorie des types linéaire.

S'éloignant des absurdités abstraites, qu'obtient-on avec une théorie des types linéaires? Linéarité. Nous obtenons la linéarité des ressources. Et c'est exactement ce que nous voulons. Vous n'êtes pas autorisé à cloner des bits quantiques. Vous n'êtes pas autorisé à mesurer implicitement. Et la linéarité signifie que vous ne pouvez faire ni l’un ni l’autre pendant la réduction.

Il y a eu quelques travaux sur les théories des types linéaires, mais pas une tonne. Certaines des idées présentées dans cet article proviennent de cet article: Physique, topologie, logique et calcul: une pierre de Rosetta de Mike Stay et John Baez, qui va beaucoup plus dans les détails que mon geste de la main.

Darius Jahandarie
la source
0

Je commencerais probablement par une simple implémentation de compteurs "diviser par petit n".

Par exemple: pour une source de 10 GHz, générez une sortie de 5 GHz (mais ces chiffres sont arbitraires et ne visent qu'à illustrer le concept).

Cela nous permet d’ignorer des problèmes tels que le stockage et l’architecture Von Neumann, et nous permet de déterminer si les composants font réellement quelque chose de compréhensible.

L’objectif suivant serait donc de constituer un petit répertoire de «petits n» (mais j’écouterais aussi les critiques de mes chercheurs: s’ils estimaient que d’autres petits objectifs seraient plus immédiatement fructueux, je voudrais certainement comprendre. ce qu'ils me disaient.)

Les objectifs à long terme incluraient des mécanismes permettant d'introduire et de sortir des informations du système et de les conserver suffisamment longtemps pour les utiliser.

(Il est probablement utile de rappeler que les premiers programmes informatiques étaient tous "câblés". Ce n'est qu'après une longue expérience avec ces systèmes que nous avons pu mettre en œuvre des programmes stockés.)

rdm
la source
-6

Je pense que la programmation d'un ordinateur quantique devrait être vue d'un point de vue différent de la programmation orientée objet normale.

Le CQ a la même capacité du cerveau à penser et à décider. La capacité de penser signifie que le pouvoir d’exploration de données est une source de données qui serait un choix possible et qu’elle choisit laquelle choisir parmi tous les états possibles.

À ce stade, un logiciel doit être conçu de manière à ce que les qubits représentent une source de données pouvant être extraite de données et enchevêtrée avec d'autres groupes de données.

QC devrait avoir un système d’exploration de données qui traite la lecture des données, reliant différentes options entre elles et un groupe de sources de données différentes qui présente les informations, lisant tous les états possibles et choisissant celui à poursuivre.

C’est comme ça que notre cerveau fonctionne. Le CQ est capable de comprendre et d’agir conformément à la loi de la Mécanique Quantique, ce qui signifie que vous donnez un problème et le CQ vous montre toutes les solutions possibles pour le résoudre.

C’est à quel point le contrôle de la qualité pourrait être puissant, êtes-vous d’accord?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf c'est le point de commencer, puis créez un dataminer pour construire le dispositif quantique avec des portes, etc., un lecteur connecté au dataminer, pour lire et fournir une réponse. données hôtes du composant de source de données quantique et étendue des connaissances sur lesquelles le dataminer agit.

alex
la source