ApplyControlledOnBitString-bewerking
Volledig gekwalificeerde naam: Std.Canon.ApplyControlledOnBitString
operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl
Samenvatting
Past oracle
toe op target
wanneer controlRegister
de status heeft die is opgegeven door bits
.
Beschrijving
Hiermee past u een eenheidsbewerking toe oracle
op de target
, die wordt beheerd op een toestand die is opgegeven door een bepaald bitmasker bits
.
De bit op bits[i]
komt overeen met qubit op controlRegister[i]
.
Het patroon dat door bits
wordt gegeven, kan korter zijn dan controlRegister
, in welk geval extra controle-qubits worden genegeerd (dat wil gezegd, noch beheerd op |0⟩ noch |1⟩).
Als bits
langer is dan controlRegister
, wordt er een fout gegenereerd.
Invoer
bits
De bittekenreeks waarop de opgegeven eenheidsbewerking moet worden bepaald.
orakel
De eenheidsbewerking die moet worden toegepast op het doel.
doel
Het doel dat moet worden doorgegeven aan oracle
als invoer.
controlRegister
Een kwantumregister waarmee de toepassing van oracle
wordt gecontroleerd.
Voorbeeld
// 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.