Compartilhar 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 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.