Operación CheckOperationsAreEqual
Nombre completo: Std.Diagnostics.CheckOperationsAreEqual
operation CheckOperationsAreEqual(nQubits : Int, actual : (Qubit[] => Unit), expected : (Qubit[] => Unit is Adj)) : Bool
Resumen
Dadas dos operaciones, comprueba que actúan de forma idéntica para todos los estados de entrada.
Descripción
Esta comprobación se implementa mediante el isomorfismo Choi-Jamiołkowski para reducir esta comprobación a una comprobación de dos registros entrelazados. Por lo tanto, esta operación solo necesita una sola llamada a cada operación que se está probando, pero requiere que se asignen el doble de cúbits. Esta comprobación se puede usar para garantizar, por ejemplo, que una versión optimizada de una operación actúa de forma idéntica a su implementación ingenua, o que una operación que actúa en un intervalo de entradas no cuánticas está de acuerdo con los casos conocidos.
Observaciones
Esta operación requiere que la operación que modele el comportamiento esperado sea adyacente, de modo que el inverso se pueda realizar solo en el registro de destino. Formalmente, se puede especificar una operación de transposición, que relaja este requisito, pero la operación de transposición no suele ser realizable físicamente para las operaciones cuánticas arbitrarias y, por tanto, no se incluye aquí como opción.
Entrada
nQubits
Número de cúbits que se van a pasar a cada operación.
real
Operación que se va a probar.
Esperado
Operación que define el comportamiento esperado para la operación en prueba.
Salida
True si las operaciones son iguales, false en caso contrario.