Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.