Partilhar via


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-se oracle em target quando controlRegister estiver no estado especificado por bits.

Descrição

Aplica uma operação unitária oracle no target, controlado em um estado especificado por uma determinada máscara de bit bits. O bit em bits[i] corresponde a qubit em controlRegister[i]. O padrão dado por bits pode ser menor do que controlRegister, caso em que qubits de controle adicionais são ignorados (ou seja, nem controlados em |0⟩ nem |1⟩). Se bits for maior que controlRegister, um erro será gerado.

Entrada

bits

A cadeia de caracteres de bits para controlar a operação unitária dada.

Oráculo

A operação unitária a ser aplicada no alvo.

público-alvo

O alvo a ser passado para oracle como entrada.

controlRegistrar

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.