完整名稱: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.