Compartir a través de


Operación ApplyControlOnBitString

Nombre completo: Std.Canon.ApplyControlOnBitString

operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl

Resumen

Aplica oracle en target cuando controlRegister está en el estado especificado por bits.

Descripción

Aplica una operación unitaria oracle en la target, controlada en un estado especificado por una máscara de bits determinada bits. El bit de bits[i] corresponde a cúbit en controlRegister[i]. El patrón proporcionado por bits puede ser más corto que controlRegister, en cuyo caso se omiten los cúbits de control adicionales (es decir, no se controla en |0⟩ ni |1⟩). Si bits es mayor que controlRegister, se genera un error.

Entrada

Bits

Cadena de bits en la que se va a controlar la operación unitaria especificada.

oráculo

Operación unitaria que se va a aplicar en el destino.

blanco

Destino que se va a pasar a oracle como entrada.

controlRegister

Registro cuántico que controla la aplicación de oracle.

Ejemplo

// When bits = [1,0,0] oracle is applied if and only if controlRegister
// is in the state |100⟩.
use t = Qubit();
use c = Qubit[3];
X(c[0]);
ApplyControlledOnBitString([true, false, false], X, c, t);
Message($"{M(t)}"); // Prints `One` since oracle `X` was applied.