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 oracle
target
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.