Partager via


Opération CheckOperationsAreEqual

Nom complet : Std.Diagnostics.CheckOperationsAreEqual

operation CheckOperationsAreEqual(nQubits : Int, actual : (Qubit[] => Unit), expected : (Qubit[] => Unit is Adj)) : Bool

Résumé

En fonction de deux opérations, vérifie qu’elles agissent de manière identique pour tous les états d’entrée.

Description

Cette vérification est implémentée à l’aide de l’isomorphisme Choi-Jamiołkowski pour réduire cette vérification à un contrôle sur deux registres enchevêtrés. Ainsi, cette opération n’a besoin qu’d’un seul appel à chaque opération testée, mais nécessite deux fois plus de qubits à allouer. Cette vérification peut être utilisée pour garantir, par exemple, qu’une version optimisée d’une opération agit de manière identique à son implémentation naïve, ou qu’une opération qui agit sur une plage d’entrées non quantiques accepte les cas connus.

Remarques

Cette opération nécessite que l’opération modélisant le comportement attendu soit adjoint, afin que l’inverse puisse être effectué seul sur le registre cible. Formellement, on peut spécifier une opération de transpose, qui assouplit cette exigence, mais l’opération de transpose n’est pas en général réaliste physiquement pour les opérations quantiques arbitraires et n’est donc pas incluse ici comme option.

Entrée

nQubits

Nombre de qubits à passer à chaque opération.

réel

Opération à tester.

attendu

Opération définissant le comportement attendu de l’opération en cours de test.

Sortie

True si les opérations sont égales, false sinon.