Condividi tramite


Operazione CheckOperationsAreEqual

Nome completo: Std.Diagnostics.CheckOperationsAreEqual

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

Sommario

Date due operazioni, verifica che agiscano in modo identico per tutti gli stati di input.

Descrizione

Questo controllo viene implementato utilizzando l'isomorfismo Choi–Jamiołkowski per ridurre questo controllo a un controllo su due registri entangled. Pertanto, questa operazione richiede solo una singola chiamata a ogni operazione sottoposta a test, ma richiede l'allocazione di più qubit due volte. Questo controllo può essere usato per garantire, ad esempio, che una versione ottimizzata di un'operazione agisca in modo identico all'implementazione ingenua o che un'operazione che agisce su un intervallo di input non quantistici è d'accordo con i casi noti.

Osservazioni

Questa operazione richiede che la modellazione dell'operazione il comportamento previsto sia adiacente, in modo che l'inverso possa essere eseguito solo nel registro di destinazione. Formalmente, è possibile specificare un'operazione di trasposizione, che riduce questo requisito, ma l'operazione di trasposizione non è in generale gestibile fisicamente per operazioni quantistiche arbitrarie e pertanto non è inclusa qui come opzione.

Immissione

nQubit

Numero di qubit da passare a ogni operazione.

attuale

Operazione da testare.

previsto

Operazione che definisce il comportamento previsto per l'operazione sottoposta a test.

Prodotto

True se le operazioni sono uguali, false in caso contrario.