Partilhar via


Operação CheckOperationsAreEqual

Nome totalmente qualificado: Std.Diagnostics.CheckOperationsAreEqual

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

Resumo

Dadas duas operações, verifica se elas agem de forma idêntica para todos os estados de entrada.

Descrição

Esta verificação é implementada usando o isomorfismo Choi-Jamiołkowski para reduzir esta verificação a uma verificação em dois registos emaranhados. Assim, essa operação precisa apenas de uma única chamada para cada operação que está sendo testada, mas requer o dobro de qubits para ser alocada. Esta verificação pode ser usada para garantir, por exemplo, que uma versão otimizada de uma operação age de forma idêntica à sua implementação ingênua, ou que uma operação que atua em uma variedade de entradas não quânticas concorda com casos conhecidos.

Comentários

Esta operação requer que a operação modelando o comportamento esperado seja adjunto, para que o inverso possa ser executado apenas no registro de destino. Formalmente, pode-se especificar uma operação de transposição, o que relaxa esse requisito, mas a operação de transposição não é, em geral, fisicamente realizável para operações quânticas arbitrárias e, portanto, não é incluída aqui como uma opção.

Entrada

nQubits

Número de qubits a serem passados para cada operação.

real

Operação a ensaiar.

esperado

Operação que define o comportamento esperado para a operação em teste.

Realização

True se as operações forem iguais, false caso contrário.