Operação ApplyControlledOnBitString
Nome totalmente qualificado: Std.Canon.ApplyControlledOnBitString
operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl
Resumo
Aplica oracle
em target
quando controlRegister
está no estado especificado por bits
.
Descrição
Aplica uma operação unitária oracle
no target
, controlada em um estado especificado por uma máscara de bits específica bits
.
O bit em bits[i]
corresponde ao qubit em controlRegister[i]
.
O padrão fornecido por bits
pode ser menor que controlRegister
, caso em que qubits de controle adicionais são ignorados (ou seja, não controlados em |0⟩ nem |1⟩).
Se bits
for maior que controlRegister
, um erro será gerado.
Entrada
Bits
A cadeia de caracteres de bits na qual controlar a operação unitária fornecida.
oráculo
A operação unitária a ser aplicada no destino.
alvo
O destino a ser passado para oracle
como entrada.
controlRegister
Um registro quântico que controla a aplicação de oracle
.
Exemplo
// 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.