完全限定的名称:Std.Canon.ApplyControlledOnBitString
operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl
总结
当 oracle 处于 target指定的状态时,对 controlRegister 应用 bits。
描述
对 oracle应用一元运算 target,该操作由给定位掩码 bits指定的状态控制。
bits[i] 位对应于 controlRegister[i]处的量子比特。
bits 给出的模式可能比 controlRegister短,在这种情况下,将忽略其他控制量子比特(也就是说,既不受 |0 控制⟩也不控制 |1⟩)。
如果 bits 时间超过 controlRegister,则会引发错误。
输入
位
要控制给定单一运算的位字符串。
神谕
要应用于目标的单一操作。
目标
要作为输入传递给 oracle 的目标。
控制寄存器
控制 oracle应用的量子寄存器。
例
// 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.