Condividi tramite


Operazione ApplyControlOnBitString

Nome completo: Std.Canon.ApplyControlOnBitString

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

Sommario

Applica oracletarget quando controlRegister è nello stato specificato da bits.

Descrizione

Applica un'operazione unitaria oracle sul target, controllato su uno stato specificato da una maschera di bit specificata bits. Il bit in corrispondenza del bits[i] corrisponde al qubit in corrispondenza di controlRegister[i]. Il modello specificato da bits può essere più breve di controlRegister, nel qual caso i qubit di controllo aggiuntivi vengono ignorati ( ovvero non sono controllati in |0⟩ né |1⟩). Se bits è più lungo di controlRegister, viene generato un errore.

Immissione

Bit

Stringa di bit su cui controllare l'operazione unitaria specificata.

oracolo

Operazione unitaria da applicare alla destinazione.

bersaglio

Destinazione da passare a oracle come input.

controlRegister

Registro quantistico che controlla l'applicazione di oracle.

Esempio

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