ApplyControlledOnBitString 操作

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