1

假设我使用 ReflectionStart() 函数创建了一个 ReflectionOracle 对象,该函数反映了 |00...00> 轴。但是我如何通过这个预言机传递我的量子比特寄存器?由于这个 Oracle 是一个对象,我不能将它用作函数。是否有类似于 UseOracle(reflectionoracle,register) 的标准库工具?

4

1 回答 1

1

函数是 Q# 中的第一类对象,因此您只需调用存储调用结果的变量即可ReflectionStart。而且,因为它是一个有 的操作adjoint,你也可以在它上面调用 adjoint,例如:

operation Operation () : ()
{
    body
    {
        using (qubits = Qubit[5])
        {
            let oracle = ReflectionStart();
            oracle(0.5, qubits);
            (Adjoint oracle)(0.5, qubits);
        }
    }
}
于 2018-07-07T05:12:02.577 回答