如何通过Q#中的Oracle对象传递qubit寄存器

时间:2018-07-06 08:24:21

标签: quantum-computing q#

假设我使用ReflectionStart()函数制作了一个ReflectionOracle对象,该对象反映了| 00 ... 00>轴。但是,如何通过该预言机传递我的qubits寄存器?由于此Oracle是一个对象,因此无法将其用作函数。是否有一个类似于UseOracle(reflectionoracle,register)的标准库工具?

1 个答案:

答案 0 :(得分:0)

函数是Q#中的第一类对象,因此您只需在存储调用ReflectionStart的结果的变量上调用即可。此外,由于该操作具有adjoint,因此您还可以在其上调用adjoint,例如:

operation Operation () : ()
{
    body
    {
        using (qubits = Qubit[5])
        {
            let oracle = ReflectionStart();
            oracle(0.5, qubits);
            (Adjoint oracle)(0.5, qubits);
        }
    }
}