完全限定的名称: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.