Technique

Est-ce que a² - b² est la même chose que (a+b)*(a-b) ?

15
Juin
,
2021
Yuval Boger

Mathématiquement, la réponse est oui, bien sûr, c'est la même chose :

a² - b² = a*a-b*b = (a+b)*(a-b)

Mais si vous faites de l'arithmétique quantique, bien que le résultat puisse être le même, il est conseillé de se demander s'il vaut mieux calculer a² - b² ou calculer (a+b)*(a-b).

Pourquoi s'intéresser à l'arithmétique quantique ? L'arithmétique et la logique font partie intégrante de certains des algorithmes quantiques les plus utiles, comme la création d'oracles complexes dans une recherche de Grover, l'intégration de la sagesse classique dans un ansatz VQE, ou la comparaison du prix d'un actif à une référence lors du calcul du prix d'une option à l'aide de l'algorithme d'estimation de l'amplitude.

Par conséquent, pour mettre en œuvre des algorithmes utiles, il est souvent nécessaire de mettre en œuvre des fonctions arithmétiques.

Mise en œuvre de a² - b² et (a+b)(a-b)

Le calcul de a*a-b*b nécessiterait deux multiplications (multiple de a par lui-même, puis multiple de b par lui-même), suivies de la soustraction de b*b à a*a. Cela pourrait ressembler à ceci[1] :

Le calcul de (a+b)*(a-b) nécessiterait une addition, une soustraction, puis une multiplication. Supposons que nous préférions cette approche. Mais même dans ce cas, nous pourrions la mettre en œuvre en utilisant un nombre différent de qubits d'ancilla. Voici, par exemple, une implémentation :

Voici une autre mise en œuvre :

Le choix du nombre de bits d'ancilla (ou, en d'autres termes, le nombre total de qubits utilisés par le circuit) peut avoir un impact sur la profondeur du circuit. En fonction de ce que nous savons du matériel (qubits disponibles, précision, etc.), nous pourrions préférer l'un à l'autre.

Il peut y avoir des considérations supplémentaires au niveau du système : par exemple, les deux premières implémentations préservent la valeur de a afin qu'elle puisse être utilisée plus tard dans le circuit. La troisième implémentation ne préserve pas la valeur de a.

Estimation des ressources

Si je suis un ingénieur en logiciel quantique chargé de créer un circuit qui met en œuvre cette arithmétique, j'aimerais pouvoir estimer le nombre de qubits et la profondeur du circuit pour chacun des quatre cas :

  1. a² - b² avec moins de bits d'ancilla
  2. a² - b² avec plus de bits ancilla
  3. (a+b)*(a-b) avec moins de bits d'ancilla
  4. (a+b)*(a-b) avec plus de bits d'ancilla

Si je ne fais pas d'estimation, je risque de passer beaucoup de temps à mettre en œuvre cette fonction particulière pour découvrir ensuite que je dois recommencer parce que j'ai dépassé les contraintes du matériel ou d'autres objectifs que je me suis fixés.

Heureusement, avec la plateforme Classiq, c'est très simple. En utilisant le langage de modélisation de Classiq, je peux rapidement passer d'une option à l'autre. Par exemple, pour les deux premières versions, je pourrais créer un modèle avec le code suivant :

Cela permettrait de générer deux circuits complètement différents, chacun respectant les contraintes :

Résumé

L'arithmétique quantique est importante et n'est pas aussi facile qu'il n'y paraît à première vue.

Si (a+b)*(a-b) semble simple, que se passerait-il si vous deviez construire un circuit qui implémente

Ceux-ci deviennent rapidement impossibles à concevoir au niveau de la porte d'entrée, ce qui nécessite une plate-forme avancée comme celle de Classiq.

La plate-forme Classiq fournit une méthode efficace pour concevoir un circuit qui met en œuvre cette arithmétique, ainsi que pour estimer les ressources nécessaires.

[1] le signe '/' sur chaque ligne indique que les registres a et b peuvent être plus profonds qu'un qubit

Voir aussi

Aucun élément trouvé.

Créez des logiciels quantiques sans contraintes

contactez-nous