Compartilhar 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 as duas operações, verifica se elas agem de forma idêntica para todos os estados de entrada.

Descrição

Essa verificação é implementada usando o isomorfismo Choi-Jamiołkowski para reduzir essa verificação a uma verificação em dois registros emaranhados. Portanto, essa operação precisa de apenas uma única chamada para cada operação que está sendo testada, mas requer o dobro de qubits a serem alocados. Essa verificação pode ser usada para garantir, por exemplo, que uma versão otimizada de uma operação aja de forma idêntica à sua implementação ingênua ou que uma operação que atua em um intervalo de entradas não quânticas concorde com casos conhecidos.

Observações

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

Entrada

nQubits

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

real

Operação a ser testada.

Esperado

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

Saída

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